about summary refs log tree commit diff
path: root/day10.rkt
diff options
context:
space:
mode:
Diffstat (limited to 'day10.rkt')
-rw-r--r--day10.rkt31
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