I created three different algorithms to solve the problem. Each algorithm is better at solving the problem than the previous, because of the things I learned from implementing one algorithm. I will describe in the following sections the three algorithms I built and tested.