Files
advent-of-code-2021/01-sonar-sweep/code.scm
2021-12-06 14:21:53 +01:00

35 lines
1.1 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 "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 "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))