diff options
| author | Mike Vink <mike1994vink@gmail.com> | 2023-03-18 21:27:40 +0100 |
|---|---|---|
| committer | Mike Vink <mike1994vink@gmail.com> | 2023-03-18 21:27:40 +0100 |
| commit | 3a4f2b08233e6c7466b70a6807a158945184899a (patch) | |
| tree | 8ad0c5e5a056d487fa60ae2997bcde73e6b30f2d /shared/lists.rkt | |
| parent | 1250939951cf17c168c6728cc916c055fa2e20c4 (diff) | |
eight queen puzzle analysis
Diffstat (limited to 'shared/lists.rkt')
| -rw-r--r-- | shared/lists.rkt | 22 |
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))) + |
