2006-07-11
Io で Collatz 予想
お題は「Collatz予想」についての問題です.
関数型言語でも,そうでない言語でも,ぜひ回答をお寄せください!
例によって、Io(iolanguage) で書くとこんな感じに。
collatz.io
result := 0
max_step := 0
collatz := Object clone do(
step := 0
f := method(n,
step = step + 1
if (n == 1, 1,
if (n % 2 == 0, f(n / 2), f(3 * n + 1))
)
)
calc := method(n,
step = 0
f(n)
)
)
for(i, 1, 100,
collatz calc(i)
if (max_step < collatz step,
max_step = collatz step
result = i
)
)
write("result = ", result, "\n")
write("max_step = ", max_step, "\n")
実行結果
$ io collatz.txt
result = 97
max_step = 119
collatz オブジェクトは、calc で計算開始、呼び出し回数は step にカウントされていきますー
トラックバック - http://d.hatena.ne.jp/SiroKuro/20060711/1152639150
