advent-of-code/2017/01/day1.scm
2024-11-12 21:46:18 +01:00

19 lines
543 B
Scheme

#!/usr/bin/csi -script
(use extras)
(use srfi-1)
(use list-comprehensions)
(define (sum-matching-offset k xs)
(let* ((n (length xs))
(newxs (zip xs (take (drop (concatenate ((repeat 3) xs)) k) n)))
(f (lambda (x acc) (if (= (first x) (second x)) (+ acc (first x)) acc))))
(foldr f 0 newxs)))
(define (main)
(let* ((digits-str (read-line))
(digits (map string->number (map string (string->list digits-str)))))
(print (sum-matching-offset 1 digits))
(print (sum-matching-offset (/ (length digits) 2) digits))))
(main)