S S>Допустим мы умеем отсчитывать время x меньшее 16 минут. S>
S>x < 16
S>
S>Нам потребуется знать точно сколько времени содержится в этих x. Для этого отмерим целое количество интервалов x, таких, чтобы они укладывались в целое число интервалов по 16 минут, то есть,
Каким образом мы умеем его отсчитывать?
Один раз мы можем его отмерить — перевернув часы в произвольный момент. А как добиться повторяемости?
Здравствуйте, Garrett, Вы писали:
G>Здравствуйте, Spiceman, Вы писали:
G>S S>>Допустим мы умеем отсчитывать время x меньшее 16 минут. S>>
S>>x < 16
S>>
S>>Нам потребуется знать точно сколько времени содержится в этих x. Для этого отмерим целое количество интервалов x, таких, чтобы они укладывались в целое число интервалов по 16 минут, то есть,
G>Каким образом мы умеем его отсчитывать? G>Один раз мы можем его отмерить — перевернув часы в произвольный момент. А как добиться повторяемости?
Как добиться повторяемости я так же написал:
Как откладывать интервалы по x минут.
Перевернем первые часы. Через некоторое время (это и будет время x) меньшее 16 перевернем их обратно и одновременно перевернем вторые часы. Переворачивая первые и вторые часы таким образом можно отсчитывать интервалы по x минут.
Третьи часы нам пригодятся для отсчитывания интервалов по 16 минут.
То есть, чтобы откладывать произвольный отрезок x необходимо использовать двое часов.
Здравствуйте, tantrum, Вы писали:
T>Здравствуйте, baily, Вы писали:
B>>Здравствуйте, Нэчер, Вы писали:
T>По моему, ваш вариант принципиально мало отличается от "подсчета песчинок". Вы замеряете уровень песка на глазок.
Нет. Там все корректно. Проверка того, что уровни совпадают — корректная операция. Во всех других решениях это использовали. В математическом понимании она дает абсолютную точность. На практике, понятно, что люди делали бы на глазок и получили бы вполне нормальную точность. Под фразой "на глазок" как раз и подразумевается, что не производится сравнения с уровнем песка в других часах.
Еще раз! Если в часах разрешено пересыпать песок из одних часов в другие ( а в реальных часах так и есть), то мое решение подходит.
Здравствуйте, Spiceman, Вы писали:
S>Здравствуйте, baily, Вы писали:
S>Ты или не внимательно прочел мое сообщение, либо не понял суть алгоритма. Число песчинок в моем алгоритме не считается. Я это привел лишь в примере, чтобы было более понятно сам алгоритм. S>Суть алгоритма состоит в том, чтобы за конечное число шагов получить 8 минут в одних их часов. Количество шагов в итоге зависит от того, сколько песчинок находится в часах, так как это число влияет на решение уравнений в целых числах. Сами уравнения я полчил не используя этого значения. И врешении уравнений оно также не фигурирует. Но все равно влияет на количество шагов в алгоритме.
Подобное решение уже приводилось. Был приведен алгоритм, который быстро делил песок в часах пополам с любой, наперед заданной точностью. Вы просто указали, что так как мы на практике имеем дело с песком, то там конечное число песчинок, и в результате алгоритм не будет бесконечным.
S>И не надо умничать.
Ну не относитесь слишком серъезно к шуточной задаче.
Здравствуйте, tantrum, Вы писали:
T>Здравствуйте, Нэчер, Вы писали: T>4) Когда 16 минут пройдет на часах №1, в нашей конструкции из часов 2 и 3, за счет того, что каждая пещинка там проходит разделит. трубочку два раза, ровно половина песка будет на дне часов №3.
Неправильно. На дне часов №3 будет весь песок
Раз уж вы воспользовались идеей о снимании крышечек, то решение есть здесь
Здравствуйте, baily, Вы писали:
B>Нет. Там все корректно. Проверка того, что уровни совпадают — корректная операция. Во всех других решениях это использовали.
Не-не-не.
В моем решение сравниваются не уровни, а фиксируется факт, что в обоих часах упала последняя песчинка. Это разные вещи и последняя проверяется гораздо проще.
Кстати, с помощью моего решения можно отсчитать не только 24 минуты, но и любое произвольное число минут.
Например, требуется отсчитать 26 минут. Тогда нам потребуется в одних из часов получить 10 минут (или 6 минут). Для этого достаточно решить уравнение
16*m*b = (16*n — q)*a
в целых числах m и n, где a и b получены экспериментально, а q = 10 или 6.
То есть, мы можем отмерить произвольное число минут q < 16 и использовать их для отсчета произвольного интервала времени.
Здравствуйте, baily, Вы писали:
B>Ну не относитесь слишком серъезно к шуточной задаче.
Согласен, что в этом топике есть и другие шуточные решения.
А что Вы имеете ввиду под "шуточной задачей"? Задача имеет вполне определенное точное решение, которое я привел.
А отношусь я к подобным задачам серьезно, так как это хорошая разминка для мозгов и решение этой задачи может пригодиться при решении других задач.
Вы ведь не относились к задачам в институте или школе как к шуточным. Эта задача ничем не хуже. Спасибо автору.
Здравствуйте, Нэчер, Вы писали:
Н>Пусть имеется трое одинаковых песочных часов на 16 минут каждые. Н>Как точно(не на глаз)отмерить 24 минуты?
Сабж.
Отдельно отмечу, что разбирать/поджигать =)/считать песчинки -- не нужно.
Допустимые действия -- переворачивать и класть набок.
И еще одно. Решение задачи может быть получено двумя путями:
1. получить 8 минут в одной из склянок и только потом замерить 24 минуты
2. сразу замерить 24 минуты из состояния 16/0 16/0 16/0
Здравствуйте, Нэчер, Вы писали:
Н>Пусть имеется трое одинаковых песочных часов на 16 минут каждые. Н>Как точно(не на глаз)отмерить 24 минуты?
Допустим, что нам необходимо найти метку на нижней колбе, такую, что время наполнения часов до этой метки равно 8ми минутам.
Для этого сделаем следующее. Начнем отмерять время на часах. Где-нибудь посередине (на глаз) процесса пересыпки песка, начинаем измерять время вторыми часами, а на первых засекаем уровень пересыпанного песка и переворачиваем первые часы. Когда первые часы пересыпятся, смотрим на уровень вторых часов. Если он ниже отмеченного на первых, значит первые часы были перевернуты позже 8ми минут. Таким образом, используя двоичный поиск, можно отмерить интервал с точностью до 2^(число измерений).
Здравствуйте, NotImplemented, Вы писали:
NI>Здравствуйте, Нэчер, Вы писали:
Н>>Пусть имеется трое одинаковых песочных часов на 16 минут каждые. Н>>Как точно(не на глаз)отмерить 24 минуты?
NI>Допустим, что нам необходимо найти метку на нижней колбе, такую, что время наполнения часов до этой метки равно 8ми минутам.
По условию нечем ставить метки! Нет ни фломастера, ни губной помады )))
Re: Песочные часы
От:
Аноним
Дата:
15.10.08 16:23
Оценка:
Здравствуйте, Нэчер, Вы писали:
Н>Пусть имеется трое одинаковых песочных часов на 16 минут каждые. Н>Как точно(не на глаз)отмерить 24 минуты?
16*3 = 48 = 24*2
Т.е. можно отмерить 24 минуты за один присест если в каждый момент времени двое часов будут "идти" (а одни соответственно "стоять"). В "обратную сторону" часы пускать не придется.
Тут я совсем красивого подхода придумать не могу, но можно сделать так (нужна ловкость рук ):
1. 0|0|0 — "пускаем" первые и вторые часы на некоторое время (для максимальной эффективности желательно на половину оставшегося, но можно и меньще, но не больше)
2. Через некоторое время "останавливаем" часы (кладем набок) любые из двух "идущих" засекая (отмечая пальцем) их уровень одновременно пуская "стоящие": (X|X|0)
3. Ждем пока "остающие" догонят "стоящие" (X|2*X|X), останавливаем "самые продвинутые" (2*X), отмечая их уровень и пускаем стоящие
4. Ждем пока отстающие синхронно догонят "лидера": (2*X|2*X|2*X)
Если "квант переключения контекста" выбрать достаточно маленьким, в таком стиле можно дождаться решения (N*X|N*X|N*X), но для эффективности (чтобы руки переворачивать не устали) желательно чтобы X был переменным и -> (t-оставшееся / 2) но не превышал бы его.
Пример (не особо эффективный):
0|0|0
3|3|0 <- 3 минуты ждали
3|6|3
6|6|6
10|10|6 <- а тут получилось X = 4 минуты
10|14|10
14|14|14
15|15|14
15|16|15 <- угадали с одной минутой для краткости примера
16|16|16
Уверен, что тут есть более простой и красивый путь держать 2-е часов "идущими"..
Здравствуйте, baily, Вы писали:
B>Здравствуйте, tantrum, Вы писали:
T>>Здравствуйте, Нэчер, Вы писали: T>>4) Когда 16 минут пройдет на часах №1, в нашей конструкции из часов 2 и 3, за счет того, что каждая пещинка там проходит разделит. трубочку два раза, ровно половина песка будет на дне часов №3.
B>Неправильно. На дне часов №3 будет весь песок
Не соглашусь с вами . Можете доказать?
Если принять то, что вы правы, за факт, то получается, что одной пещинке, для того чтобы пройти 2 песочных часов требуется ровно столько же времени сколько ей требуется чтобы пройти 1 песочные часы.
немножко несогласуется со здравым смыслом и элемент. физикой.
Здравствуйте, Нэчер, Вы писали:
Н>Пусть имеется трое одинаковых песочных часов на 16 минут каждые. Н>Как точно(не на глаз)отмерить 24 минуты?
В целом следует, IMHO, заметить, что никто не обещал, что песок сыплется равномерно. Что если насыпать песка в два раа больше, то будет в два раза дольше и т. п.
В частности, IMHO, нельзя утверждать, что если поставить часы, и подождать 1 минуту, а потом их перевернуть, то весь песок вернётся обратно тоже за минуту. IMHO естественне ожидать того, что песок, на который сверху давит доп. слой песка, высыпается быстрее.
То есть первая половина песка высыпается за меньшее время, чем вторая...
Правда не совсем понятно, какие именно предположения о часах принимали авторы задачи.
Но если только такие, то это обозначает, что часы можно только останавливать и запускать дальше.
То есть всё что мы можем -- это поставить в ряд 3 часов и дальше какие-то из них запускать, а какие-то оставнавливать.
Это, IMHO, сильно ограничивает круг поиска решений...
Скажем кроме как запустить пару часов, а потом сидеть и смотреть на это дело и время от времени они из часов останавливать, одновременно запуская дургие. При этом нужно стремиться к тому, чтобы остановленны были всё время те часы, в которых меньше всего песка осталось...
В пределе мы получим, что во всех трёх часах останется ровно 0 песка оновременно, то есть мы отмерим 24 минуты
Если мы можем точно сравнивать уровень песка в часах, то можно применить такой ещё труюк:
Запустить часы 1 и 2. Подождать примерно 1 минуту. Потом часы номер 1 остановить, одновременно запустив часы 3 и подождать пока в часах номер 3 не останется столько же песка, сколько было в 1. В результате мы получим, что в часах 1 и 3 осталось на то самое время больше песка, на сколько мы ждали вначале с 1 и 2. Если верно предположение, что с уменьешением количства песка в верхней колбе скоростьего его истечения не возрастает, что можно этот алгоритм модифицировать до такого:
1) (Inv: количество песка во всех тёрх часах одинаково) Запускаем 1 и 2. Ждём пока пересыплется половина песка.
2) 2 отсанавливаем, запускаем 3.
3) Ждём пока в 3 не окажется столько же песка, сколько в 1.
4) Останавливаем 2, запускаем 1. (По предположению о замедлении истечения песка в 2 песок ещё будет)
5) Ждём пока количество песка во всех трёх не сравняентся.
Если песок её есть -- переходим к п. 1
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Нэчер, Вы писали:
Н>Здравствуйте, Нэчер, Вы писали:
Н>>...........................................
Н>По просьбе трудящихся, ответ дам в пятницу.
Задача не имеет решения.
Проверь своё решение ещё раз прежде чем позориться.
.
Это я Вас как математик математика спрашиваю:
Что такое математика?
Один из законов Божьих или это сам Бог и есть? (ХХ век)
Здравствуйте, Нэчер, Вы писали:
Н>Пусть имеется трое одинаковых песочных часов на 16 минут каждые. Н>Как точно(не на глаз)отмерить 24 минуты?
Как известно, высота с которой должно упасть тело, чтобы провести в полёте время t, вычисляется по формуле: h=gt^2/2.
Т.к., по условию, мы имеем только часы (и не имеем измерительных приборов), нам нужно будет определить эталон длинны,
для этого сбросим одни из часов с такой высоты, чтобы их полёт продлился 24 минуты. Эту высоты мы сможем определить
эмпирически, например, способом половинного деления. Теперь мы знаем какая длинна равна g*24^2/2 = 2880 метров.
Нам нужно отмерить 16 минут, значит h = g*16^2/2 = 1280 метров. -- Если сбросить часы сэтой высоты, они будут лететь
ровно 16 минут.
Как видите, вполне реально обойтись всего двумя (но очень прочными) песочными часами.
* Предвидя возражения на счёт такого использования песочных часов напомню, что принцип их действия основан на законе
всемирного тяготения.
Здравствуйте, WinterMute, Вы писали:
WM>Здравствуйте, Нэчер, Вы писали:
WM>Как видите, вполне реально обойтись всего двумя (но очень прочными) песочными часами.
WM>* Предвидя возражения на счёт такого использования песочных часов напомню, что принцип их действия основан на законе WM>всемирного тяготения.
На самом деле будет плохая точность, так как вы не учитываете сопротивление воздуха. Кроме того, вы ошиблись в своих расчетах, так как там надо было подставлять время в секундах, а не минутах. То есть для того, чтобы в вакууме часы летели 24 минуты, нужна высота не 2880 метров, а 10368 километров. На таких высотах уже нельзя пренебрегать и изменением g. Однако вашу идею можно использовать и без сбрасывания с очень больших высот. В самом деле, нам для решения задачи достаточно отмерить в часах интервал, который кратно уложится в 8 минут. Например, — одна секунда. То есть бросаем одни часы с 5-ти метров, а другими замеряем время падения. Таким образом секунда замерена. К сожалению, в условии задачи не сказано, что у нас имеется линейка, чтобы суметь точно отмерить 5 метров