diff options
Diffstat (limited to '6-2.scm')
-rwxr-xr-x | 6-2.scm | 30 |
1 files changed, 30 insertions, 0 deletions
@@ -0,0 +1,30 @@ +#!/usr/bin/env -S guile -s +!# +(use-modules (ice-9 regex) + (ice-9 textual-ports) + (srfi srfi-1)) + +(define (read-lines port) + (letrec ((loop (lambda (l ls) + (if (eof-object? l) + ls + (loop (get-line port) (cons l ls)))))) + (reverse (loop (get-line port) '())))) + +(define (value-for-line line) + (string->number (string-filter char-set:digit line))) + +(define (travel-distance total-time hold-time) + (* (- total-time hold-time) hold-time)) + +(let* ((port (open-input-file "6.txt")) + (lines (read-lines port)) + (time (value-for-line (car lines))) + (distance (value-for-line (cadr lines))) + (current 0) + (count 0)) + (close-port port) + (while (<= current distance) + (set! current (travel-distance time count)) + (set! count (1+ count))) + (display (- (+ time 1) (* 2 (- count 1))))) |