diff options
Diffstat (limited to '2021/day1/01b.rkt')
-rw-r--r-- | 2021/day1/01b.rkt | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/2021/day1/01b.rkt b/2021/day1/01b.rkt new file mode 100644 index 0000000..40337a4 --- /dev/null +++ b/2021/day1/01b.rkt @@ -0,0 +1,23 @@ +#lang racket +(require threading) + +(define input (file->lines "input")) + +(define (map-differing-lengths f . arrs) + (define minLength (apply min (map length arrs))) + (define newLists (map (lambda (x) (take x minLength)) arrs)) + (apply map (cons f newLists))) + +(define (build-windows xs) + (map-differing-lengths list xs (cdr xs) (drop xs 2))) + +(define (diff-pairs xs) + (map-differing-lengths - (cdr xs) xs)) + +(~>> input + (map string->number) + (build-windows) + (map (lambda (x) (apply + x))) + (diff-pairs) + (filter positive?) + (length _)) |