From ffaf4acf1ec4d7ef270317af9d6954f53b458759 Mon Sep 17 00:00:00 2001 From: MsK` Date: Thu, 2 Dec 2021 12:44:34 +0100 Subject: [PATCH] use call-with-input-file --- day-2.scm | 72 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 37 insertions(+), 35 deletions(-) diff --git a/day-2.scm b/day-2.scm index 91cfea0..6642811 100644 --- a/day-2.scm +++ b/day-2.scm @@ -5,39 +5,41 @@ (list->string (reverse w)) (loop (cons c w)))))) -(let [(file (open-input-file "day-2.input"))] - (let loop [(x 0) (y 0)] - (let [(amount (string->number (get-word file))) - (move (get-word file))] - (cond - ((string=? move "forward") - (loop (+ x amount) y)) - ((string=? move "down") - (loop x (+ y amount))) - ((string=? move "up") - (loop x (- y amount))) - (else - (display "part 1: ") - (display (* x y)) - (newline) - (close-port file)))))) +(call-with-input-file + "day-2.input" + (lambda (file) + (let loop [(x 0) (y 0)] + (let [(amount (string->number (get-word file))) + (move (get-word file))] + (cond + ((string=? move "forward") + (loop (+ x amount) y)) + ((string=? move "down") + (loop x (+ y amount))) + ((string=? move "up") + (loop x (- y amount))) + (else + (display "part 1: ") + (display (* x y)) + (newline))))))) -(let [(file (open-input-file "day-2.input"))] - (let loop [(x 0) (y 0) (aim 0)] - (let [(amount (string->number (get-word file))) - (move (get-word file))] - (cond - ((string=? move "forward") - (loop - (+ x amount) - (+ y (* aim amount)) - aim)) - ((string=? move "down") - (loop x y (+ aim amount))) - ((string=? move "up") - (loop x y (- aim amount))) - (else - (display "part 2: ") - (display (* x y)) - (newline) - (close-port file)))))) +(call-with-input-file + "day-2.input" + (lambda (file) + (let loop [(x 0) (y 0) (aim 0)] + (let [(amount (string->number (get-word file))) + (move (get-word file))] + (cond + ((string=? move "forward") + (loop + (+ x amount) + (+ y (* aim amount)) + aim)) + ((string=? move "down") + (loop x y (+ aim amount))) + ((string=? move "up") + (loop x y (- aim amount))) + (else + (display "part 2: ") + (display (* x y)) + (newline)))))))