#!/usr/bin/env -S guile -s !# (use-modules (ice-9 textual-ports)) (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)))))