与えられた位置と人数で次の生存者を見つけたい。
(define renumber
(lambda (position n)
(if (< position 3)
(+ position (- n 3))
(- position 3))))
(define survives?
(lambda (position n)
(if (< n 3)
#t
(if (= position 3)
#f
(survives? (renumber position n) (- n 1))))))
(define first-survivor-after
(lambda (position n)
(cond ((and (<= n 3)(<= position 3)) null)
((or (>= n 3)(>= position 3))(survives? position n)
(if = #f survives?)
(survives? (+ 1 position) n)
"Surviving position"))))
そこの最後のビットを、生き残った位置の正確な番号に置き換えるだけです。プログラムは生存者が見つかるまで実行されます。すべてが真と偽の観点からなので、答えとして位置を与える方法がわかりません。ありがとうございました!