Comment detail

コラッツ・角谷の問題 (Nested Flatten)

再帰処理を避けるように作ったのですが、 30分しても処理が終わりません・・・

マシンの貧弱性のためか、 言語の問題か、 はたまたコードが原因か。

2*17ぐらいなら何とか1分程度で処理できるんですけどね。

■スペック■ CPU:Celeron 1.30GHz RAM:512MB OS:Windows XP SP2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def start  = new Date()
def f( double n ){
    int count = 0

    while( n != 1 ){
        if( n % 2 == 0){
            n = n/2
        } else {
            n = 3*n + 1
        }
        count++
    }
    
    count 
}

def max = [n:0, fn:0]

def last = 2**17
for( n in 1..last){
    def fn = f(n)
    if( max.fn < fn ){
        max.n = n
        max.fn = fn
        println "最大は f(${max.n}) = ${max.fn}"
    }
}

def end = new Date()

println "時間は ${end.time - start.time}"

Index

Feed

Other

Link

Pathtraq

loading...