Неизвестное число вагонов сцеплено между собой по кругу. Необходимо посчитать количество вагонов находясь внутри. Проходя через вагоны мы только можем включать или выключать свет. Вначале свет горит случайным образом.
[spoiler show=”Посмотреть ответ”]
Задача решается при помощи следующего алгоритма:
1. В первом вагоне включаем или оставляем гореть свет.
2. Идем вперед, считая вагоны, до вагона с горящим светом.
3. Выключаем свет, и идем назад в первый вагон, производя обратный отсчет.
4. Если вернувшись, мы обнаружим, что в первом вагоне свет выключен, то мы прошли полный круг и все вагоны подсчитаны. Если свет горит – переходим к п.2 нашего алгоритма.
[/spoiler]
Логическая задача. Вагоны.
6 комментариев для “Логическая задача. Вагоны.”
Обсуждение закрыто.
Что-то я не понял смысла загадки… По-моему, она вообще безсмысленна…
Как понять “проходя через” вагоны? С круга вылазить можно?
Приткнуться спиной к одному из вагонов и начать считать, в последним будет тот который у нас за спиной) С вет не нужен
Вы находитесь внутри вагона и переходите из вагона в вагон через сцепку.
Побольше таких задач выкладывайте. Такие задачи на сообразительность задают в yandex на собеседовании.
Да че то нифига не правильной это алгоритм решения. Не знаю как она решается на самом деле, но по этому алгоритму откуда ты будешь знать что мы вернулись в первый вагон в котором горит свет. Вот оставляем мы в вагоне свет(в котором находимся) и начинаем идти вперед.Дошли до любого где включен свет,выключаем,идем назад считая вагоны, доходим до нашего где горит свет. Теперь опять идем вперед до следующего с горящим светом,а если этот следующий окажется тем первым вагоном в котором мы оставили свет включенным,мы же не поймем что прошли круг, выключим в этом вагоне свет тоже,и пойдем назад считая вагоны, вот только получиться что уже не в одном вагоне свет гореть не будет, и мы не будем знать прошли мы полный круг или нет, и соответственно посчитать их тоже не сможем.
Алгоритм правильный.
Цитата: “Вот оставляем мы в вагоне свет(в котором находимся) и начинаем идти вперед.Дошли до любого где включен свет,выключаем,идем назад считая вагоны, доходим до нашего где горит свет. Теперь опять идем вперед до следующего с горящим светом,а если этот следующий окажется тем первым вагоном в котором мы оставили свет включенным,мы же не поймем что прошли круг, выключим в этом вагоне свет тоже,и пойдем назад считая вагоны…”
И вернемся в первый вагон, и увидим горит там свет или нет, и поймем прошли мы полный круг или нет.
Вся суть алгоритма в возврате назад в первый вагон и проверке горит там свет или нет. Если при возврате свет не горит значит мы прошли полный круг.