## Source: Hill Climbing Algorithm

## Part 1

Given a height map, find the shortest path between two points such that the path can descend any distance but can only climb by a maximum of 1.

Given a height map, find the shortest path between two points such that the path can descend any distance but can only climb by a maximum of 1.

Given a grid of numbers, count how many of these numbers have a direct path in any cardinal direction to the edge of the grid.

Rust, yet again! Let’s take what we did last time with Solving Sudoku (again) and improve the code structure a bit more.

Goals:

- Create a ‘Solver’ struct that can maintain state (such as how many states we’ve visited, how much time we’ve spent)
- Track the above stats
- Turn the ‘Solver’ into an iterator which will iterate through given solutions (a single call will give the first solution or you can run through the iterator to get all of them)

If you’d like to follow along, I’ve started uploading the code here: https://github.com/jpverkamp/rust-solvers

More Rust! This time, I want to go back to my post on A Generic Brute Force Backtracking Solver. For one, because I’m learning Rust. For two, because there is a crate specifically for `im`

mutable data structures. And for three, because I expect it will be much faster. We shall see!

`start`

to `end`

such that nodes named with lowercase letters are visited once, and nodes with uppercase letters can be visited any number of times.