На главную страницу

Возврат к головоломкам

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

[<метка>:] Left
[<метка>:] Right
[<метка>:] GoTo <метка>
[<метка>:] PGoTo <метка>

  При исполнении оператора Left робот делает один шаг влево, то есть перепрыгивает на точку с числом на единицу меньшим, а при исполнении оператора Right - шаг вправо. Оператор GoTo - обычный оператор безусловного перехода на указанную метку в программе. Оператор PGoTo - оператор условного перехода, где условием является наличие парашюта в той точке, на которой стоит робот (все равно - своего парашюта или чужого).
  Итак, роботы приземляются, бросают парашюты и в один и тот же момент начинают действовать по заложенным в них программам. Причем действуют они синхронно. Давайте будем считать, что каждую секунду роботы одновременно исполняют очередной оператор своей программы (на исполнение операторов GoTo и PGoTo тоже требуется одна секунда).
  Теперь представьте себе, что программы у роботов совершенно одинаковые. Тогда они и вести себя будут совершенно одинаково, весело прыгая по точкам и не мешая друг другу. Правда? Ничего подобного! Оказывается, можно написать такую программу, при исполнении которой роботы обязательно встретятся, то есть в какой-то момент прыгнут в одну и ту же точку!
  Именно такую программу вам и предстоит написать. Учтите, что программа должна быть честной. Она не должна содержать операторов, отличных от упомянутых четырех, и, кроме того, ее текст, конечно же, должен быть конечным - то есть состоять из конечного числа строк-операторов. Постарайтесь придумать как можно более короткую программу.
  Совершенно не обязательно, чтобы программа закончилась в тот самый момент, когда роботы встретятся. Пусть себе прыгают дальше - лишь бы встретились хоть раз. Не обязательно даже, чтобы программа вообще кончалась. Она вполне может включать бесконечный цикл. Если хотите, можете считать, что это - роботы-диверсанты: каждый из них несет половину критической массы ядерного заряда, и при встрече происходит взрыв, уничтожающий обоих роботов. Жалко только, что при этом пострадает шкала целых чисел.

Ответ:
1: Right
2: PGoTo 4
3: GoTo 1
4: Right
5: GoTo 4

лосось в тесте