diff options
Diffstat (limited to '2022/day-17')
-rw-r--r-- | 2022/day-17/day-17.rkt | 53 | ||||
-rw-r--r-- | 2022/day-17/rock-shapes | 17 |
2 files changed, 0 insertions, 70 deletions
diff --git a/2022/day-17/day-17.rkt b/2022/day-17/day-17.rkt deleted file mode 100644 index 28e8763..0000000 --- a/2022/day-17/day-17.rkt +++ /dev/null @@ -1,53 +0,0 @@ -#lang racket - -(require advent-of-code - threading - fancy-app - data/collection) - -(define (relative-rock-coordinates rock) - (for*/hash ([(row y) (in-indexed (reverse rock))] [(_col x) (in-indexed row)]) - (values (cons x y) #true))) - -(define rock-shapes - (~> (open-input-file "./2022/day-17/rock-shapes") - port->string - (string-split "\n\n") - (map (λ~> (string-split _ "\n") (map string->list _) relative-rock-coordinates) _))) - -(define gusts - (~> (fetch-aoc-input (find-session) 2022 17 #:cache #true) - string-trim - string->list - (map (match-lambda - [#\> 1] - [#\< -1]) - _))) - -(define (place-new-rock rock elevation) - (for/hash ([(posn _) (in-hash rock)]) - (match-define (cons x y) posn) - (values (cons (+ x 3) (+ y elevation 4)) #true))) - -(define (gust-move rock wind cave) - (define moved-rock - (for/hash ([(posn _) (in-hash rock)]) - (match-define (cons x y) posn) - (define posn* (cons (+ x wind) y)) - (if (hash-has-key? cave posn) (values 'collision #t) (values posn* #t)))) - (if (hash-has-key? moved-rock 'collision) rock moved-rock)) - -(for/fold ([cave (hash)] - [falling-rock #f] - [top-of-rocks 0] - [rock-cycle (cycle rock-shapes)] - [rock-number 0] - #:result top-of-rocks) - (#:break (> rock-number 2022) [gust (in-cycle gusts)]) - (cond - [(not falling-rock) - (values cave - (~> (first rock-cycle) (place-new-rock top-of-rocks) (gust-move gust cave)) - top-of-rocks - (rest rock-cycle) - (add1 rock-number))])) diff --git a/2022/day-17/rock-shapes b/2022/day-17/rock-shapes deleted file mode 100644 index fbcc382..0000000 --- a/2022/day-17/rock-shapes +++ /dev/null @@ -1,17 +0,0 @@ -#### - -.#. -### -.#. - -..# -..# -### - -# -# -# -# - -## -##
\ No newline at end of file |