aboutsummaryrefslogtreecommitdiff
path: root/2021/day-17/day-17.rkt
diff options
context:
space:
mode:
Diffstat (limited to '2021/day-17/day-17.rkt')
-rw-r--r--2021/day-17/day-17.rkt42
1 files changed, 16 insertions, 26 deletions
diff --git a/2021/day-17/day-17.rkt b/2021/day-17/day-17.rkt
index b8563a5..7de44a0 100644
--- a/2021/day-17/day-17.rkt
+++ b/2021/day-17/day-17.rkt
@@ -4,38 +4,30 @@
(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 _)))
+ 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)))
+ (and (x . >= . x-min) (x . <= . x-max) (y . >= . y-min) (y . <= . y-max)))
(define (miss? x y)
- (or (y . < . y-min)
- (x . > . x-max)))
+ (or (y . < . y-min) (x . > . x-max)))
-(define (drag dx i) (max (- dx i) 0))
-(define (gravity dy i) (- dy i))
+(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)
+ (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)])))
+ [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)]
@@ -45,9 +37,7 @@
(list dx dy (first velocity))))
;; part 1
-(~>> on-target
- (argmax third)
- third)
+(~>> on-target (argmax third) third)
;; part 2
-(length on-target) \ No newline at end of file
+(length on-target)