Denominator

《Python Cookbook》读书笔记

廉价感情. 提交于 2021-01-02 16:14:36
2.3 Matching Strings Using Shell Wildcard Patterns from fmatch import fnmatch, fnmatchcase #coding=utf-8 ''' Matching Strings Using Shell Wildcard Patterns: from fmatch import fnmatch, fnmatchcase ''' from fnmatch import fnmatch, fnmatchcase a = fnmatch('too.txt', '*.txt') b = fnmatch('foo.txt', '?oo.txt') c = fnmatch('Dat45.csv', 'Dat[0-9]*') print(a) print(b) print(c) names = ['Dat1.csv', 'Dat2.csv', 'config.ini', 'foo.py'] # 选以Dat开头的csv文件 d = [name for name in names if fnmatch(name, 'Dat*.csv')] print(d) # fnmatch是否区分大小写 与 本机操作系统一致 e = fnmatch('foo.txt', '*.TXT') print(e) f = fnmatchcase(

leetcode math类型题目解题总结

天大地大妈咪最大 提交于 2020-12-12 10:05:15
2. Add Two Numbers https://leetcode.com/problems/add-two-numbers/description/ class Solution { public : ListNode * addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode result( - 1 ); ListNode * current = & result; int add = 0 ; while (l1!=NULL || l2!= NULL){ int val1 = 0 ; int val2 = 0 ; if (l1!= NULL){ val1 = l1-> val; l1 = l1-> next; } if (l2!= NULL){ val2 = l2-> val; l2 = l2-> next; } current ->next = new ListNode((val1+val2+add)% 10 ); add = (val1+val2+add)/ 10 ; current = current-> next; } if (add == 1 ) current ->next = new ListNode( 1 ); return result.next; } }; View Code 7. Reverse

Effective C++读书笔记

狂风中的少年 提交于 2020-11-13 11:44:27
让自己习惯C++ 条款01:将C++视为一个语言联邦 条款02:尽量以const、enum、inline替换#define (宁可以编译器替换预处理器) #define在预处理中处理,宏不会被记号表(symbol table)记录 关于const 常量指针的定义需要将指针声明为const,因为通常常量指针在头文件中可以被其他源文件使用,const两次 const char* const authorname = “Scott Meyers” class专属常量,#define并不重视作用域,也不具有封装性 为了将常量作用域(scope)限制于class内,必须让他称为类的成员,且为了让他只有一份,必须让他成为static成员: class CostEstimate{ private: static const double FudgeFactor; //类内声明 } const double CostEstimate::FudgeFactor == 1.35; //类外实现 关于enum hack: class GamePlayer{ private: static const int NumTurn = 5; int scores[NumTurm]; } 当编译器不支持static const int NumTurm = 5;时,使用enum { NumTurm = 5};替换

python玩转信号处理与机器学习入门

不羁的心 提交于 2020-08-15 06:34:54
python玩转信号处理与机器学习入门 作者:王镇 面对毫无规律的随机信号,看着杂乱无章的振动波形,你是否也像曾经的我一样一头雾水,不知从何处下手。莫慌,接下来小编就带你入门怎样用python处理这些看似毫无卵用实则蕴藏巨大信息的随机信号。我们日常生活中所见的心电图,声波图都是信号在时域上的一种表现,但它们无法呈现出信号在频域上的信息。因此,本文将主要介绍信号从时域到频域上的一些变换,常见的有FFT(快速傅里叶变换),PSD(功率谱密度),auto-correlation(自相关分析)。最后小编将带你完成一个实例,通过手机采集的振动信号识别人体的动作。 一、介绍 本部分将介绍FFT,PSD,auto-correlation的基本概念以及python代码实现。 1.1 混合信号 图1 信号在时域上的表现 图2 信号在频域上的表现 上图展示了混合信号在时域上的表现形式,图(a)为一频率为1Hz,振幅为2的正弦波信号,图(b)为一频率为5Hz,振幅为1的正弦波信号,图(c)为(a)、(b)两信号的叠加结果。 1.2 FFT FFT英文全称Fast Fourier Transformation,即快速傅里叶变换,它可以轻松地分析出混合信号中的各频率组成成分。对上述中的混合信号做FFT变换,结果如图2(a),可以明显地看到混合信号包含频率分别为1Hz和5Hz的成分。FFT变换的代码如下:

Wiener’s attack python

[亡魂溺海] 提交于 2020-08-10 13:28:35
题目如下: 在不分解n的前提下,求d。 给定: e = 14058695417015334071588010346586749790539913287499707802938898719199384604316115908373997739604466972535533733290829894940306314501336291780396644520926473 n = 33608051123287760315508423639768587307044110783252538766412788814888567164438282747809126528707329215122915093543085008547092423658991866313471837522758159 说明过程。 这种e很大的,d可能就会比较小,可能会满足Wiener’s attack的条件,介绍如下: 英文: 中文材料参考: 这里有两个概念,连分数和渐进分数,详情自行谷歌百度 连分数概念图: 渐进分数概念: 我的理解: 上面的等式应该比较容易理解,就是等式右边的分母很大,作为整体很小,意味着等式左边的减数和被减数的差距很小很小,并且可以通过被减数的连分数求解不断逼近它本身的一个渐进分数,因此可能会存在某个渐进分数可以满足减数的要求; 当然按照求解的渐进分数的分子分母分别对应减数的分子分母

C++模板沉思录(上)

余生长醉 提交于 2020-08-04 11:08:18
**花下猫语:**在我们读者群里,最近出现了比较多关于 C++ 的讨论,还兴起了一股学习 C++ 的风气。樱雨楼小姐姐对 C++ 的模板深有研究,系统地梳理成了一篇近 4 万字的文章!本文是上篇,分享给大家~ 樱雨楼 | 原创作者 豌豆花下猫 | 编辑 0 论抽象——前言 故事要从一个看起来非常简单的功能开始: 请计算两个数的和。 如果你对Python很熟悉,你一定会觉得:“哇!这太简单了!”,然后写出以下代码: def Plus(lhs, rhs): return lhs + rhs 那么,C语言又如何呢?你需要面对这样的问题: /* 这里写什么?*/ Plus(/* 这里写什么?*/ lhs, /* 这里写什么?*/ rhs) { return lhs + rhs; } 也许你很快就能想到以下解法中的一些或全部: 硬编码为某个特定类型: int Plus(int lhs, int rhs) { return lhs + rhs; } 显然,这不是一个好的方案。因为这样的Plus函数接口强行的要求两个实参以及返回值的类型都必须是int,或是能够发生隐式类型转换到int的类型。此时,如果实参并不是int类型,其结果往往就是错误的。请看以下示例: int main() { printf("%d\n", Plus(1, 2)); // 3,正确 printf("%d\n", Plus

Effective C++ 读书笔记

匆匆过客 提交于 2020-05-08 10:18:52
---恢复内容开始---   世界上有两种C++程序员,一种是读过Efective C++ 的,一种是没有读过的。 条款01:视 C++ 为一个语言联邦 C。 Object-Oriented C++。 Template C++。 STL。 条款02:尽量以 const, enum, inline 替换 #define 1. class 专属常量:为了将常量的作用域限制于 class 内,必须让它成为 class 的一个成员(member);而为确保此常量至多只有一份实体,你必须让它成为一个 static 成员: 1 class GamePlayer { 2 private : 3 static const int NumTurns = 5 ; // 常量声明式 4 int scores[NumTurns]; // 使用该常量 5 ... 6 }; 现在是 NumTurns 的声明式而非定义式。通常 C++ 要求你对所使用的任何东西提供定义式,但如果是 class 专属常量又是 static 且为整数类型(integral type, 例如 ints, chars, bools),则需特殊处理。只要不取它们的地址,便可以声明并使用它们而无须提供定义式。但如果要取其地址(或编译器要求),就必须另外提供定义式如下: const int GamePlayer::NumTurns; //

自动生成四则运算题目(C语言)

ε祈祈猫儿з 提交于 2020-04-15 11:01:15
【推荐阅读】微服务还能火多久?>>> Github项目地址:https://github.com/huihuigo/expgenerator 合作者:马文辉(3118005015)、卢力衔(3118005013) 项目简介 1题目:实现一个自动生成小学四则运算题目的命令行程序(也可以用图像界面,具有相似功能)。 2说明: 自然数:0, 1, 2, …。 真分数:1/2, 1/3, 2/3, 1/4, 1’1/2, …。 运算符:+, −, ×, ÷。 括号:(, )。 等号:=。 分隔符:空格(用于四则运算符和等号前后)。 算术表达式: e = n | e1 + e2 | e1 − e2 | e1 × e2 | e1 ÷ e2 | (e), 其中e, e1和e2为表达式,n为自然数或真分数。 四则运算题目:e = ,其中e为算术表达式。 3需求: (完成) 使用 -n 参数控制生成题目的个数,例如 Myapp.exe -n 10 将生成10个题目。 (完成) 使用 -r 参数控制题目中数值(自然数、真分数和真分数分母)的范围,例如 Myapp.exe -r 10 将生成10以内(不包括10)的四则运算题目。 该参数可以设置为1或其他自然数。该参数必须给定,否则程序报错并给出帮助信息。 (完成) 生成的题目中计算过程不能产生负数,也就是说算术表达式中如果存在形如e1− e2的子表达式

最小二乘法C#实现,简单代码

旧城冷巷雨未停 提交于 2020-04-06 18:38:03
线性函数模型 典型的一类函数模型是线性函数模型。最简单的线性式是,写成矩阵式,为 直接给出该式的参数解: 和 其中,为t值的算术平均值。也可解得如下形式: b1为斜率,b0为截距,可以先根据x,y数组,以及上面的公式先计算出斜率,再计算截距。 因为原来参考代码中,返回为一个数组,根据与原来代码的兼容性,调用LinearResult(double[],double[])方法返回是一个数组。result[0]为斜率,result[1]为截距。 class Linear { public double[] LinearResult(double[] arrayX, double[] arrayY) { double[] result = { 0, 0 }; if (arrayX.Length == arrayY.Length) { double averX = arrayX.Average(); double averY = arrayY.Average(); result[0] = Scale(averX, averY, arrayX, arrayY); result[1] = Offset(result[0],averX,averY); } return result; } private double Scale(double averX, double averY, double

如何将浮点数转换为分数/有理数

余生长醉 提交于 2020-02-27 05:04:02
问题的出处是某医院公布的一组数据,有 50 名患者,临床试验某种药剂后,52.4% 不咳嗽了,69.6% 乏力症状消失。问咳嗽的病人有几个,乏力的病人有几个,因为显然并不是所有病人都有这两种症状。 一开始因为分母不大,我使用穷举的方法求解,代码如下: In [4]: for i in range(1, 51): ...: for j in range(1, 51): ...: if '%.3f' % (i / j) == '0.696': ...: print(i, j) 能够得到正确结果。但后来想这算法显然不行啊,有没有更好的计算方法呢? 首先想的是能不能从小数点后面的数字倒推分母,或者缩小分子分母的可能取值区间,因为每个素数分母能够产生的小数样式是有限的,即 n-1 个。但因为代数水平太低,不知道该怎么计算,最后可能还是会变成穷举或者查表法,就放弃了。 后来 google 了一下发现有个包叫 fractions,可以实现浮点数到分数的转换功能,在我实验的时候恰好看到了一组结果: In [11]: Fraction(0.6959).limit_denominator() Out[11]: Fraction(6959, 10000) 做这个实验是因为原本 69.6% 就是个约数,用这个包是算不出 50 以下的结果的,我就想试试自己添几位看能不能试出结果,没想到一下子试出一个素数