Comment detail

コラッツ・角谷の問題 (Nested Flatten)
まんまの実装。MLtonでネイティブコンパイル、PenD 3.0GHz x86_64 Linuxで6.54s。

time ./collatz
f(837799) = 524
./collatz  6.54s user 0.00s system 99% cpu 6.550 total
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
open Int64

fun collatz n =
  let
    fun f (1, i) = i
      | f (n', i) =
      if n' mod 2 = 0 then f (n' div 2, i + 1)
      else f (n' * 3 + 1, i + 1)

    fun loop 0 max = max
      | loop n max =
      let
        val r = if n mod 2 = 0 then f (n div 2, 1) else f (n * 3 + 1, 1)
      in
        loop (n - 1) (if #2 max > r then max else (n, r))
      end
  in
    loop n (n, 0)
  end

val (n, step) = (collatz o fromLarge o IntInf.pow) (2, 20)
val _ = print ("f(" ^ toString n ^ ") = " ^ toString step ^ "\n")

Index

Feed

Other

Link

Pathtraq

loading...