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((
(EVENP (LAMBDA (N) (ZEROP (REMAINDER N 2))))

(COLLATZ (LAMBDA (X Y)(PROG (N CNT)
                  (SETQ N X)
                  (SETQ CNT Y)
            L     (COND ((EQUAL 1 N) (RETURN CNT))
                        ((EVENP N) (SETQ N (QUOTIENT N 2)))
                        (T (SETQ N (ADD1 (TIMES 3 N)))))
                  (SETQ CNT (ADD1 CNT))
                  (GO L))))

(COLLTAZ-MAX (LAMBDA (X) (PROG (N RES HN HS)
                      (SETQ N 1)
                      (SETQ HS 0)
                L     (COND ((GREATERP N X) 
                             (RETURN (LIST HN HS))))
                      (SETQ RES (COLLATZ N 0))
                      (COND ((GREATERP RES HS)
                             (PROG ()
                                (SETQ HS RES)
                                (SETQ HN N))))
                      (SETQ N (ADD1 N))
                      (GO L))))
))

PROG(()
     (RETURN (COLLTAZ-MAX (EXPT 2 20))))