A problem for educational purposes. Java/OOP, level: basic-intermediate.