Просмотр полной версии : Как правильно умертвить рабов?
Nadir Zaitov
12.01.2010, 09:42
Патриций решил устроить праздник и для этого приготовил 240 бочек вина. Однако к нему пробрался недоброжелатель, который подсыпал яд в одну из бочек. Недоброжелателя тут же поймали, дальнейшая его судьба неизвестна.
Про яд известно, что человек, его выпивший, умирает в течение 24 часов. До праздника осталось два дня, то есть 48 часов. У патриция есть пять рабов, которыми он готов пожертвовать, чтобы узнать в какой именно бочке яд. Расскажите каким образом можно это узнать.
Надир, ровно по истечении 24 часов умирает или в течение 24 часов?
primaster
12.01.2010, 11:15
Вариант ответа если ровно 24 часа: 240 бочек делим поровну между 5 рабами - то есть по 48 бочек на каждого. Через каждые полчаса каждый раб пробует по одной бочке и отмечает когда ее он пил. В течение 24 часов будут испробованы все бочки. Остальные 24 часа ждем когда один из рабов умрет, смотрим время смерти - смотрим какую он бочку пил 24 часа назад - она и будет нужная
Вариант ответа если ровно 24 часа: 240 бочек делим поровну между 5 рабами - то есть по 48 бочек на каждого. Через каждые полчаса каждый раб пробует по одной бочке и отмечает когда ее он пил. В течение 24 часов будут испробованы все бочки. Остальные 24 часа ждем когда один из рабов умрет, смотрим время смерти - смотрим какую он бочку пил 24 часа назад - она и будет нужная
В таком случае достаточно 1 раба. Он будет пить по чуть-чуть вина каждые 6 минут.
Кстати, учитываем, что у нас есть потенциально шестая жертва для экспериментов - сам злоумышленник. Чего его держать )))
primaster
12.01.2010, 12:27
Кстати, учитываем, что у нас есть потенциально шестая жертва для экспериментов - сам злоумышленник. Чего его держать )))
Лучше его попытать хорошенько, сам скажет какую бочку отравил :187:
Nadir Zaitov
12.01.2010, 12:38
Надир, ровно по истечении 24 часов умирает или в течение 24 часов? Если "ровно по истечении", то слишком просто решается - можно взять одного раба и поить его каждые 5 минут с секундомером :).
Nadir Zaitov
12.01.2010, 12:40
В таком случае достаточно 1 раба. Он будет пить по чуть-чуть вина каждые 6 минут. Блин... оказывается Жахонгир уже ответил... Спасибо.
Rooslan Khayrov
12.01.2010, 13:27
Итак, раб, выпив яду, умирает в течение 24 часов, но неизвестно, когда именно. За два дня мы можем устроить два испытания, после которых раб может оказаться в одном из трёх состояний: остался жив, умер на первый день, умер на второй день. Таким образом, пять рабов дадут нам 3^5 = 243 состояния, что вполне достаточно для решения задачи.
Запишем номера бочек в троичной системе (минус один, для удобства):
1 — 00000
2 — 00001
3 — 00002
4 — 00010
...
240 — 22212
Очевидно, каждый разряд соответствует рабу. Первую бочку не будет пить никто. Вторую — первый раб на первый день, третью — на второй и т.д.
Таким образом, в первый день первый раб отведает из бочек с номерами (1 + 3 * n), второй — (4..6 + 9 * n) и т.д. Каждый раб должен будет попробовать примерно 80 бочек в день. Будем надеяться, что алкогольное отравление не вызовет ложных срабатываний.
Напоив рабов по указанной схеме, через два дня считаем состояние «регистра».
Кажется придумал. Делим 240 бочек на 120 пар. Смешиваем из каждой пары 4 одинаковых мини-коктейля и спаиваем 4 разным рабам. Комбинации из 4 рабов не должны повторяться. Вариантов "4 из 5" как раз 120. Через 24 часа 4 раба умрут, а мы узнаем в какой паре бочек одна отравлена. Выживший раб поможет уточнить и даже имеет шанс выжить.
Пока писал, Руслан Хайров запостил свой вариант. Тоже правильный, имхо, но более сложный для осознания простым римским патрицием.
Но я не о том. Писал свой предыдущий комментарий в обед с телефона, жутко мучался и пытался сделать ответ максимально коротким, чтобы букв нужно было вбивать как можно меньше. И пришла мысль - что нужно подарить идею тренерам команд программистов, которые готовят ребят к олимпиадам - давать им подобные задачки и ответ требовать по СМС - учит оптимизировать решения.
Nadir Zaitov
12.01.2010, 15:28
Каждый раб должен будет попробовать примерно 80 бочек в день. Не расписан случай, если умрет до второго дня :) Это ведь существенно :) Такое решение действительно есть, но оно не так просто!
Nadir Zaitov
12.01.2010, 15:33
Вариантов "4 из 5" как раз 120. Это действительно так? (замечу, что 5!=120, а сочетаний всего 5=5!/4! ... там ведь нет упорядочения рабов).
Это действительно так?
Задумался...
Nadir Zaitov
12.01.2010, 16:11
Rooslan Khayrov, а что делать, если скажем 2 раба умрут в первый день?
Rooslan Khayrov, а что делать, если скажем 2 раба умрут в первый день?
Вроде ничего не случится. С соответствующем троичном числе на это место записываем единицу.
Nadir Zaitov
12.01.2010, 16:21
Вроде ничего не случится. А кто за них будет пить во второй день? :) (я то ответ знаю, только не для всех ясно расписано)
А кто за них будет пить во второй день? (я то ответ знаю, только не для всех ясно расписано)
Понел. Злоумышленник!
Rooslan Khayrov
12.01.2010, 16:44
Вроде ничего не случится. А кто за них будет пить во второй день?
Никто, все бочки, которые выпадают умершему рабу по расписанию на завтра, отличаются от тех, из которых он пил сегодня, следовательно не ядовиты и пить их нет смысла. А мёртвый значение своего разряда уже зафиксировал.
Да, для тех кто понимает логику решения, всё очевидно, но патрицию объяснить будет сложно :-)
Nadir Zaitov
12.01.2010, 17:07
Никто, все бочки, которые выпадают умершему рабу по расписанию на завтра, отличаются от тех, из которых он пил сегодня, следовательно не ядовиты и пить их нет смысла. А мёртвый значение своего разряда уже зафиксировал. Да, для тех кто понимает логику решения, всё очевидно, но патрицию объяснить будет сложно :-) Ага.
Теперь представьте, что существует вероятность несрабатывания яда у 50% рабов (труд закалил их имунную систему), но вы не знаете кого именно. Сколько при этом пондобтся рабов для гарантированной поверки пиршества за 2 дня.
vBulletin® v3.8.5, Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot