Weekly Python Exercise B2: Advanced topics 2 by Reuven M. Lerner