Source: https://www.ocr.org.uk/Images/514655-programming-project-set-a-high.pdf