Уже несколько участников преодолели уровень 6. Но уровень 7 оказался серьёзным препятствием для
лидеров. Эта ситуация даёт возможность остальным участникам сократить своё отставание.
Сегодня разберёмся с задачей третьего уровня, на котором ещё застряли некоторые участники.
Как загнуть массив в кольцо
Сложность задачи в том, что нужно уметь работать с данными, свёрнутыми в кольцо.
На самом деле ни чего сворачивать не нужно, достаточно правильно работать с индексами массива.
Задачу третьего уровня решить почти также легко как и задачу уровня 0.
Единственная разница в том, что все счетчики вычислять по модулю длины. Вычисления по модулю
и создадут кольцо.
Подробнее. Удобнее всего хранить сроку из N символов в массиве с индексами от 0 до N-1.
Тогда тогда можно в счётчикам прибавлять любое число и брать остаток от деления результата
на N. Это создаст иллюзию движения по кругу.
Вычитать по модулю тоже легко. Нужно перед вычитанием добавить N, затем вычесть и
взять остаток от деления результата на N.
Например, операции движения счётчика в вправо и влево на 1 на языке Pascal:
R := (R+1) mod N;
L := (L+N-1) mod N
Остаётся немного подправить условие окончания проверки и задача решена.