simpler
This commit is contained in:
@@ -36,15 +36,14 @@
|
|||||||
; returns a new list of coordinates
|
; returns a new list of coordinates
|
||||||
(define (fold coords axis-position)
|
(define (fold coords axis-position)
|
||||||
(let-values [((axis position) (apply values axis-position))]
|
(let-values [((axis position) (apply values axis-position))]
|
||||||
(let [(position*2 (* position 2))]
|
(let* [(position*2 (* position 2))
|
||||||
(define (mirror-x x y) (list (if (> x position) (- position*2 x) x) y))
|
(mirror (if (char=? axis #\x)
|
||||||
(define (mirror-y x y) (list x (if (> y position) (- position*2 y) y)))
|
(lambda (x y) (list (if (> x position) (- position*2 x) x) y))
|
||||||
(let [(mirror (if (char=? axis #\x) mirror-x mirror-y))]
|
(lambda (x y) (list x (if (> y position) (- position*2 y) y)))))
|
||||||
(define (folder output coord)
|
(transform (lambda (output coord)
|
||||||
(let* [(mirrored (apply mirror coord))]
|
(let [(mirrored (apply mirror coord))]
|
||||||
; add mirrored coord only if it wasn't in output already
|
(if (member mirrored output) output (cons mirrored output)))))]
|
||||||
(if (member mirrored output) output (cons mirrored output))))
|
(fold-left transform '() coords))))
|
||||||
(fold-left folder '() coords)))))
|
|
||||||
|
|
||||||
(call-with-input-file
|
(call-with-input-file
|
||||||
"input"
|
"input"
|
||||||
|
|||||||
Reference in New Issue
Block a user