Окончательный вариант, вроде бы.

Добавлены дополнительные классы. Доработан алгоритм и графическая
составляющая.