Написать класс Spiral, экземпляр которого образуется из строки, содержащей одну или несколько последовательностей одинаковых символов, при этом одинаковые символы группируются в порядке их первого вхождения, например Spiral("1233443213") → 11 22 3333 44. При преобразовании в строку такая последовательность должна «закручиваться в спираль» против часовой стрелки, начиная с направления «вправо» (см. пример). Помимо преобразования в строку объект типа Spiral должен:
- Поддерживать сложение с таким же объектом: существующие в исходном объекте последовательности увеличиваются на соответствующее количество символов, новые — добавляются в конец
Поддерживать вычитание объектов типа Spiral, при этом существующие последовательности уменьшаются в длине (до полного исчезновения, если в вычитаемом было не меньше таких символов)
Поддерживать умножение на натуральное число N (количество символов в последовательностях увеличивается в N раз)
- Поддерживать итератор по всем символам последовательности
Подсказка: при решении задачи мне пригодился collections.Counter
dccc d b d ab d eeeee ihg f ccbb e c b e c aa e d e ddddee eddd e c e bc e dccb d b e aa i e i ffgghh hhgg i f i af a a b b b c c c c d d d d d e e e e e e f g h i