Недавно мне попалась следующая задача.
Муравей передвигается по правильному полю с квадратными клетками, окрашенными либо в черный, либо в белый цвет.
Муравей всегда смотрит в одном из основных направлений (влево, вправо, вверх или вниз) и передвигается на соседнюю клетку по одному из следующих правил:
- если он на черной клетке, то цвет клетки меняется на белый, муравей поворачивается на 90 градусов против часовой стрелки и передвигается прямо на следующую клетку.
- если он на белой клетке, то цвет клетки меняется на черный, муравей поворачивается на 90 градусов по часовой стрелке и передвигается прямо на следующую клетку.
Пусть изначально задано полностью белое поле из клеток. Сколько клеток окрасится в черный цвет после того, как муравей совершит 1018 переходов?
Решить данную задачу простым перебором всех движений муравья нереально из-за очень большого количества переходов. Значит должна быть формула. Но как ее найти ? Изучение зависимости количества черных клеток от сделанных ходов для ста первых перемещений успехом не увенчалось. Тогда пришла идея визуализировать движения муравья. Это было сделано с помощью несложной обработки. Результат перемещения муравья отображается на поле табличного документа, параллельно происходит запись маршрута в таблицу протокола. После хаотичного блуждания муравей попадает на скоростную магистраль и скрывается за горизонтом. Появление упорядоченного рисунка, говорит о том, что начиная с некоторой точки число черных клеток будет увеличиваться на одно и тоже количество после совершения одинакового количества перемещений. Длину периода по шагам и приращениям черных клеток можно найти пощелкав на повторяющихся фрагментах маршрута. Интерес представляет начало периодической траектории. Если заглянуть на сайт oeis.org , то мы найдем нужную нам формулу, автором которой назван Андрей Заболоцкий. После этого решение задачи из проекта Эйлер не должно представлять особых трудностей.
Обработка для визуализации перемещений муравья содержит две команды Старт (Стоп) и команду отображения области первого периода. Первоначальная позиция муравья задается активацией ячейки табличного поля. В правой части располагается таблица значений с протоколом перемещений.
Тестирование обработки выполнялось на платформе 1С:Предприятие 8.3 (8.3.22.1923).