|
Разделы:
Lifehack12
Данетки95
Игры139
Игры на бумаге17
Книги14
Конкурсы8
Логические задачи346
Люди3
Новости6
Познавательно33
Почемучки14
Притчи4
Работа сайта10
Разное10
Сделай сам10
С праздником16
Страшно жить10
Творчество41
Тесты14
Фото4
Хобби2
Юмор105
Логические задачи → Роботы
24 декабря 2008 | Добавил: Myst 5
Представьте себе целочисленную шкалу - ну, то есть, бесконечный в обе стороны ряд точек, занумерованных целыми числами - положительными и отрицательными. Теперь представьте себе, что на эту самую шкалу спускаются на парашютах два робота. Они приземляются одновременно. В разных точках, естественно. После приземления каждый из роботов тут же бросает свой парашют прямо в той точке, на которую приземлился, и, не теряя времени даром, начинает действовать строго по заложенной в нем программе. Программа написана на простеньком языке, состоящем всего из четырех операторов:
При исполнении оператора Left робот делает один шаг влево, то есть перепрыгивает на точку с числом на единицу меньшим, а при исполнении оператора Right - шаг вправо. Оператор GoTo - обычный оператор безусловного перехода на указанную метку в программе. Оператор PGoTo - оператор условного перехода, где условием является наличие парашюта в той точке, на которой стоит робот (все равно - своего парашюта или чужого). Итак, роботы приземляются, бросают парашюты и в один и тот же момент начинают действовать по заложенным в них программам. Причем действуют они синхронно. Давайте будем считать, что каждую секунду роботы одновременно исполняют очередной оператор своей программы (на исполнение операторов GoTo и PGoTo тоже требуется одна секунда). Теперь представьте себе, что программы у роботов совершенно одинаковые. Тогда они и вести себя будут совершенно одинаково, весело прыгая по точкам и не мешая друг другу. Правда? Ничего подобного! Оказывается, можно написать такую программу, при исполнении которой роботы обязательно встретятся, то есть в какой-то момент прыгнут в одну и ту же точку! Именно такую программу вам и предстоит написать. Учтите, что программа должна быть честной. Она не должна содержать операторов, отличных от упомянутых четырех, и, кроме того, ее текст, конечно же, должен быть конечным - то есть состоять из конечного числа строк-операторов. Постарайтесь придумать как можно более короткую программу. Совершенно не обязательно, чтобы программа закончилась в тот самый момент, когда роботы встретятся. Пусть себе прыгают дальше - лишь бы встретились хоть раз. Не обязательно даже, чтобы программа вообще кончалась. Она вполне может включать бесконечный цикл. Если хотите, можете считать, что это - роботы-диверсанты: каждый из них несет половину критической массы ядерного заряда, и при встрече происходит взрыв, уничтожающий обоих роботов. Жалко только, что при этом пострадает шкала целых чисел.
Хотите регулярно получать новые задачи и познавательные топики? Подпишитесь на рассылку
|
Случайное:
Обсуждения:
Ogra → Инспектор Варнике
Carcass → Тест советского восьмиклассника
Руслан → Слова, оканчивающиеся на “зо”.
ололошин → Незадачливый рыбак
lisicanasta → Инквизиция в наши дни
Ogra → И все же, они вертятся?
SM → Последовательность
Nastya → Бесконечная игра
SpAwN# → Самая трудная игра в мире
Карта сайта:
|
25 декабря 2008 в 01:23
Я не уверен что правильно понял как работает оператор PGoTo (если не найдет парашют то продолжит след команду или у робота вылетит BSOD ^_^)
Написал (если не найдет парашют то продолжит след команду)
1 Right
2 PGoTo
3 Left
4 Left
5 PGoTo
6 Right
7 Right
8 Right
9 PGoTo
10 Left
11 Left
12 Left
13 Left
14 PGoTo
затем будет 5 раз выполняться Right
19 PGoTo
затем будет 6 раз выполняться Left
ну и так далее....
P.s до идеального далеко :)
25 декабря 2008 в 13:04
to soulzik : для PGoto нужно указывать метку
мой алгоритм:
1 Left
2 PGoTo 4
3 GoTo 1
4 Left
5 GoTo 4
роботы движутся влево со скоростью 1 клетка за 3 секунды. когда один из них находит парашют другого, то ускоряется до 1 клетки за 2 секунды - догонит за конечное время.
25 декабря 2008 в 13:07
to soulzik : для PGoto нужно указывать метку -что он будет делать при нахождении парашюта
мой алгоритм:
1 Left
2 PGoTo 4
3 GoTo 1
4 Left
5 GoTo 4
роботы движутся влево со скоростью 1 клетка за 3 секунды. когда один из них находит парашют другого, то ускоряется до 1 клетки за 2 секунды - догонит за конечное время.
16 января 2009 в 21:14
Помоему так будет лучше, меньше тактов проподает на GoTo. Робот нашедший парашют будет двигаться быстрее.
1 Left
2 PGoTo 4
3 GoTo 1
4 Left
5 Left
6 GoTo 4
20 ноября 2010 в 20:25
вопрос оператор GoTo перекидывает на метку... меткой является число на шкале? если да то просто первой же командой GoTo 0 и они встречаются