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