diff options
author | lamp | 2023-12-02 10:47:08 +0000 |
---|---|---|
committer | lamp | 2023-12-02 10:47:08 +0000 |
commit | 3af6a4012dd82adabf0e2ce9df886438b254e500 (patch) | |
tree | 9f8a58ff8cbf60b379dd913589799169f199dc3d /1.scm |
add day 1 solutions
Diffstat (limited to '1.scm')
-rwxr-xr-x | 1.scm | 22 |
1 files changed, 22 insertions, 0 deletions
@@ -0,0 +1,22 @@ +#!/usr/bin/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 (fix-line line) + (let ((matches (string-match "[a-z]*([0-9])(.*([0-9]))?" line))) + (string->number (string-append (match:substring matches 1) + (or (match:substring matches 3) (match:substring matches 1)))))) + +(let* ((port (open-input-file "1.txt")) + (lines (read-lines port))) + (close-port port) + (display (fold + 0 (map fix-line lines)))) |