キミならどう書く 2.0 - ROUND 2に食指が動かない件。
def collatz(x):
if x % 2:
return x * 3 + 1
else:
return x / 2
def numStep(x):
count = 0
while True:
x = collatz(x)
count += 1
if x == 1:
break
return count
def bruteForce(x):
return max(map(numStep, range(2, x + 1)))
from time import clock
startTime = clock()
print bruteForce(100) #-> 118
print clock() - startTime #-> 0.016sec
startTime = clock()
print bruteForce(10000) #-> 261
print clock() - startTime #-> 1.9sec
えー。とりあえずプロトタイプを作ってみたのですけど、特に高速化したいという欲求が起きないです。 かといってこんなコードじゃエントリーする気もわきません。
任意の正数 N = 2 ** n - 1 について とりあえず g(k) = h(N) たる k は必ず [x ^ N for x in range(2 ** (n - 1))] の中に存在する。 でもこれじゃぁ大してクールでもなんでもないしなぁ。うーん、萌えない。 PythonでweaveしてみるとかもぜんぜんLLじゃないしなぁ…。Brainf*ckで作るのは二番煎じだし…。
__ とりあえず高速化には萌えなかったので短いコードにチャレンジしてみたら75文字で書けました。でトラックバックをしたのですけど、また2回トラックバックしてしまった…orz