Входной текст — это программа на Python, которая (для простоты) не содержит
- строковых констант
- скобочных конструкций в левых частях операций связывания и в сигнатурах функций:
A[i] = 0
def foo(var = bar(a, b)):
переноса строк с помощью "\" и объединения строк с помощью ";"
операторов match / case
Написать программу, которая заменяет в этом тексте имена всех переменных (только тех, что участвуют во всевозможных операциях связывания и формальных параметрах функций) по следующему правилу: составляется список всех N имён в порядке их появления в тексте, а затем каждому i-му имени ставится в соответствие (i+1)%N-е.
Операциями связывания считаются: =, в том числе многоместная, :=, as, def, class.
- Поля объектов переменными не считаются
Дополнительное требование: использовать ast и ему подобные инструменты запрещается — нужно использовать регулярные выражения.
Считывать такую программу проще всего Имена: a, b, c, a1 → b, c, a1, a