diff options
Diffstat (limited to 'day10.rkt')
-rw-r--r-- | day10.rkt | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/day10.rkt b/day10.rkt new file mode 100644 index 0000000..846a8cc --- /dev/null +++ b/day10.rkt @@ -0,0 +1,31 @@ +#lang racket + +(define (scan1 f i l) + (if (null? l) + l + (let ((v (f i (car l)))) + (cons v (scan1 f v (cdr l)))))) + +(define xs + (cons 1 (scan1 + 1 + (append-map (lambda (insn) + (match (string-split insn) + [(list "noop") (list 0)] + [(list "addx" sn) (list 0 (string->number sn))])) + (file->lines "day10"))))) + +(for/sum ([i (in-inclusive-range 20 220 40)]) + (* i (list-ref xs (- i 1)))) +; 14160 + +(let loop ([xs (take xs (* 6 40))]) + (if (null? xs) + (void) + (let-values ([(line rest) (split-at xs 40)]) + (displayln (list->string + (map (lambda (a b) + (if (<= (abs (- a b)) 1) #\@ #\space)) + line + (range 0 40)))) + (loop rest)))) +; RJERPEFC |