;;; ===== Nachfolger ==================================== ; Die Nachfolgerfunktion. (define (Nachfolger zustand) (let loop ((index 8) (akku ())) (cond ((zero? index) akku) ((member index zustand) (loop (sub1 index) akku)) ((diagonal-besetzt? (cons index zustand)) (loop (sub1 index) akku)) (else (loop (sub1 index) (cons (cons index zustand) akku)))))) ;;; ===== diagonal-besetzt? ============================= ; Testet die Diagonalen. (define (diagonal-besetzt? zustand) (let loop ((liste (cdr zustand)) (rauf (add1 (car zustand))) (runter (sub1 (car zustand)))) (cond ((null? liste) #f) ((= rauf (car liste)) #t) ((= runter (car liste)) #t) (else (loop (cdr liste) (add1 rauf) (sub1 runter))))))