Загадка1

Вы находитесь в кольцевом коридоре неизвестной длины. Через каждые 2 метра расположены лампочки с выключателями. В начальный момент лампы включены в случайном порядке. Ваша задача — определить длину коридора, управляя включением/выключением лампочек

Лига электриков

5.9K постов26.2K подписчика

Правила сообщества

Запрещён оффтоп, нарушение основных правил пикабу

Не знаю как upd прикрепить к посту. Ответ может быть таким:

1. Выбираю направление. Выключаю* свет одной лампы позади себя.

2. Включаю свет первой (N) лампы по ходу следования.

3. Возвращаюсь в той лампе которая была позади (отчитывая N позиций назад) - посмотреть включилась ли она.

4. Повторяю для N+1, включаю*

5. Возвращаюсь, проверяю

6. Повторяю в цикле пп 4 и 5

7. Если лампа после возвращения включилась, то это значит, что я сделал полный круг, и вернулся к лампе с другой стороны.

* если состояние лампы совпадает, с намерением, состояние менять не нужно.

вторая часть задачи: как оптимизировать алгоритм, чтобы минимизировать число хождений.

комментарии (5)
0
Автор поста оценил этот комментарий
# Начальная инициализация
шаги = 0
начальная_позиция = текущая_позиция()
встретил_помеченную_лампу = False

# Шаг 1: Найти первую включённую лампу и выключить её (пометить)
если лампа включена:
выключить_лампу()
иначе:
включить_лампу() # Помечаем как особую (ON)
отметить_пометку = True

# Шаг 2: Начинаем движение по коридору
перейти_к_следующей_лампе()

пока не встретил_помеченную_лампу:
шаги += 1

если лампа включена:
выключить_лампу()
иначе:
# Лампа выключена — возможно, мы её выключили раньше
# или это изначально выключенная
ничего_не_делать()

перейти_к_следующей_лампе()

если текущая_позиция() == начальная_позиция:
если лампа включена:
встретил_помеченную_лампу = True

# Шаг 3: Вывод длины коридора
длина_коридора = (шаги + 1) * 2 # +1 потому что вернулись к началу
вывести("Длина коридора:", длина_коридора, "метров")
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

это что за ИИ?

показать ответы
0
Автор поста оценил этот комментарий

тс, я не увидел в комментах ответа, который тебя устроил бы, попытаю счастья со своим:

1. Прогоны

Идем вперед до выключенной, считаем x отрезков, запоминаем n ламп которые прошли, включаем ее, разворачиваемся.

Идем назад до выключенной, считаем x, запоминаем n, выключаем.

Идем вперед до выключенной…….. до тех пор, когда текущее количество шагов x сделанных по включенным лампам не будет резко увеличившимся, например в два раза больше n предыдущего, тогда предположительно мы включили все лампы

2. Проверка

Разворачиваемся, делаем маркер из двух выключенных подряд, идем до двух подряд выключенных ламп, запоминаем n…. Если n<x из последнего прогона по включенным лампам, то длина n*2 метра. Если n>x - продолжаем прогоны


Дай связь, насколько далеко от правильного?))))

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

туда-сюда. правильный подход. сейчас опубликую простой вариант формулирования алгоритма

показать ответы
1
Всем ЖаБЪ!
Автор поста оценил этот комментарий

Начинаешь обход кольца, включая/выключая лампы в порядке 01011011101111, до момента, пока предположительно не достигнешь начала своего пути. Далее круг можно повторить в качестве контрольного исследования, однако, с учётом знания количества видимых ламп, общее количество пересчитанных ламп и ориентировочную ширину коридора, в этом необходимости не будет.

Есть возможно более длинный путь, но он уже без допусков:

1. Погасить лампу. N=1
2. Пройти до следующей погашенной лампы, добавляя к N количество пройденных ламп
3. Зажечь погашенную лампу.
4. Вернуться обратно на N ламп к начальной.
5. Если начальная лампа не зажглась, пройти обратно путь на N ламп вперёд к последней зажжённой тобою лампе и перейти к п.2
6. Иначе - задача решена, N = количество ламп в коридоре.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

"предположительно"? "Далее путь можно ПРОДОЛЖИТЬ... Далее в случайной последовательности, повтор Вашей последовательности. Вы уверены это второй круг, а это первый.

Второй путь правильный, но тут есть совсем короткая модификация этого алгоритма.

1
надпись на курточке
Автор поста оценил этот комментарий

ты тут условия на ходу не меняй - на картинке написано как посчитать длину коридора используя только вкл выкл и 2 метра между лампами)

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

когда напишешь новую картинку то и решение будет другим.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

не выдаст, это доп условие, для особо одарённых (это же ты?) после понимания исходного решения

показать ответы
0
надпись на курточке
Автор поста оценил этот комментарий

вот не дал мне дописать)


3 для особо упоротого ТС, который скажет что лампы рандомно включатся в нужной мне последовательности

делаем сначала вариант 1, находим стартовую точку, считая лампы на контрольном круге, а потом сразу же от стартовой точки делаем вариант2, который уже можно заранее рассчитать, в какой точке круг замкнется. делаем, проверяем, еще раз контрольно считаем лампы.

4 если ТС все еще упорот, то берем еще одну последовательность и делаем третий проход с контрольным подсчетом.


неинтересно потому что количество кругов не ограничено. обычно в таких задачах всегда есть условие "как за наименьшее количество попыток сделать это"

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

специально для тебя, как найдёшь уже мелькавший ответ: каков алгоритм для прохождения наименьшего расстояния для ответа на вопрос загадки

показать ответы
6
Автор поста оценил этот комментарий

Мотаться туда-сюда, включая/выключая лампочки впереди и проверяя их состояние сзади. Точный алгоритм придумывать лень.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Бинго!

6
Автор поста оценил этот комментарий

Мотаться туда-сюда, включая/выключая лампочки впереди и проверяя их состояние сзади. Точный алгоритм придумывать лень.

раскрыть ветку (1)
Автор поста оценил этот комментарий

как теперь наискорейшим образом посчитать длину ?

показать ответы
1
надпись на курточке
Автор поста оценил этот комментарий

неинтересно

1. включаешь лампу. следующую выключаешь. потом 2 включаешь 2 выключаешь. 3 включаешь 3 выключаешь. повторить до кондиции, пока не встретишь начало своего же паттерна. после этого сделать контрольный круг.

2. начинаешь включенными лампами создавать последовательность фибоначчи, разделяя лампы выключенными, пока не встретишь начало последовательности. после этого сделать контрольный круг.

раскрыть ветку (1)
Автор поста оценил этот комментарий

а как поймёшь что это начало твоего патерна? а не кусок случайной последовательности, повторяющей патерн. неинтересно

показать ответы
3
Автор поста оценил этот комментарий
Разве это математическая задача? На логическое мышление же?
раскрыть ветку (1)
Автор поста оценил этот комментарий

мат

3
Автор поста оценил этот комментарий

Из максимально простого :

1) сделать "особый" участок из 10 выключенных ламп подряд.

2) дальше все лампы включать, пока не наткнешься на 10 выключенных ламп подряд.

3) включить 1 из 10 ламп и вернуться назад к исходному "особому" участку

4) если там тоже стало 9 ламп вместо 10, значит сделан полный оборот в тоннеле

раскрыть ветку (1)
Автор поста оценил этот комментарий

как не спутать этот участок, со случайными десятивключенными

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества