aboutsummaryrefslogtreecommitdiff
path: root/aoc2021/day-17/day-17.rkt
diff options
context:
space:
mode:
authorH.J <thechairman@thechairman.info>2024-10-09 11:36:55 -0400
committerH.J <thechairman@thechairman.info>2024-10-09 11:36:55 -0400
commit8777ff071f7bb37631baa7b6717ad29961e50911 (patch)
tree6d59c4ed58e454b960339c3d1151f0a879e8d7cb /aoc2021/day-17/day-17.rkt
parent6156a9ef7be4012063a042aafb4e9b0d7eadde8e (diff)
downloadgleam_aoc-8777ff071f7bb37631baa7b6717ad29961e50911.tar.gz
gleam_aoc-8777ff071f7bb37631baa7b6717ad29961e50911.zip
sorting by language
Diffstat (limited to 'aoc2021/day-17/day-17.rkt')
-rw-r--r--aoc2021/day-17/day-17.rkt43
1 files changed, 0 insertions, 43 deletions
diff --git a/aoc2021/day-17/day-17.rkt b/aoc2021/day-17/day-17.rkt
deleted file mode 100644
index 7de44a0..0000000
--- a/aoc2021/day-17/day-17.rkt
+++ /dev/null
@@ -1,43 +0,0 @@
-#lang racket
-(require "../../jj-aoc.rkt"
- threading)
-
-(define-values (x-min x-max y-min y-max)
- (~> (open-day 17 2021)
- port->string
- (regexp-match #px"target area: x=(.*)\\.\\.(.*), y=(.*)\\.\\.(.*)\n" _)
- rest
- (map string->number _)
- (apply values _)))
-
-(define (hit? x y)
- (and (x . >= . x-min) (x . <= . x-max) (y . >= . y-min) (y . <= . y-max)))
-
-(define (miss? x y)
- (or (y . < . y-min) (x . > . x-max)))
-
-(define (drag dx i)
- (max (- dx i) 0))
-(define (gravity dy i)
- (- dy i))
-
-(define (find-trajectory-apex dx dy)
- (for/fold ([x 0] [y 0] [y-apex 0] [result #f] #:result (list y-apex result))
- ([i (in-naturals)] #:break result)
- (cond
- [(hit? x y) (values dx dy y-apex 'hit)]
- [(miss? x y) (values x y 'miss 'miss)]
- [else (values (+ x (drag dx i)) (+ y (gravity dy i)) (if (y . > . y-apex) y y-apex) #f)])))
-
-(define on-target
- (for*/list ([dx (in-inclusive-range 1 x-max)]
- [dy (in-inclusive-range y-min (abs (* 2 y-max)))]
- [velocity (in-value (find-trajectory-apex dx dy))]
- #:when (equal? (second velocity) 'hit))
- (list dx dy (first velocity))))
-
-;; part 1
-(~>> on-target (argmax third) third)
-
-;; part 2
-(length on-target)