Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача о двух роботах.
Форум «Всё о Паскале» > Другое > Свободное общение
klem4
Всем привет. Коллега рассказал одну задачу, которую ему задали на одном из собеседований, мне она очень понравилась. Возможно многие ее знают, тем не менее выкладываю условие:

Имеем одномерную планету. Над ней летит самолет, десантирует сначала первого робота, затем второго. Роботы ничего не знают ни друг о друге ни о самолете (в какую сторону летел, кого сбросил первым, на каком расстоянии, в общем ничего). Робот может двигаться вправо или влево (назад и вперед то есть), при этом он может оценить что находится в той точке, на которую он встал, а это может быть
1) просто земля
2) парашют (свой от чужого не отличает)
3) другой робот

Задача: написать алгоритм перемещения (который будет применен к обоим роботам одновременно после высадки последнего) робота, таким образом, чтобы они встретились со 100% вероятностью.

Я задачу решил, если понадобится выложу ответ. Задача легкая, но по мне очень забавная. Удачи.



Решения просьба оформлять в спойлер.
Unconnected
Интересно. А "одномерная планета" - границы, начала координат имеются или она бесконечная во все стороны? Самолёт, я так понял, сбросил их на одной "линии", раз они только вперёд-назад ходят. И ещё вопрос, вот когда робот только приземлился, это считается за событие, что он наступил на парашют?)
klem4
Цитата
Интересно. А "одномерная планета" - границы, начала координат имеются или она бесконечная во все стороны?


Бесконечная прямая.

Цитата
Самолёт, я так понял, сбросил их на одной "линии", раз они только вперёд-назад ходят.


Именно так.

Цитата
И ещё вопрос, вот когда робот только приземлился, это считается за событие, что он наступил на парашют?)


Пожалуй нет. Не знаю. Это не существенно smile.gif. Алгоритм (одинаковый у обоих) включается как только приземлится второй из них.
Unconnected
Я придумал) Может, немного извращенно, но всё же:

Жди меня (Показать/Скрыть)
Lapp
Приятная задачка. как раз для программерских мозгов smile.gif.
У меня есть несколько вопросов.. Думаю, их нет смысла прятать.
Не совсем ясно, что умеет робот. Ясно, например что он должен уметь двигаться на определенное расстояние, иначе задача не очень осмыслена. Наверняка он может менять направление на противоположное. А вот может ли он, скажем, измерить пройденное расстояние, а затем произвести с ним математические действия (умножить/поделить на 2, например). Может он запомнить, что уже нашел один парашют и отличить другой найденный от первого? Может он запомнить, где был парашют и вернуться к нему? И еще один очень важный вопрос: могут два парашюта лежать в одной точке? Если да, то может ли робот распознать такую ситуацию? Может он хотя бы запомнить, что уже нашел один парашют? В зависимости от ответов на эти вопросы алгоритм может меняться..

Два возможных алгоритма (Показать/Скрыть)


Добавлено через 5 мин.
Решение, требующее минимум предположений (как мне кажется)) (Показать/Скрыть)


Добавлено через 6 мин.
Unconnected, так не пойдет )).

Опровергающий пример (Показать/Скрыть)


Добавлено через 8 мин.
Я очень извиняюсь, спутал ники sad.gif. Видел ник Rathar'а в теме, ну и автоматически распространил его на сообщение..
Исправлено. Извините, буду внимательнее )).
Unconnected
Пойдёт-пойдёт (Показать/Скрыть)
Lapp
Ответ на Пойдёт-пойдёт (Показать/Скрыть)

-Unconnected-
Не исправленная, а дополненная rolleyes.gif
SKVOZNJAK
Запутанное условие, только сейчас дошло что планета не абсолютно круглый шар. Опять же возможности роботов не известны, предположу что это всё таки роботы а не тачка с камнями на вечном двигателе.
Спойлер (Показать/Скрыть)

SKVOZNJAK
ыыыы
TarasBer
Спойлер (Показать/Скрыть)
Lapp
Цитата(-Unconnected- @ 2.02.2010 10:00) *
Не исправленная, а дополненная rolleyes.gif
Ага. Напиши универсальную программу:
begin
end.
- и дополняй ее.. А можно еще и всех в плагиате обвинить: взяли твой код и дополнили! И ведь даже изменить не попытались, наглые такие ))


klem4
Решение 1.

Спойлер (Показать/Скрыть)


Решение 2.
Спойлер (Показать/Скрыть)


Задача #2 на подходе.
Lapp
Цитата(klem4 @ 3.02.2010 20:55) *
мужик с гаечным ключом и они встретятся на местном радио рынке.
lol.gif Одномерный ключ на 12? smile.gif Мужик будет о двадцати семи пальцах с одиннадцатью суставами каждый, растущими из шеи.. Но тоже одномерный! smile.gif

Цитата
Робот ... считает сколько парашютов
Есть решение, не требующее подсчета парашютов! см. пост #5.

Цитата
Задача #2 на подходе.
Ждем с нетерпением! yes2.gif

klem4 +1
Unconnected
Цитата
Решение, требующее минимум предположений (как мне кажется)) (Показать/Скрыть)



Lapp, так не пойдёт ))

Робот делает шаг вперёд, потом шаг назад, находит парашют и опять сначала, делает шаг вперёд... Если, конечно, под "начальной амплитудой" подразумевалась постоянная величина.

Да-да, klem4, спасибо, может, теперь на работу возьмут..))
Lapp
Цитата(Unconnected @ 3.02.2010 23:45) *
Lapp, так не пойдёт ))

Робот делает шаг вперёд, потом шаг назад, находит парашют и опять сначала, делает шаг вперёд... Если, конечно, под "начальной амплитудой" подразумевалась постоянная величина.
smile.gif робот помнит последний найденный парашют (то есть место, где он найден) и игнорирует его. Я согласен, это некая фича, которая может быть не реализована в его прошивке..
Я не знаю, что лучше: считать парашюты или помнить, где нашел)).

Добавлено через 17 мин.
Собственно, это практически эквивалентно подсчету. Признаю )).
klem4
Спойлер (Показать/Скрыть)
Unconnected
Спойлер (Показать/Скрыть)
SKVOZNJAK
klem4, со вторым твоим решеним не всё ясно. В задании говорится о 100% вероятности встречи, но если они высадятся на кольце симметрично в нужное время, то и действовать станут симметрично - могут и не встретиться.
Unconnected
Кольца нет, есть
Цитата
Бесконечная прямая.
SKVOZNJAK
А в кольце прямая разве имеет конец? К тому же бесконечно огромная в длину планета называется галактикой, вселенной, туннелем, свёрнутым измерением но никак не планетой. Опять тест на "угадай мою логику".
klem4
SKVOZNJAK, не придирайся))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.