Tom White - Problem Set #8
Source code