プログラミングの問題 | Pythonでなんか作ってみる

プログラミングの問題

詳しくはこちらを参照として、以下のような問題。

数の並びがある。 最初の数は、続く数を何個集めるかを表す。 それに続いて、与えられた個数分の数をまとめたら、 次に出てくる数は、最初と同様、何個集めるかを表す数である。 このような並びの数を与えて、 指定されたように数をまとめた状態にするプログラムを作れ。


2chで見たような気がする。


def are(x):
q=list(x)
while len(q) > 0:
a=q.pop(0)
if len(q) < a:
raise StopIteration
yield tuple(q[:a])
del q[:a]

print list(are([1, 5, 3, 55, -45, 6, 2, 8, 7, 0, 1, 2]))
print list(are([1,2,3,4]))


もうちょっとすっきりしそうな気もするけど。