Итак, задача. Несколько чатов (программерских) потратили по 40 минут на решение. Посмотрим получится ли у вас. =) В одномерной плоскости (прямая) в случайных позициях стоят двое хакеров. Под каждым есть метка приземления (обозначим как X1 и X2). У хакеров не всё впорядке с головой, так что они могут только двигаться, разворачиваться, изучать окружающее пространство (варианты: ничего, метка, другой хакер). Дальность зрения - 1 клетка. Задача: написать алгоритм, который позволит хакерам встретиться. Все бы было просто, но у хакеров нет памяти. Вообще. Т.е. какие-то переменные и предыдущие состояния они хранить не умеют. Хакеры не могут передать друг-другу информацию о своём положении. UDP: Схема начального расположения UDP: Правильный ответ дал PvgValo (4-я страница темы):
повтор если Х2 < X1 то 1хакер.позиция -1 и 2хакер.позиция +1 если Х2 > X1 то 1хакер.позиция +1 и 2хакер.позиция -1 до того как впереди хакер
У них нет носов. И ртов тоже нет. У них есть только примитивные глаза, которые видят на одну клетку, и есть ноги, которые еле-еле ходят. А еще у них нет памяти. Дегенераты в общем.
1 хакер всегда стоит на месте. 2 всегда идет в одном направлении. Если 2 не дошел до 1 - запускаем заново, только в другом направлении. Или через n ходов если не встретил, то разворачиваем и идем n+n
1. Это ник чему не приведёт. 2. Перезапуск не допущен. Они рандомно размещаются, так что это дело случая. Алгоритм должен их встречать, не исходя из случая.
Опять же решение зависит от случая. Но существует решение, которое от этого не зависит. =) Все забыли про метки, которые остались.
если взять за объект хакер №1, с меткой X1, когда-то он достигнет либо метки X2, либо другого хакера. они всё равно встретятся, если настоящий рандом.