maaath
Scheme/Guile
(import (rnrs io ports (6)))
(define (parse-file file-name)
(map string->number (string-split (call-with-input-file file-name get-string-all) #\newline)))
(let* ((gears (parse-file "notes/everybody_codes_e2025_q04_p1.txt")))
(format #t "P1 Answer: ~a\n\n" (* 2025 (/ (car gears) (car (last-pair gears))))))
(let* ((gears (parse-file "notes/everybody_codes_e2025_q04_p2.txt")))
(format #t "P2 Answer: ~a\n\n" (ceiling (* 10000000000000 (/ (car (last-pair gears)) (car gears))))))
(define (parse-file-p3 file-name)
(map
(lambda (line) (map string->number(string-split line #\|)))
(string-split (call-with-input-file file-name get-string-all) #\newline)))
(let* ((gears (parse-file-p3 "notes/everybody_codes_e2025_q04_p3.txt")))
(format #t "P2 Answer: ~a\n\n"
(floor (* 100
(apply * (map (lambda (gear) (if (= 1 (length gear)) 1 (/ (cadr gear) (car gear)))) gears))
(/ (caar gears) (caar (last-pair gears)))))))