Entry tags:
Задачка
В глубине детского хлама безнадёжно затеряны старые наручные электронные часы. Раз в час они пищат. Полсекунды. Время на часах сбито, поэтому пищат не в точное время. Когда именно - всякий раз забываю засечь. Пищат уже третий месяц. Батарейки, судя по всему, хватит ещё надолго. Как бы эту звучалку изловить?
Нет, правильного ответа я и сам не знаю.
Нет, правильного ответа я и сам не знаю.
no subject
тоже найти не могу уже полгода.
no subject
С часами хуже: перекладывать придётся по одной вещи в час. :-)
no subject
no subject
no subject
Скажите еще спасибо, что это не пушистые детские игрушки. Сваленные на моем балконе, они часто просыпаются среди ночи и начинают петь Чебурашкины песни, или кричать Fire! Fire!
no subject
http://community.livejournal.com/malyshi/8731351.html
:)
no subject
Еще мотоцикл там на балконе под порывом ветра съехал среди ночи, кнопка нажалась и он стал орать свою сигнализацию. Два часа молча проклинала тех, кто не может к машине подойти, пока не сообразила, что это у меня.
no subject
no subject
no subject
no subject
no subject
Если часы находятся между вещами, предлагаю ленивый вариант: три кучи, из исходной кучи каждый раз перекладывать по паре вещей в промежуточную кучу, ждать следующего писка. Если он из промежуточной кучи -- разобрать (ведь там всего пара вещей) и решить проблему. Если он из конечной кучи, то бить себя по рукам и начать алгоритм сначала. Если писк в исходной куче, то промежуточную кучу отметить как чистую, перекинуть её в конечную кучу, выполнить следующий шаг алгоритма. Можно очевидным образом доработать алгоритм, и в результате доработки и нехитрых логических построений доказать корректность и завершимость данного алгоритма. Требует всего O(1) места (3 кучи)!11 Оптимизировано под лень и под малочисленность промежуточной кучи.
Если есть три равноправных места (одно чуть побольше), то можно в качестве предусловий шага алгоритма рассматривать случай: вещи распределены на три кучи, в одной из которых точно нет часов, в двух остальных они с вероятностью 1/2. В начале алгоритма -- одну кучу оставить пустой (та, в которой точно нет часов), а все вещи распределить на две кучи (которые по 1/2).
no subject