summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Day17.lean12
-rw-r--r--Main.lean2
2 files changed, 14 insertions, 0 deletions
diff --git a/Day17.lean b/Day17.lean
index 4bddc1c..11a92f2 100644
--- a/Day17.lean
+++ b/Day17.lean
@@ -389,6 +389,18 @@ decreasing_by
have : closedSet.size < (Finite.cardinality (ClosedSetEntry heatLossMap)) := Std.HashSet.size_lt_finite_cardinality_of_not_mem closedSet ⟨_,h₂⟩
omega
+def part1 (heatLossMap : HeatLossMap) : Option Nat :=
+ heatLossMap.findPath (OpenSet.start heatLossMap) Std.HashSet.empty
+
+------------------------------------------------------------------------------------
+
+open DayPart
+instance : Parse ⟨17, by simp⟩ (ι := HeatLossMap) where
+ parse := (Except.mapError ToString.toString) ∘ parse
+
+instance : Part ⟨17,_⟩ Parts.One (ι := HeatLossMap) (ρ := Nat) where
+ run := part1
+
------------------------------------------------------------------------------------
private def testData := "2413432311323
diff --git a/Main.lean b/Main.lean
index cea5348..5f8bec6 100644
--- a/Main.lean
+++ b/Main.lean
@@ -15,6 +15,7 @@ import «Day13»
import «Day14»
import «Day15»
import «Day16»
+import «Day17»
open DayPart
@@ -59,6 +60,7 @@ def try_run_day_part (day : Days) (part : Parts) (data : String) : IO String :=
| ⟨15,_⟩, Parts.Two => try_run_day_part_impl ⟨15,_⟩ Parts.Two data
| ⟨16,_⟩, Parts.One => try_run_day_part_impl ⟨16,_⟩ Parts.One data
| ⟨16,_⟩, Parts.Two => try_run_day_part_impl ⟨16,_⟩ Parts.Two data
+ | ⟨17,_⟩, Parts.One => try_run_day_part_impl ⟨17,_⟩ Parts.One data
| _, _ => throw $ IO.userError "The requested combination of day/part has not been implemented yet."
def main (parameters : List String): IO Unit := do