aboutsummaryrefslogtreecommitdiff
path: root/aoc2023-other/day-09
diff options
context:
space:
mode:
Diffstat (limited to 'aoc2023-other/day-09')
-rw-r--r--aoc2023-other/day-09/day-09-polynomial.rkt10
-rw-r--r--aoc2023-other/day-09/day-09.rkt20
2 files changed, 22 insertions, 8 deletions
diff --git a/aoc2023-other/day-09/day-09-polynomial.rkt b/aoc2023-other/day-09/day-09-polynomial.rkt
index 31c0d3d..5bacb1f 100644
--- a/aoc2023-other/day-09/day-09-polynomial.rkt
+++ b/aoc2023-other/day-09/day-09-polynomial.rkt
@@ -6,8 +6,12 @@
(define histories
(for/list ([raw-history (in-lines (open-aoc-input (find-session) 2023 9 #:cache #true))])
- (~>> raw-history string-split (map string->number))))
+ (~>> raw-history
+ string-split
+ (map string->number))))
-(for/lists (left right #:result (cons (apply + left) (apply + right)))([history (in-list histories)])
+(for/lists (left right #:result (cons (apply + left) (apply + right)))
+ ([history (in-list histories)])
(define f (interpolate-at-integer-points history))
- (values (f -1) (f (length history))))
+ (values (f -1)
+ (f (length history))))
diff --git a/aoc2023-other/day-09/day-09.rkt b/aoc2023-other/day-09/day-09.rkt
index c632150..5eda1eb 100644
--- a/aoc2023-other/day-09/day-09.rkt
+++ b/aoc2023-other/day-09/day-09.rkt
@@ -5,18 +5,28 @@
(define histories
(for/list ([raw-history (in-lines (open-aoc-input (find-session) 2023 9 #:cache #true))])
- (~>> raw-history string-split (map string->number))))
+ (~>> raw-history
+ string-split
+ (map string->number))))
-(define (constant? xs) (= 1 (length (remove-duplicates xs))))
+(define (constant? xs)
+ (= 1 (length (remove-duplicates xs))))
(define/match (derivative xs)
[((list a b)) (list (- b a))]
[((list* a b _)) (cons (- b a) (derivative (rest xs)))])
-(define (extrapolate xs) (if (constant? xs) (car xs) (+ (last xs) (extrapolate (derivative xs)))))
+(define (extrapolate xs)
+ (if (constant? xs)
+ (car xs)
+ (+ (last xs) (extrapolate (derivative xs)))))
;; part 1
-(~>> histories (map extrapolate) (apply +))
+(~>> histories
+ (map extrapolate)
+ (apply +))
;; part 2
-(~>> histories (map (λ~> reverse extrapolate)) (apply +))
+(~>> histories
+ (map (λ~> reverse extrapolate))
+ (apply +))