aboutsummaryrefslogtreecommitdiff
path: root/2022
diff options
context:
space:
mode:
authorHunky Jimpjorps <thechairman@thechairman.info>2022-12-10 00:55:25 -0500
committerHunky Jimpjorps <thechairman@thechairman.info>2022-12-10 00:55:25 -0500
commitdc8f0a4b285f93adbd6ddcb7103ff17b03316f48 (patch)
treef1dd46b39de94f67f6b70b6792bad2da22c92281 /2022
parentb625e4b1d4ef4f6e912b9edd062f579909faa3b1 (diff)
downloadgleam_aoc-dc8f0a4b285f93adbd6ddcb7103ff17b03316f48.tar.gz
gleam_aoc-dc8f0a4b285f93adbd6ddcb7103ff17b03316f48.zip
day 10 complete
Diffstat (limited to '2022')
-rw-r--r--2022/day-10/day-10.rkt43
1 files changed, 43 insertions, 0 deletions
diff --git a/2022/day-10/day-10.rkt b/2022/day-10/day-10.rkt
new file mode 100644
index 0000000..70c80d3
--- /dev/null
+++ b/2022/day-10/day-10.rkt
@@ -0,0 +1,43 @@
+#lang racket
+
+(require advent-of-code
+ threading
+ fancy-app
+ (only-in algorithms chunks-of))
+
+(define/match (process-instruction _)
+ [((list "noop")) (list 'noop)]
+ [((list "addx" (app string->number val))) (list 'noop (cons 'addx val))])
+
+(define instructions
+ (~> (fetch-aoc-input (find-session) 2022 10)
+ (string-split "\n")
+ (map (λ~> string-split process-instruction) _)
+ (apply append _)))
+
+;; part 1
+(define interesting-times (inclusive-range 20 220 40))
+
+(define/match (evaluate-instruction _op acc)
+ [('noop _) acc]
+ [((cons 'addx n) _) (+ acc n)])
+
+(for/fold ([acc 1] [interesting-strengths 0] #:result interesting-strengths)
+ ([inst (in-list instructions)] [i (in-naturals 1)])
+ (define new-interesting
+ (if (member i interesting-times) (+ interesting-strengths (* i acc)) interesting-strengths))
+ (values (evaluate-instruction inst acc) new-interesting))
+
+;; part 2
+(for/fold ([acc 1] [pixels '()] #:result (~> pixels reverse (chunks-of 40) (map (apply string _) _)))
+ ([inst (in-list instructions)] [i (in-naturals)])
+ (define new-pixel (if (member (modulo i 40) (list (sub1 acc) acc (add1 acc))) #\█ #\space))
+ (values (evaluate-instruction inst acc) (cons new-pixel pixels)))
+
+; for my data set,
+; '("███ ████ ████ █ █ ████ ████ █ █ ██ "
+; "█ █ █ █ █ █ █ █ █ █ █ █ "
+; "█ █ █ ███ ██ ███ ███ ████ █ █ "
+; "███ █ █ █ █ █ █ █ █ ████ "
+; "█ █ █ █ █ █ █ █ █ █ █ █ "
+; "█ █ ████ ████ █ █ ████ █ █ █ █ █ ")