From b6af9c467e7481c38e5a65ca223fd0cb1c22445a Mon Sep 17 00:00:00 2001 From: Folkert Kevelam Date: Mon, 17 Feb 2025 21:41:25 +0100 Subject: [PATCH] Add solution to day 1 part 1 --- AoC/2024/day_1/day_1.janet | 54 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 AoC/2024/day_1/day_1.janet diff --git a/AoC/2024/day_1/day_1.janet b/AoC/2024/day_1/day_1.janet new file mode 100644 index 0000000..d57dfb2 --- /dev/null +++ b/AoC/2024/day_1/day_1.janet @@ -0,0 +1,54 @@ +(defn compute_distance [left right] + (if + (not (= + (length left) + (length right))) + (return @[])) + + (var output 0) + + (def sorted_left (sort left)) + (def sorted_right (sort right)) + + (var i (- (length sorted_left) 1)) + (while (>= i 0) + (set output (+ output + (math/abs (- (get sorted_left i) (get sorted_right i))))) + (-- i)) + + output) + +(defn getnums [input] + (def output (array/new 2)) + (def str (string/split " " (string/trim input))) + (var i 0) + (each item str + (if (not (= item "")) + (do + (set (output i) (scan-number item)) + (++ i)))) + output) + +(defn read_data [filename] + (def left @[]) + (def right @[]) + (var index 0) + + (with [f (file/open filename)] + (while true + (var l (file/read f :line)) + (if l + (do + (def line_data (getnums l)) + (set (left index) (get line_data 0)) + (set (right index) (get line_data 1)) + (++ index)) + (break)))) + @[left right]) + +(defn main [script filename] + (def input_arrays (read_data filename)) + (def left (get input_arrays 0)) + (def right (get input_arrays 1)) + (def distance (compute_distance left right)) + (pp distance))