-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexercise4.44.scm
More file actions
40 lines (37 loc) · 967 Bytes
/
exercise4.44.scm
File metadata and controls
40 lines (37 loc) · 967 Bytes
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
29
30
31
32
33
34
35
36
37
38
39
40
(define (safe l)
(define (loop curr rest)
(if (null? rest)
#t
(let ((cmp (car rest)))
)))
(define (safe positions)
(let ((len (length positions)))
(define (loop curr rest curr-pos)
(if (null? rest)
#t
(let ((test (car rest))
(test-pos (length rest)))
(if (= curr test)
#f
(and (not (= (abs (- curr test))
(abs (- curr-pos test-pos))))
(loop curr (cdr rest) curr-pos))))))
(loop (car positons) (cdr positions) len)))
(define (queens)
(let ((amb8 (amb 1 2 3 4 5 6 7 8)))
(let ((p1 amb8)
(p2 amb8)
(p3 amb8)
(p4 amb8)
(p5 amb8)
(p6 amb8)
(p7 amb8)
(p8 amb8))
(require (safe (p2 p1)))
(require (safe (p3 p2 p1)))
(require (safe (p4 p3 p2 p1)))
(require (safe (p5 p4 p3 p2 p1)))
(require (safe (p6 p5 p4 p3 p2 p1)))
(require (safe (p7 p6 p5 p4 p3 p2 p1)))
(require (safe (p8 p7 p6 p5 p4 p3 p2 p1)))
(list p1 p2 p3 p4 p5 p6 p7 p8))))