Add day trois
This commit is contained in:
parent
d30947fdec
commit
7bb4b908bd
3 changed files with 37 additions and 0 deletions
2
3/GNUmakefile
Normal file
2
3/GNUmakefile
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
# -*- makefile-gmake -*-
|
||||
include ../gnu.mk
|
||||
31
3/main.scm
Normal file
31
3/main.scm
Normal 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
4
3/makefile
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# -*- makefile-bsdmake -*-
|
||||
# Disable Skint because no numerical tower
|
||||
SCHEMES=chibi chicken gauche guile racket sagittarius
|
||||
.include "../common.mk"
|
||||
Loading…
Add table
Add a link
Reference in a new issue