summaryrefslogtreecommitdiff
path: root/shared
diff options
context:
space:
mode:
authorMike Vink <mike1994vink@gmail.com>2023-03-18 21:27:40 +0100
committerMike Vink <mike1994vink@gmail.com>2023-03-18 21:27:40 +0100
commit3a4f2b08233e6c7466b70a6807a158945184899a (patch)
tree8ad0c5e5a056d487fa60ae2997bcde73e6b30f2d /shared
parent1250939951cf17c168c6728cc916c055fa2e20c4 (diff)
eight queen puzzle analysis
Diffstat (limited to 'shared')
-rw-r--r--shared/lists.rkt22
1 files changed, 21 insertions, 1 deletions
diff --git a/shared/lists.rkt b/shared/lists.rkt
index 4f2184d..b721623 100644
--- a/shared/lists.rkt
+++ b/shared/lists.rkt
@@ -2,7 +2,9 @@
(provide accumulate
accumulate-n
fold-right
- fold-left)
+ fold-left
+ flatmap
+ enumerate-interval)
(define (append list1 list2)
(if (null? list1)
list2
@@ -48,3 +50,21 @@
(iter (op result (car rest))
(cdr rest))))
(iter initial sequence))
+
+(define (flatmap proc seq)
+ (accumulate append '() (map proc seq)))
+
+(define (enumerate-interval j k)
+ (define (iter i interval)
+ (if (< i j)
+ interval
+ (iter (- i 1) (cons i interval))))
+ (iter k '()))
+
+(define (unique-pairs n)
+ (flatmap
+ (lambda (i)
+ (map (lambda (j) (list j i))
+ (enumerate-interval 1 (- i 1))))
+ (enumerate-interval 1 n)))
+