私は面白いことに、自分のスキルに取り組むためにコーディングのチャレンジをしています。昨年12月からのAdvent of Codeの挑戦を覚えている人もいます。私は問題の解決策としてこのコードを持っていますが、それはうまく機能しませんが、無駄な速度です。このPythonコードを最適化するにはどうすればよいですか?
inp = "1113122113"
def iterate(num):
pos = 0
new = ""
while pos < len(num):
counter = 0
d = num[pos]
for i in range(pos, len(num)):
if num[i] == d:
counter += 1
else:
break
new+=str(counter)
new+=str(d)
pos += counter
print len(new)
return new
for i in range (50):
inp = iterate(inp)
過去の反復回数35回ほど、反復ごとに数分かかることがあります。オブジェクトはルック・アンド・アソシエーションのシーケンスを生成することです - したがって、1は11に、次に21,1211,111221,3112211などになります。私は50回目の反復の後に文字列の長さを見つける必要がありますが、40回の反復後には360154文字になり、コードは妥当な時間で長い文字列を処理するのに十分最適化されていません。誰かが私にいくつかのポインタを与えることができますか?
質問[codereview.se]のためのより良いフィット感です。 –
_「昨年12月からのAdvent of Codeの挑戦を覚えている人もいるかもしれません」 - 残念ですが、私はそうではありません。ところで、この質問は、[Code Review](http://codereview.stackexchange.com/)のほうが適しています。 –
昨年は挑戦的なサイトです。特に重要なことではありません。それはまだ周りですので、私はもう少しそれに取り組むことにしました。あなたはadventofcode.comで見つけることができます。これは10日目の挑戦です。 –