35 lines
1.2 KiB
Scheme
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))
|