Задачка на алгоритмы: уничтожить роботов

Прошиваем железяки, чтобы они самоуничтожились.

Задачка на алгоритмы: уничтожить роботов

Есть два автономных робота (представим, что это костюмы Тони Старка). Они улетели в космос и оказались в поясе астероидов. Они могут перемещаться между астероидами. Наша задача — чтобы они встретились на одном астероиде.

Задачка на алгоритмы: уничтожить роботов

Условия

  1. Костюмы находятся в разных сторонах на огромной полосе астероидов. Можно считать, что она бесконечна. 
  2. Все астероиды одного размера и выстроены в ряд, линейно. С каждого астероида робот может переместиться либо влево, либо вправо.
  3. Все астероиды покрыты льдом и окрашены в голубой цвет. Исключение — один чёрный астероид. На старте он находится на равном расстоянии между костюмами. 
  4. Запрограммировать можно только два костюма сразу, одной и той же программой. Запрограммировать их по отдельности нельзя. 
  5. Запрещены пустые циклы и обращение к несуществующим строкам. 
  6. Как только два робота оказываются на одном квадрате, программа завершается. 

Доступные команды

Программа может состоять из нескольких строк, а в одной строке может быть только одна из следующих команд: 

Step to the left — шаг влево на следующий астероид → переключение на следующую строку программы. 

Step to the right — шаг вправо на следующий астероид → переключение на следующую строку программы. 

If black asteroid — проверить, есть ли под ногами чёрный астероид. Если да — переключиться на следующую строку программы. Если нет — вернуться к предыдущей строке программы. 

Teleport N — переключиться на N-ю строку программы. 

На команды Step и проверки IF костюмы тратят по 1 секунде. У команды Teleport N мгновенное выполнение.

  1. Step to the right. 
  2. If black asteroid. 
  3. Teleport 5. 
  4. Teleport End. 
  5. Step to the right. 
  6. Teleport 5.

Рассуждение

Из-за того, что оба робота программируются одной и той же программой, мы можем двигаться только в одну сторону, в этом главная проблема. Каким-то образом нужно создать ситуацию, в которой один робот будет догонять другого.

Выбираем право и ждём, пока один из костюмов не встретит чёрный астероид — это первые две строки программы.

При однонаправленном движении только один костюм встретится с чёрным астероидом

До встречи с чёрным астероидом оба костюма двигались с одинаковой скоростью — они проходили один астероид за две секунды: одну секунду занимала первая команда (Step to the right) и одну секунду — вторая (If black asteroid). Теперь эту скорость сохраняет только один костюм — тот, что не встретил чёрный астероид. 

Второй костюм ускоряет движение за счёт команды Teleport 5. Он может за две секунды пройти два астероида — двигается в два раза быстрее первого костюма.

После нахождения чёрного астероида один костюм в два раза быстрее другого

Костюмы двигаются в одну сторону с разной скоростью — это значит, что найдётся конечная точка, где они встретятся и уничтожат друг друга. Финал!

Задачка на алгоритмы: уничтожить роботов

Текст

Александр Бабаскин


Редактура

Максим Ильяхов

Корректор

Ира Михеева


Иллюстратор

Даня Берковский


Вёрстка

Маша Дронова


Соцсети

Олег Вешкурцев


Во имя

памяти Тони Старка

Вам может быть интересно
Андрюха, у нас логика! Возможно, криминал
Андрюха, у нас логика! Возможно, криминал

Логическая задача о преступности.

easy
Задача для дата-сайентистов
Задача для дата-сайентистов

Это будет сложно.

medium
Задача на импортозамещение
Задача на импортозамещение

Немного логики, капля математики и много любви к российским фермерам.

medium
Интересная задача на логику про ключи и пессимиста
Интересная задача на логику про ключи и пессимиста

Ищем самые неудачные попытки

easy
Странная задача про сумму и умножение
Странная задача про сумму и умножение

Некоторые говорят, что её можно решить в уме, но мы что-то сомневаемся

easy
Детская задача про цифры на пирамиде, которая может поставить в тупик половину взрослых
Детская задача про цифры на пирамиде, которая может поставить в тупик половину взрослых

Используем логику и холодный расчёт

easy
Задача про ШОК-КОНТЕНТ: можно доказать, что 2 + 2 = 5!
Задача про ШОК-КОНТЕНТ: можно доказать, что 2 + 2 = 5!

Добавить нечего

easy
Новогодняя задача: сообщение, которое расшифруют не все
Новогодняя задача: сообщение, которое расшифруют не все

Вскрываем маршрут Деда Мороза

medium
Морфеус и математика против агентов Матрицы
Морфеус и математика против агентов Матрицы

Чтобы победить, не нужно уворачиваться от врагов в слоу-мо. Иногда нужно просто знать теорию вероятностей.

easy
medium