this repo has no description

day04: part 2

+19
+11
lib/day04.ex
··· 45 45 |> Grid.get_reachable_ats() 46 46 |> Enum.count() 47 47 end 48 + 49 + def solve_part_2(%Grid{} = grid) do 50 + remove_till_no_reachable_ats(grid, 0) 51 + end 52 + 53 + def remove_till_no_reachable_ats(%Grid{} = grid, acc_count) do 54 + case Grid.remove_and_count_reachable_ats(grid) do 55 + {_, 0} -> acc_count 56 + {new_grid, count} -> remove_till_no_reachable_ats(new_grid, acc_count + count) 57 + end 58 + end 48 59 end
+8
lib/day04/grid.ex
··· 6 6 %__MODULE__{grid_map: grid_map, width: width, height: height} 7 7 end 8 8 9 + def remove_and_count_reachable_ats(%__MODULE__{} = grid) do 10 + grid 11 + |> get_reachable_ats() 12 + |> Enum.reduce({grid, 0}, fn coord, {grid, count} -> 13 + {%{grid | grid_map: Map.put(grid.grid_map, coord, ".")}, count + 1} 14 + end) 15 + end 16 + 9 17 def get_reachable_ats(%__MODULE__{grid_map: grid_map, width: width, height: height}) do 10 18 for x <- 0..(width - 1), 11 19 y <- 0..(height - 1),