Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Загадка про поезд (http://www.flasher.ru/forum/showthread.php?t=212353)

undefined 24.01.2016 19:33

где границы цикла?Я вот до сих пор не могу вникнуть как он работает

miramax 24.01.2016 19:39

Сообщение от miramax
n = 0;
while (true)
{
n++
идём влево на n
если в вагоне -n+1 (который мы точно выключали) - свет горит - значит кол-во вагонов
return n*2+1
вагон -n - выключаем свет

возвращаемся в начальную точку на +n вагонов, в нулевой вагон
идём вправо на n вагонов
влючаем свет

возвращаемся в исходную точку на -n вагонов.
}

Согласен - вариант, с проверкой нулевого вагона - понятнее

Korchy 25.01.2016 11:22

Я наверное совсем тупой не умею мыслить алгоритмически, но совершенно не понимаю, чем решение с псевдокодом в принципе отличается от вариантов предложенных ранее.

undefined 25.01.2016 12:39

а какие раньше варианты были? Потрогать лампочку?Решения нет?

Добавлено через 10 минут
Цитата:

Сообщение от miramax (Сообщение 1191176)
Сообщение от miramax
n = 0;
while (true)
{
n++
идём влево на n
если в вагоне -n+1 (который мы точно выключали) - свет горит - значит кол-во вагонов
return n*2+1
вагон -n - выключаем свет

возвращаемся в начальную точку на +n вагонов, в нулевой вагон
идём вправо на n вагонов
влючаем свет

возвращаемся в исходную точку на -n вагонов.
}

Согласен - вариант, с проверкой нулевого вагона - понятнее

И все же сложность тут квадратичная т.к. имеется вложенный цикл(идём влево на n).

alatar 25.01.2016 14:32

Вот самый вменяемый алгоритм.

Psycho Tiger 25.01.2016 19:15

Мне понравилось решение @miramax. Кратко и понятно. Оптимизировать – смысла нет, в реальной жизни можно в вагоне, например, блевануть, в программировании – поставить другие метки.

undefined 25.01.2016 19:18

тем не менее у него квадратичная сложность

Psycho Tiger 26.01.2016 22:20

Неуверен насчет квадратичной, возможно больше.
Но кого это волнует? :D Включай по 10 лампочек за раз и наворачивай круги, раз ты оказался в таком поезде.

Если мы говорим о программировании, то, формализовано, у нас двусвязный список и чтобы посчитать вагоны – достаточно сравнивать ссылки/указатели вагонов с линейной сложностью. Нет указателей? Иметь указатель на "текущий" вагон и на "первый" и с линейной сложностью "телепортироваться" из вагона в вагон.


Часовой пояс GMT +4, время: 12:03.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.