Теоретическая задачка - 2

Oct 16, 2007 19:18

Эта задача предлагалась на городской олимпиаде Петербурга где-то в 90-е годы (конкретнее не знаю). Автор - вроде бы А.Суханов (пардон, опять нет уверенности). Литературная обработка - моя.

На бесконечно длинное шоссе, идущее справа налево на парашютах спустились роботы. Приземлились они одновременно, одновременно уложили парашюты и оставили их в точках приземления, а затем одновременно начали выполнять зашитые в них программы. Надо сказать, что шоссе-то вражеское, а роботы несут с собой половинки бинарного заряда. Поэтому необходимо, чтобы роботы встретились. Что там будет после встречи - неважно, все равно произойдет взрыв, после которого не останется ни роботов, ни шоссе, ни задачи.

Так как судьба роботов все равно быть уничтоженными, то и делать их супердорогими никто не собирался. В частности, оба они серийного производства, ну, то есть совершенно одинаковые. У них одинаковый размер шага, одинаковое время выполнения шага, у них абсолютно одинаковые парашюты. Но самое главное - в них записана одна и та же программа!

Кстати, в целях экономии исполняющее устройство у них тоже не особо мудрое. Робот может выполнять только две команды: "шаг направо" и "шаг налево". Впрочем, он может выполнять выбор "если" и цикл "пока", но проверять может единственное условие - есть ли парашют в той точке, где он сейчас находится. Ваша задача - написать программу, которая, будучи одновременно запущена на обоих роботах, обеспечит их встречу на шоссе.

Update: комментарии открыты. Образцовое решение предложил dfyz - см его коммент.

prog, teach

Previous post Next post
Up