Tom White - Problem Set #9
Source code