solutions for www.pythonchallenge.com