diff options
Diffstat (limited to '2022')
-rw-r--r-- | 2022/day-22/day-22.rkt | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/2022/day-22/day-22.rkt b/2022/day-22/day-22.rkt new file mode 100644 index 0000000..bcce5f8 --- /dev/null +++ b/2022/day-22/day-22.rkt @@ -0,0 +1,35 @@ +#lang racket + +(require advent-of-code + threading) + +(struct posn (x y) #:transparent) + +(match-define (list raw-map raw-instructions) + (string-split (fetch-aoc-input (find-session) 2022 22 #:cache #true) "\n\n")) + +(define board-map + (for*/hash ([(row y) (in-indexed (string-split raw-map "\n"))] + [(col x) (in-indexed row)] + #:unless (equal? col #\space)) + (define tile + (match col + [#\. 'open] + [#\# 'wall])) + (values (posn x y) tile))) + +(define instructions + (~>> raw-instructions + (regexp-match* #px"(\\d+)|R|L") + (map (match-lambda + [(? string->number n) (string->number n)] + ["R" 'clockwise] + ["L" 'counterclockwise])))) + +(define start-tile + (~>> board-map + hash-keys + (filter (match-lambda + [(posn _ 0) #true] + [_ #false])) + (argmin posn-x)))
\ No newline at end of file |