首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

python能不能分析一行数字的周期性,该如何解决

2012-05-04 
python能不能分析一行数字的周期性如题比如这行数字是0 1 4 6 0 1 4 6 0 1 4 ……0 1 4 6一个循环在我不知道

python能不能分析一行数字的周期性
如题
比如这行数字是0 1 4 6 0 1 4 6 0 1 4 ……

0 1 4 6一个循环

在我不知道这行内容及周期性的情况下,能否用python分析出来?
能的话如何做?

[解决办法]
python能帮你一点,例如python中可以用dictionry记录/查询每个数出现的位置。更重要的是你的数列的特性,这就要靠你自己了,比如:

循环是否一定从第一个数开始,还是会有更复杂的情况:0 1 2 3 1 2 3 1 2 3?

是否一个数出现重复就一定预示着一个循环,还是会有更复杂的情况:0 1 0 0 1 0 1 0 0 1?

等等。
[解决办法]
如果是纯循环,就做一个标记从0开始,len=1
每次截取2*len的长度(因为循环小数可以写到某个位置停止加省略号,长度可能不一定正好是循环节的倍数)
比较前后相等就行了

如果是混循环,就做2个标记,一个a记录开始,一个b记录结束,原理跟上面一样,每次截取到a+2*b的长度就行了
[解决办法]

Python code
def SPP(a):    alen = len(a);    mc = None;    for i in range(1, alen//2+1):        for j in range(0, alen-i):            if(a[j] != a[j+i]):                break;        else:            mc = i;            break;    return mc;myas = [];myas.append("01460146");myas.append("0146014601");myas.append("0000");myas.append("1212");myas.append("01460146013");myas.append("12312");myas.append("12122");for a in myas:    mc = SPP(a);    if(mc == None):        print(a, "is not a periodic sequence");    else:        print("The SPP is:", a[:mc]); 

热点排行