나는 주어진 위치와 사람의 수를 다음 생존자를 찾고 싶다.요세푸스 퍼즐에서 주어진 위치에서 "첫 번째 생존자"를 찾는 방법은 무엇입니까?
(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"))))
마지막 비트를 생존 위치의 정확한 숫자로 바꾸면됩니다. 이 프로그램은 생존자를 찾을 때까지 실행됩니다. 이제는 모든 것이 진위와 거짓의 관점에서이기 때문에 답을 제시하는 방법을 모르겠습니다. 고맙습니다!
알고리즘 및 구문이 올바르지 않습니다. 예를 들어,이 조건은 잘못되었습니다 :'(if = #f survives?)'. 그것은 Scheme에'if' 표현식을 쓰는 방법과 다르지 않습니다. (아마도'(if? equal? (n)) #f) ...)')를 의미했을 것입니다. 기본을 올바르게 시작하여 시작하십시오. –