Разбор задач школьного этапа олимпиады по информатике 2019 года. Задача E

Дата публикации: Oct 13, 2019 4:4:43 PM

Последняя задача на технику программирования. Моделируем движение кубика. Учитываем, что после прохождения строки кубик останавливается либо над (если катится вправо), либо под (если катится влево) непосещенными ячейками, а одна из строк исключается из рассмотрения. Аналогично, при прохождении столбца кубик остановится либо слева (если катится вперед-вверх), либо справа (если катится назад-вниз) от непосещенных ячеек, при этом останется на один из столбцов меньше, чем было до этого. В этом плане исходная позиция не типична, кубик в левом нижнем углу, а не под ним, для общности решения можно откатить кубик на одну клетку на себя-вниз.

Для хранения значений, отмеченных на сторонах кубика, как они расположены в пространстве можно ввести массив из 6 целых чисел. Низ — 0 индекс, верх — 1, левая грань — 2, правая — 3, передняя-ближняя — 4, задняя-дальняя — 5. При этом если кубик катится вперед, то значения в левой и правой гранях не изменяются, а ориентация кубика через каждые 4 поворота повторяется. Значит, если перед кубиком N строк, то положение его после их прохождения будет такое же, как если бы кубик повернули N mod 4 раз. Необходимо аккуратно задать, как меняются грани при 1, 2 или 3 поворотах в каждом направлении: вперед (up), назад (down), влево (left) и вправо (right),в скобках имена соответствующих процедур.

Скачать текст программы.