from itertoolsmodule import groupby def morris(n): result = [] l = [list(g) for k, g in groupby(str(n))] for i in l: result.append(str(len(i))) result.append(i[0]) return ''.join(result) fr = '1' for i in range(30): fr = morris(fr) print len(fr)
這題一開始給的數列很有趣:
a = [1, 11, 21, 1211, 111221, ....
我一開始先試了幾個跟巴斯卡有關的變形,但都沒什麼結果
後來我把每個位數加起來的值變成這樣 >>> [1, 2, 3, 5, 8]
看到這我很高興,因為這不就是鼎鼎有名的費氏數列嗎(雖然開頭少個"1")
然後他的位數是這樣的 >>> [1, 2, 2, 4, 6]
扣掉第一個1不看,也是費氏的變形,這題就是問第30項有幾位數
正當我開心的把第30項的位數打進去卻發現不對
真是信心的一大打擊,後來只好google一下這個數列
發現這種數列好像叫做"Morris"數列
其實還蠻有趣的
。
1 comments:
好像真的蠻有趣的
Post a Comment