Add day trois

This commit is contained in:
cælōrum spectātrīx 2025-12-03 23:53:29 +01:00
parent d30947fdec
commit 7bb4b908bd
3 changed files with 37 additions and 0 deletions

2
3/GNUmakefile Normal file
View file

@ -0,0 +1,2 @@
# -*- makefile-gmake -*-
include ../gnu.mk

31
3/main.scm Normal file
View file

@ -0,0 +1,31 @@
(import (scheme base)
(scheme char)
(scheme cxr)
(scheme file)
(scheme process-context)
(scheme write))
(define (max-joltage line batteries)
(let ((lst (map digit-value (string->list line))))
(let loop ((req-tail-length (- batteries 1))
(lst lst)
(sum 0))
(if (negative? req-tail-length)
sum
;; this is O^one million at least
(let ((m (memq (apply max (reverse (list-tail (reverse lst) req-tail-length))) lst)))
(loop (- req-tail-length 1) (cdr m) (+ (* sum 10) (car m))))))))
(define (part file batteries)
(with-input-from-file file
(lambda ()
(let loop ((line (read-line))
(sum 0))
(if (eof-object? line)
(begin
(display (number->string sum))
(newline))
(loop (read-line) (+ sum (max-joltage line batteries))))))))
(for-each (lambda (file) (part file 2)) (cdr (command-line)))
(for-each (lambda (file) (part file 12)) (cdr (command-line)))

4
3/makefile Normal file
View file

@ -0,0 +1,4 @@
# -*- makefile-bsdmake -*-
# Disable Skint because no numerical tower
SCHEMES=chibi chicken gauche guile racket sagittarius
.include "../common.mk"