24 lines
471 B
Plaintext
24 lines
471 B
Plaintext
#general solution
|
|
(de jo (N K)
|
|
(if (=1 N)
|
|
1
|
|
(inc
|
|
(%
|
|
(+ (dec K) (jo (dec N) K))
|
|
N ) ) ) )
|
|
|
|
#special case when K is 2; much faster than general version.
|
|
(de jo2(N)
|
|
(let P 1
|
|
(while (<= P N)
|
|
(setq P (* 2 P))
|
|
(+ (- (* 2 N) P) 1) ) ) )
|
|
|
|
# find the survivor using an optimal solution
|
|
(de survivor (N K)
|
|
(if (=0 (% N 2))
|
|
(jo2 N)
|
|
(jo N K) ) )
|
|
(print (survivor 5 2))
|
|
(print (survivor 41 3))
|