pub fn get_paths(
grid: Dict(#(Int, Int), Int),
position: #(Int, Int),
current_path: List(#(Int, Int)),
paths: List(List(#(Int, Int))),
) -> List(List(#(Int, Int)))
pub fn get_start_positions(
grid: Dict(#(Int, Int), Int),
) -> List(#(Int, Int))
pub fn get_surrounding_entries(
grid: Dict(#(Int, Int), Int),
position: #(Int, Int),
) -> List(#(Int, Int))
pub fn get_trailheads(
grid: Dict(#(Int, Int), Int),
) -> List(#(Int, Int))
pub fn get_unique_endpoints(
paths: List(List(#(Int, Int))),
) -> List(#(Int, Int))
pub fn grid_to_string(
grid: Dict(#(Int, Int), Int),
) -> Dict(#(Int, Int), String)