2011年03月05日

what are you looking at?

Pythonchallenge 10 【what are you looking at?】
ネタバレ注意
















































































































今回はおそらく与えられた数列の法則を見つけて30番目の数列の数字の長さを求めればいいはずだと推測する





ちなみに与えられた数列 → 1, 11, 21, 1211, 111221...





この後に続く数列を求めなければならない




特別なライブラリとか使うわけでもなさそうなので絶対に自力で解こうと決めて考えてみた




やっぱりこういうの考えるのは楽しいなー





バイトで暇してる時にも考えたりもした





総計3時間くらい考えてみて、与えられた数列を満たす法則性を一つだけ見つけることができた




111221

[111] [22] [1] #同じ数字が続くものを一つのグループとして固める

31がある。 がある。 がある。

312211




この法則性に乗っ取ってプログラムを書いたら確かに正解だった。うれしい。



#1,21,1211,111221....
def number(a,check):
if len(a) == 1:
a.insert(0,a[0])
print len(a)
number(a,check)
else:
a.append(0)
b=[]
count=1
for x in xrange(len(a)-1):
if a[x] == a[x+1]:
count+=1
else:
b.extend([count,a[x]])
count=1

check+=1
print len(b)
if check < 30 :
number(b,check)

a=[1]
check = 1
print len(a)
number(a,check)


私的メモ

a.insert(x,y)
リストaのx番目のインデックスの位置にyを追加する。

a.append(x)
リストaの末尾にxを追加する。

a.extend([x,y,...]) 同様に a+=[x,y,...]
リストaの末尾に複数要素である[x,y,...]を追加する。

len(a) returns x
リストまたはタプルaの要素数を整数xで返す。






この記事へのコメント

name:

mail:

HP:

comment:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。