From 6de04b9fa8106d097deeac4cf54028125b18dd85 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Fri, 10 Dec 2021 11:24:13 -0700 Subject: [PATCH] Fix AOC day 9 pt 1 --- projects/aoc/src/year2021/Solutions2021.hx | 1 + projects/aoc/src/year2021/Solutions2021.kiss | 5 +++-- projects/aoc/src/year2021/day9.kiss | 21 ++++++++++++++++++-- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/projects/aoc/src/year2021/Solutions2021.hx b/projects/aoc/src/year2021/Solutions2021.hx index 7a52b30f..89ff3034 100644 --- a/projects/aoc/src/year2021/Solutions2021.hx +++ b/projects/aoc/src/year2021/Solutions2021.hx @@ -5,6 +5,7 @@ import haxe.Constraints; import haxe.ds.Option; import haxe.Int64; import haxe.Int64Helper; +import hx.strings.ansi.Ansi; #if day4 import year2021.Day4; #end diff --git a/projects/aoc/src/year2021/Solutions2021.kiss b/projects/aoc/src/year2021/Solutions2021.kiss index a9eec83b..3021e5f9 100644 --- a/projects/aoc/src/year2021/Solutions2021.kiss +++ b/projects/aoc/src/year2021/Solutions2021.kiss @@ -55,8 +55,9 @@ (day 9 (load "day9.kiss") (assert (= 4 (count (lowPoints "src/year2021/inputs/day9-example.txt")))) - (let [lp (lowPoints "src/year2021/inputs/day9.txt")] - (doFor =>key val lp (print "$key : $val")))) + // (highlightLowPoints "src/year2021/inputs/day9.txt") + (print (apply + (for =>_ height (lowPoints "src/year2021/inputs/day9.txt") (+ 1 height)))) + ) (dayTodo 10) (dayTodo 11) (dayTodo 12) diff --git a/projects/aoc/src/year2021/day9.kiss b/projects/aoc/src/year2021/day9.kiss index d9503013..41a9216f 100644 --- a/projects/aoc/src/year2021/day9.kiss +++ b/projects/aoc/src/year2021/day9.kiss @@ -42,7 +42,24 @@ (cond ((> adjHeight height) (pointsToCheck.remove adjKey)) - ((< adjHeight height) + ((<= adjHeight height) (set isLow false)))) (when isLow (dictSet lowPoints key height)))) - lowPoints)) \ No newline at end of file + lowPoints)) + +(function :Void highlightLowPoints [file] + (let [writer (Ansi.writer (Sys.stdout)) + m (lowPoints file) + lines (Util.readLines file) + &mut isRed false] + (doFor [y line] (enumerate lines) + (doFor [x height] (enumerate (line.split "")) + (if (m.exists (mapKey [x y])) + (unless isRed + (writer.fg RED) + (set isRed true)) + (when isRed + (writer.fg WHITE) + (set isRed false))) + (writer.write height)) + (writer.write "\n")))) \ No newline at end of file