aboutsummaryrefslogtreecommitdiff
path: root/aoc2023-other/day-09/day-09.rkt
diff options
context:
space:
mode:
authorHJ <thechairman@thechairman.info>2023-12-25 11:24:39 -0500
committerHJ <thechairman@thechairman.info>2023-12-25 11:24:39 -0500
commit40eb8465f7958ac056a3843d38234848b15464f7 (patch)
tree6a22b862107f219c6b1c354c4ac70792e9d41ce8 /aoc2023-other/day-09/day-09.rkt
parentf3dfb53b1d59febe1f3bac746150372362f313a9 (diff)
downloadgleam_aoc-40eb8465f7958ac056a3843d38234848b15464f7.tar.gz
gleam_aoc-40eb8465f7958ac056a3843d38234848b15464f7.zip
day 1-24 end-of-year style cleanup
Diffstat (limited to 'aoc2023-other/day-09/day-09.rkt')
-rw-r--r--aoc2023-other/day-09/day-09.rkt20
1 files changed, 15 insertions, 5 deletions
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 +))