blob: 3adc07a4283c36ed86548c83e1907e1962169b24 (
plain)
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
|
(define (chainlen n)
(define (next m)
(if (even? m)
(/ m 2)
(+ (* m 3) 1)))
(define (count-iter cur cnt)
(if (= cur 1)
cnt
(count-iter (next cur) (+ cnt 1))))
(count-iter n 1))
(define (find-max-len-start limit)
(define (try cur longest ans)
(cond ((> cur limit) ans)
((= (remainder (- cur 4) 6) 0)
;it's even and is 3n+1=>it's 6n+4
(try (+ cur 1) longest ans))
(else
(let ((len (chainlen cur))
(curn (+ cur 1)))
(if (> len longest)
(try curn len cur)
(try curn longest ans))))))
(let ((lowest (ceiling (/ limit 2))))
(try lowest 1 lowest)))
(display (find-max-len-start 999999))
(newline)
|