Случайный лифт
Представим себе ситуацию, что мы находимся в необычном многоэтажном доме, где нет лестниц, а лифт работает по странному принципу. Если вызвать лифт с любого этажа, то невозможно определить, на каком этаже он находится в данный момент, поскольку на всех этажах отсутствует табло индикации (есть только кнопка вызова). В кабине лифта есть только кнопки "вверх" или "вниз", при нажатии на которые мы, соответственно, либо поднимаемся на случайное количество этажей, либо спускаемся на случайное количество этажей. Если мы находимся на первом этаже, то при нажатии на кнопку "вниз" двери не закроются. То же самое произойдёт при нажатии на кнопку "вверх" на последнем этаже. Известно также, что лифт передвигается с постоянной скоростью.
Необходимо выйти из этого лифта на любом (n-ом) этаже и определить, на каком этаже мы находимся. При этом необходимо учесть следующие условия:
1) Выходить из кабины лифта можно только один раз - на n-ом этаже.
2) Нельзя ни у кого в доме ничего спрашивать.
3) При открытии дверей лифта видна только "голая" стена: без окон, без номера этажа, без дверей квартир, без номеров почтовых ящиков и без прочей информации, которая хоть как-то бы могла подсказать номер этажа. Как бы мы ни пытались высунуть голову из кабины лифта, не покидая её, мы увидим только "голую" стену.
Каким образом можно определить, на каком этаже мы находимся?
Ответ: Если мы находимся на произвольном этаже, то алгоритм будет выглядеть так:
1. Нажимаем кнопку "вверх" до тех пор, пока не доедем до последнего этажа, либо нажимаем кнопку "вниз" до тех пор, пока не доедем до первого этажа. Мы поймём, что мы находимся на последнем (первом) этаже, когда после очередного нажатия на кнопку двери не закроются.
2. Едем в обратном направлении, но уже отмеряя время пути лифта от первого до последнего этажа (или от последнего до первого этажа), после чего вычисляем скорость лифта (количество секунд, за которое он преодолевает расстояние в один этаж).
3. Теперь, засекая время после нажатия на ту или иную кнопку, мы можем однозначно сказать, на какой этаж нас привезёт лифт.