Files
advent-of-code-2021/day-1.scm
2021-12-01 19:30:29 +01:00

35 lines
1.2 KiB
Scheme

(define (count-increase text-port previous count)
(let [(line (get-line text-port))]
(if (eof-object? line)
count
(let [(number (string->number line))]
(count-increase text-port number
(+ count (if (> number previous) 1 0)))))))
(let [(file (open-input-file "day-1.input"))]
(display "part 1: ")
(display (count-increase file 100000 0))
(newline)
(close-port file))
(define (count-increase-sliding text-port triplet previous-sum count)
(let [(line (get-line text-port))]
(if (eof-object? line)
count
(let* [(number (string->number line))
(triplet (list (cadr triplet) (caddr triplet) number))
(sum (+ (car triplet) (cadr triplet) (caddr triplet)))]
(count-increase-sliding text-port triplet sum
(+ count (if (> sum previous-sum) 1 0)))))))
(define (read-number text-port)
(string->number (get-line text-port)))
(let* [(file (open-input-file "day-1.input"))
(triplet (list (read-number file) (read-number file) (read-number file)))
(sum (+ (car triplet) (cadr triplet) (caddr triplet)))]
(display "part 2: ")
(display (count-increase-sliding file triplet sum 0))
(newline)
(close-port file))