Комментарии 72
Жаль мышек.
Тогда надо взять 1000 мышей и напоить каждую из своей колбы. Результат: Найдено за минимальное время, с минимальными потерями мышей.
На литкоде это бедные свиньи)) https://leetcode.com/problems/poor-pigs/
--Как при помощи 10 мышей найти колбу с отравой? Спойлер: надо применить бинарные вычисления
Если речь о собеседовании, то правильно будет отказаться от выполнения такой задачи до выяснения недостающих деталей. В таком виде решить задачу невозможно, разработчику придется додумывать детали ТЗ, и вероятно получится не то, что нужно заказчику.
Сына год назад готовил к ОГЭ, сейчас готовлю к ЕГЭ. Насмотрелся на кучу задачек, где невозможно понять условие, пока не влезешь в голову составителя задачки.
Например:
1) Что произойдет с силой постоянного тока, протекающего через обмотку электромагнита, если изменить полярность источника питания? У меня в голове сразу возникают переходные процессы, индукция, резкое кратковременное возрастание сопротивления и т.д. А подразумеваемый автором ответ: изменится направление тока. Правильная формулировка ТЗ должна указывать - через какое время рассматривать изменение.
2) Как быстрее охладить кастрюлю с компотом, закрытой крышкой: положить лед на крышку или под дно кастрюли? В реальной жизни между крышкой и компотом будет прослойка воздуха (пусть и с паром), а это теплоизолятор, поэтому возникает соображение, что класть лед на крышку - сомнительная затея. Однако, подразумеваемый составителем задачи ответ: клать лед надо подо дно (из-за эффекта конвекции). По-видимому, автор подразумевал, что кастрюля наполнена компотом полностью до краев, без воздушного зазора, чего автор в условии не указал почему-то. А ученику что делать?
ЗЫ
И в задаче про мышей также. Ответ "бинарные вычисления" подразумевает произвольное додумывание - смешивание содержимого колб, что многократно уменьшает концентрацию вещества и тем самым изменяет условие задачи. Так что корректным ответом на собедесовании вероятно будет отказ от решения такой задачи с объяснением причин (неполноты условия).
Так что именно нужно уточнять в условии этой задачи?
Если кто-то решит задачу иначе это не значит что ответ не будет принят.
Так что именно нужно уточнять в условии этой задачи?
Нужно уточнение, что можно смешивать и получившейся концентрации будет достаточно для теста, либо дать иную информацию по концентрации.
Если кто-то решит задачу иначе это не значит что ответ не будет принят.
Без домыслов эту задачу невозможно решить. Поэтому надо просто уточнить ТЗ. Может быть, это тест на то, как испытуемый отнесется к криво составленному ТЗ? Такое ведь тоже может быть.
Достаточно будет этого:
Если мышь попробует отраву, то она погибнет через 1 час.
Вам предварительно не нужно ничего смешивать.
Достаточно будет этого
В реальной жизни недостаточно. Что означает термин "попробует"? Выпьет всю пробирку? Десятую долю? Любую долю? Без четкой расшифровки этого термина невозможно решить эту задачу.
В любой решаемой задаче есть контекст в рамках которого вы должны её решать. В данном случае человек пришел на собес по программированию (чего он, кстати, не написал 🙂). Не по химии, не по биологии, не по философии - понятно, что это некоторая математическая задача, в рамках которой объекты задачи представляют собой идеализированные в рамках контекста параметры (мыши не умирают иначе, как от яда, независимо от концентрации, пробирка с ядом или с водой - это не разделяемые сущности, ничего никуда не надо переливать, время на подготовку решения и прочие манипуляции не считается и т.д.). С точки зрения математики условие задачи сформулировано полностью и там ничего не надо придумывать. Спойлеры приведенные автором - это просто подсказки читателям с целью не напрягать их мозг - на собеседовании такие подсказки не нужны.
Ну а претензия на полноту формулировки задач не должна противоречить принципу краткости - любая задача должна содержать только необходимые и достаточные условия для её решения в предложенном контексте...
То есть, речь не о "реальной жизни". Кстати, в примере с кастрюлей компота вы ошиблись в тексте - написали, что из-за конвекции нужно класть лёд "подо дном" - на самом деле, на крышку, ибо холодная жидкость опускается на дно и, благодаря этой самой конвекции процесс остывания проходит быстрее. И задача для школьника в этом случае подразумевает именно этот вопрос, а не то, на сколько заполнена кастрюля а иначе придется описывать слишком сложные процессы теплопередачи в стенках кастрюли и крышки, невозможность закрыть крышку без зазора и прочую чепуху, совершенно лишнюю в этом вопросе (это, кстати, вообще не задача, а вопрос на знание теории).
-- Почему не взяли? Он же предусмотрел всё!
-- Слишком токсичный, много вопросов вместо дела!
Однако, подразумеваемый составителем задачи ответ: клать лед надо подо дно (из-за эффекта конвекции)
Вот тут тоже не очень понятно.
Компот горячий. Холодный слой внизу, горячий вверху. Льдом охлаждаем нижний слой, он становится ещё холоднее. Конвекция не особо будет идти. Для конвекции нужно наоборот охлаждать сверху чтоб охлаждённый компот уходил вниз и всё это перемешивалось.
Предположу что вы хотели написать что составителем подразумевался ответ что лёд нужно класть на крышку. Так решил т.к. вы пишете что составитель предполагал что кастрюля заполнена компотом до краев без воздушного зазора.
Извиняюсь, это я попутал, вы правы: автор подразумевал ответ - класть лед сверху на крышку. Это меня сразу и смутило. Я сыну показал на окно и объяснил, почему делается двойное стекло с прослойкой воздуха, и почему на улице мороз, а у нас в комнате тепло. И мы пришли к выводу, что класть лед сверху - плохая затея.
В жизни на крышку и надо класть. Он будет таять и стекать по банке, охлаждая значительную часть поверхности.
А если лёд будет под банкой, то вода будет просто растекаться не касаясь банки.
Когда вот прям приспичило поставить в холодильник еще не остывшую еду, я беру два аккумулятора холода, один под контейнер, второй на контейнер. И ставлю в холодильник. Хотя по факту можно размещать как угодно - количество тепловой энергии помещенной в холодильную камеру от этого не изменится. Вопрос в локализации области нежелательного нагрева (чтобы меньше другие продукты страдали).
Что произойдет с силой постоянного тока
...
А подразумеваемый автором ответ: изменится направление тока.
То есть по [глубоко идиотской] версии [очевидно технически безграмотного] автора задачи с силой тока не произойдет ничего. Потому что направление тока не влияет на силу тока при прочих равных. То есть ответ "изменится направление тока" решительно неверный по условию задачи - по условию задачи вопрос был о силе тока.
У меня в голове сразу возникают переходные процессы, индукция, резкое кратковременное возрастание сопротивления и т.д.
Потому что это очевидно даже прожженному гуманитарию. Разве этому не учат в школе? Выглядит как материал для четвертого-пятого классов. Если нет, то чем они вообще там занимаются больше целого десятилетия?
Интересный момент - уменьшить число единиц в коде, но как мне кажется, это лишь ненужное усложнение.
Когда впервые увидел подобную задачу, там была немного другая формулировка, так что мои решения были такими:
колбы перемешать, взять по капле из 500-а колб в одну пробу, и из других 500-а - в другую. одним образцом напоить 5 мышей, другим - ещё пять. Плюсы: находим колбы без яда, которые можно отправить дальше клиентам (50% - тоже результат, снижаем финансовые риски неустойки), и пятикратное резервирование на случай ложноположительных и ложноотрицательных тестов (мышь не умерла от яда, мышь умерла, а яде не было).
уточнили задание, что нужно найти не какой-то процент чистых колб, а именно колу с ядом. Поднапрягся, прикинул сложность алгоритма для бинарного поиска (логарифм чего-то там). Берём идею из прошлого варианта, но поим только по одной мыши каждым образцом. Чистые колбы выбывают, для оставшихся алгоритм продолжается. Плюсы: выжившие мыши переиспользуются, но можно и непереиспользовать. Малое число шагов алгоритма (менее десяти). Минусы: алгоритм не параллелится, шаги зависят друг от друга. Общее время выполнения поиска - более 5 часов (на один шаг - час).
значит, ожидается решение с временной сложностью О(1). Подозрение вызвало число 1000, которое очень близко к 1024, что в свою очередь 2^10. А 10 - число доступных мышей. И тут уже родилось решение битового кодирования. Но есть и пограничный случай - думаю, плохая идея нумеровать первую колбу кодом 000000000 - тогда будет сложно сказать, был ли яд в первой колбе или яда не было ни в одно из них, если все мыши останутся в живых.
Общее время выполнения поиска - более 5 часов
Меньше. 1 шаг - смешиваем 10 порций по 100 образцов, даём 10 мышам. 1 погибает. 2 шаг - смешиваем 9 порций по 11-12 образцов, даём 9 мышам. 3 шаг - 8 мышей, порции по 1-2 образца. Возможно, мышам повезет на 3 шаге, не повезет - на 4.
Вы почти придумали задачу на пробу Вассермана.
Реальная проблема ВМС США на Тихом океане после ВМВ.
Каждая проба стоит дорого, нужно уменьшить кол-во проб и выявить всех положительных, отрицательных отсеять (кому-то служить надо).
Ну и время. Экипажи составляются постоянно, надо знать, кого можно отправить.
Каждой пробирке надо поставить в соответствие десятично число от 1 до 1000
А почему не от нуля? Никто не умер - отрава в нулевой пробирке.
В варианте где надо погубить как можно меньше мышей тоже с 1 начинаете.
забыли написать, что такое "взведённый бит".
ЕМНИМП, это та штука, из-за которой Win11 не хочет работать на старых компах.
взведённый бит - тот бит, который равен единице. Например в десятичном числе 8=0b1000 взведенный бит - это 3ий. В числе 4=0b100 взведенный бит - это 2. Отсчет от нуля справа на лево.
Эту задача лет 25 назад была на Питерской олимпиаде по математике для средней школы(вроде 5 или 6 класс был). Сейчас плавно перетекла в информатику со знанием двоичной системы счисления и решается уже не за 10, а за 5 минут.
Интересно она описана в каком-нибудь учебнике?
так. а каким было десятиминутное решение?
рассматриваешь одну мышь и делишь бутылки пополам([ + ] [ - ]). находишь яд с точностью од 500 бутылок. дальше добавляешь следующую мышь и уже пополам делишь имеющиеся кучки и даешь мыши выпить из 2-х кучек с разных концов([ + ][ - ] [ + ][ - ]) и уже точность 250 бутылок. дальше по этому алгоритму на 10 мышах находишь абсолютно точно бутыль с ядом. обычно такую задачу проходят в мат.кружках после тем про взвешивания.
Так... А в чём проблема разделить колбы на количество мышей и в течение 100 минут давать по капле из каждой колбы? Так погибнет только одна мышь, а по времени можно будет определить, из какой колбы её напоили.
Подозреваю, что метаболизм у всех отдельных мышей разный.
Если в 1 момент двум мышам дать отраву, то они погибнут не одновременно, а в пределах некоторой погрешности.
Мне кажется, есть ещё 1 способ, с представлением 1000 пробирок в виде куба 10х10х10 и проекцией разных срезов куба на 10 точек. Вариация способа с битовым представлением, но на языке линейной алгебры. Но доказать не могу ;)
Итого, N мышей могут проверить 2^N колб. Но это за 1 раунд, то есть когда есть запас времени всего 1 час. А если у нас К раундов, т.е. К часов? Как обобщить?
Тогда можно проверить (K+1)^N колб. Номера колб представляем в (K+1)-чной системе счисления, это будет число из N разрядов, возможно с нулями впереди, чтобы было ровненько. Каждая мышь отвечает за свой разряд. На i-м раунде (i = 1..k) мышь с номером p пробует из тех колб, в номере которых p-я цифра равна i. Если погибла, то в номере искомой колбы p-й разряд равен i.
Стоит еще привести доказательство минимальности. При K раундах каждая мышь дает k+1 исхода - сколько раундов она пережила, от 0 до K. Поэтому имея N мышей мы не можем получить более (K+1)^N различных исходов. Поэтому больше (K+1)^N проверить даже теоретически нельзя, потому что каждый исход должен указывать на одну колбу.
В Ваших решениях есть существенный недостаток - сложность и запутанность реализации. Лаборант который будет поить мышей c очень большой вероятностью сделает ошибку - случайно напоит не ту мышь не из той пробирки (человек не в состоянии выполнить 1000*10 различных действий не совершив хотя бы одну ошибку). Результат будет быстрый, но фатально неверный. Если использовать метод половинчатого деления, то задача для лаборанта существенно упрощается, но результат будет готов через 10 часов, при этом ошибка контроллируема в процессе эксперимента. Более того, если повезет, Вы сможете решить задачу за 1 час использовав только один пробник (одну мышь).
Также важен вопрос о концентациях вещества. Если напоить одну мышь из ста различных пробирок, то концентрация яда может понизиться до гомеопатических значений, что приведет к ложным результатам.
Лаборант который будет поить мышей c очень большой вероятностью сделает ошибку - случайно напоит не ту мышь не из той пробирки (человек не в состоянии выполнить 1000*10 различных действий не совершив хотя бы одну ошибку). Результат будет быстрый, но фатально неверный
Я конечно не фармацевт, но слышал, что в таких лабораториях применяют автоматические дозаторы, управляемые форсунками, шаговыми двигателями и спец ПО.
https://rutube.ru/video/5b2cb0f240dc46167431612a255e40b8/

Дозатор на 1000 пробирок если и есть в природе, то это дико сложное изделие. Ну и мышей поить придется всё равно вручную, никакими форсунками напоить их не получится. Но основная проблема в том, что мышами придется жонглировать как клоун шарами в цирке, а это почти стопроцентная вероятность ошибки.
Автоматический дозатор смешивает 1000 пробирок в 10. Лаборанту остаётся только напоить одну мышь из одной пробирки.
Если допустить автоматическое смешивание и автоматическую регистрацию результатов тестирования, то, наверное, более правильный алгоритм мог бы выглядет так:
Имеем 1000 пробирок с неизвестным составом, нумеруем пробирки начинается с 0 до 999.
Добавляем еще 24 пустые пробирки (всего от 0 до 1023), это будут контрольные пробирки для проверки правильности исполнения алгоритма по ходу исследования.
Создаем вектор длиной 1024 битов. Каждый бит этого вектора ассоциирован с одной из пробирок, фактически номер бита совпадает с номером пробирки.
Начинаем цикл пока оставшееся количество неисследованных пробирок > 1.
Формируем 8 векторов устанавливая в них биты следующим образом:
в нулевом векторе устанавливаем биты: 0, 8, 16, 24,...,1016;
в первом биты: 1,9,17,25,...,1017;
во втором векторе: 2,10,18,26,...,1018; и так продолжаем до
вектора 7 в котором устанавливаем биты: 7,15,23,31,...,1023.
Используем эти 8 векторов для формирования 8-ми смесей согласно правилу: если соответствующий бит установлен, то в данную смесь добавляется проба из пробирки с номером равной номеру бита.
Проводим тест: поим 7 мышей различными смесями (из 8 шт), одну смесь можно не тестировать.
Ждем 1 час результатов теста - одна из мышей должна погибнуть, или не погибнуть ни одной.
Выбираем пробирки для следующей итерации:
Если погибла только одна мышь, то выбираем для следующей итерации те пробирки которые были отмечены битом в её смеси.
Если не погибла ни одна мышь, то выбираем смесь номер 7 (ту, что не тестировали).
Если погибло две и более мыши, то в процессе эксперимента произошла ошибка (не врено произведены смеси или некачественные мыши). Эксперимент признаем неудачным и начинаем сначала.
Из отобранного вектора получаем 1024/8 = 128 пробирок для тестирования на следующей итерации. Сводим задачу к 128 пробиркам и 9-ю мышам (одна мышь израсходована ;)).
Проверяем содержимое вектора на наличие в нём пустых пробирок. Если в векторе все пробирки пустые, то произошла ошибка - останавливаем исследование.
Повторяем цикл.
В процессе решения приходим к следующей последовательности подзадач и состояний:
Шаг 1. 1024 пробирки, чередование 8, количество живых мышей после завершения - 9 шт.
Шаг 2. 128 пробирок, чередование 8, количество живых мышей после завершения - 8 шт.
Шаг 3. 16 пробирок, чередование 4, количество мышей после завершения - 7 шт.
Шаг 4. 4 пробирки, чередование 1, количество мышей после завершения - 6 шт.
Итого: Исследование длится 4 часа, 4 мыши израсходовано, всего поили мышей 7+7+3+3=20 раз.
Если результирующий номер пробирки с ядом > 999, то есть в финал вышла пустая пробирка, то в опыте возникла ошибка и опыт повторяется.
Пустые пробирки можно рассматривать как Redundancy Check и исходя из этого еще немного уменьшить число тестов, но я пока не придумал как. :-)
если не ориентироваться на биты и не добавлять пустые пробирки а каждый раз использовать всех мышей какие есть, то впритык но укладываемся в 3 часа и 0..3 жертвы.
Опишите свой алгоритм пожалуйста.
Ок, спасибо. Да, Ваш алгоритм эффективней, но мышей на водопой придется сводить 27+1 раз, а в моём всего 20+1. :-) Один последни раз требуется для проверки действитетельно ли в найденой пробирке яд. Также в моём предусметрена проверка на этапах которая может выявить ошибку заблаговременно. В таком деле я бы предпочел немного перебдеть. :-)
С проверкой отдельная задача - как гарантировать компенсацию одной ошибки на любом этапе. Понятно что можно просто задублировать число мышей, но наверняка можно оптимальнее.
Чтобы компенсировать ошибку нужно увеличить число используемых мышей. Их у нас в избытке, так что не проблема. Можно попытаться натянуть код Хемминга на эту задачу.
Использование дополнительных пустых пробирок это что-то типа бита четности позволяющего понять (с опеределнной вероятностью) была ошибка или нет.
с опеределнной вероятностью
ну вот вероятность мне и не нравится. Если лаборант не косячит и ошибки только в том что мыши могут лишний раз умереть или наоборот чудом выжить, то для защиты от одной ошибки достаточно просто отказаться от идеи с лишним набором который не даем мышам - тогда при одной ошибке мы увидим что либо умерло две мыши либо 0 и соответственно повторим опыт.
Но если еще и лаборант может дать не той мыши не ту пробирку, то нужно что-то посложнее.
Я думаю если напоить каждую мышь из 100 пробирок, условно за 10 мин, то они все умрут от перепоя. :)
Берем пробирку и угощаем из нее от одной до 10 мышей в зависимости от номера пробирки
Ну понятно.
Через час должно умереть от одной до 9 мышей
А теперь непонятно. Если в первой цитате та пробирка, из которой дали 10-и мышам, отравлена, то во вторая цитата ошибочна - умрут все 10, что больше 9 мышей.
И задача не на двоичную систему, скорее наоборот - на способность к пониманию, которую обращение к двоичной системе не демонстрирует. А склонность к слепому следованию фреймворкам - демонстрирует. Если на собеседовании, то печаль в том, что из того, что если чего не демонстрирует, никак не следует, что этого и нет.
Задача успела деградировать - вместо "10 мышей" должно быть "минимальное число мышей".
От разумного кандидата я бы ожидал следующего
замечания что число мышей нельзя уменьшить увеличивая время, то есть делая несколько опытов
нахождения минимума в 10 мышей из комбинаторных соображений
общую схему реализации - первой мыши из первых 500 пробирок, второй из пробирок 1-250 и 501-750, ...
реальную схему реализации - выдаём по 100 пробирок 10 лаборантам...
Чем хорошо понимание того, что десять шагов деления пополам укладываются в один шаг за счёт возможности добавлять из пробирок, которые при анализе результата окажутся чистыми, по сравнению с двоичной системой, кроме отсутствия необходимости подписывать пробирки суммарно миллионом цифр? - Позволяет отвечать на дополнительные вопросы типа
А если участие мыши в опыте стоит 100 рублей, а отдельно приобретаемая лицензия на её убийство - тысячу?
А если в отравленной пробирке всего 200 летальных доз, а в мышь больше 10 не поместится?
А мышление в рамках систем счисления не позволяет. Ключ к ответу, кстати, один - делить не пополам, а на большее число частей.
Понимание систем счисления, может быть, окажется полезно при сведении задачи о двух отравленных пробирках к предыдущей.
Прочитал статью и лишний раз убедился - современный найм, он как русский бунт, бессмысленный и беспощадный. А чего в нём больше, страсти сектантов к ритуалам или карго культа - мне не очевидно.
Фанаты iPhone в России - это, как раз, секта карго культа.
Один коллега в московском НПП ХХХХХХ свой iPhone 10 в двух чехлах носил.
А если участие мыши в опыте стоит 100 рублей, а отдельно приобретаемая лицензия на её убийство - тысячу?
Тут так и напрашивается цитата Боса из мультика Dilbert
Сезон 2, серия 15 (начало на 7:42) ( хранический офисный синдром)
"Мы за мышей платить не будем! Боже правый, их полно на улице!"
Одной мыши давать пить из каждой из 999 первых пробирок. Результат будет самое большее через 42 дня. С вероятностью 1/1000 мышь не погибнет.
А вообще эту задачу можно решить с результатом "5 часов и от 1 до 5 погибших мышей".
как по мне так это хороший пример внесения искусственных ограничений. да, это покажет алгоритмическое мышление. да, это жизнено. но вот как раз хотелось чтобы в жизни было более практических задач, а не придуманной работы.
Решение очень трудоемкое и подвержено ошибкам в процессе, вероятность которых очень высока. Можно перепутать пробирки, дать не ту отраву не тем мышам и пр. К тому же в худшем случае помрут все.
Мне кажется, более оптимально сначала поделить пробирки на 10 наборов по 100 и каждую мышь поставить в соответствии набору. Далее мыши пьют каждая микс из своего набора. Как только одна мышь дохнет, мы знаем набор с отравой. Далее повторяем раздел на 10 сетов, 9 даём мышам, 10й нет. Если одна помрёт - повторям раздел последний раз. Если не помрёт никто, яд в 10м сете и повторяем ту же процедуру.
Итог 3 часа и максимум 3 мыши потеряем.
Тоже вариант. Отлично .
Если во второй раз одна помрет у нас останется 8 мышей и 10 пробирок для проверки. Итого максимум 4 часа и 4 мыши.
Так и первый раз тоже.
100 пробирок и 9 мышей.
12 пробирок и 8 мышей.
Можно еще немного оптимизировать.
Давать первый раз 9 наборов по 100. Может повезти сэкономить мышь.
Или так:
896 (1024*7/8 - 112 на мышь, 104 в кармане) пробирок и 8 мышей - тут можем сэкономить мышь
98 (112*7/8 - 14 на мышь, 14 в кармане) пробирок и 8 мышей - тут можем сэкономить мышь
12 (14*7/8 - 2 на мышь, 2 в кармане) пробирок и 6 мышей - тут можем сэкономить мышь
1 пробирка и 1 мышь, 1 в кармане - тут можем сэкономить мышь
4 попытки.
Есть вероятность, что обойдемся 3-мя мышами, а можем вообще без потерь.
Если пробирок 1000, то в первый раз можно сделать 11 наборов по 91 пробирке.
Тогда даже если потеряем мышь, во второй раз будет 9 наборов по 9 с потерей мыши и последний набор в 10 без потери мыши.
Тогда на третий раз у нас либо 9 пробирок и 8 мышей (если потеряли мышь оба раза на прошлом шаге) либо 10 пробирок и 9 мышей (если не потеряли) и соответственно гарантированные 3 попытки и 0-3 потери.
спросил grok, он как обычно всё мне объяснил)
реально, первое ощущение, что 10 мышей - недостаточный объем данный. Но прочитав ниже я прямо понял! почему это достаточно и как работает
# grok
Простое объяснение
Представь, что каждая колба имеет уникальный «код» из 10 бит (0 или 1), как номер в двоичной системе. Мы используем 10 мышей, и каждая мышь отвечает за один бит:
Мышь 1 пьёт из всех колб, у которых в коде на первой позиции стоит 1.
Мышь 2 — для второй позиции, и так далее.
Через час смотрим, какие мыши умерли. Если мышь умерла, значит, в её бите стоит 1, если жива — 0. Это даёт нам 10-битный код отравленной колбы.
Почему 10? Потому что 2¹⁰ = 1024, а нам нужно закодировать 1000 колб, и 10 бит — это минимальное число, чтобы хватило уникальных кодов (2⁹ = 512 — уже мало).
Только условия на минимальное время и минимальное количество смертей противоречат друг другу:
Решение с битовым кодированием находит колбу за час и убивает от 1 до 9 мышей.
Альтернативное решение: давать мышам колбы по порядку и ждать по часу между приемами убивает только одну мышь, но потребует от одного до ста часов.
Если ничего не домысливать, а исходить строго из условий задачи, то решение одно: надо разделить пробирки на 10 групп, по одной группе на каждую мышь. Тестирование внутри группы строго соответствует данным в задаче вводным: дать мыши попробовать из одной колбы, что бы это ни значило. Ждать один час, если жива - колбу убрать в группу чистых, дать пробовать из следующей колбы. От яда погибнет максимум одна мышь, время тестирования от 1 до 100 часов. Если за 99 часов эксперимента не погибнет ни одна мышь - это мыши-супермены, которые могут обходиться без сна и жратвы...Эксперимент остановить, мышей отправить в спец. лабораторию на изучение..
Людей, которые дают такие задания на собесах надо закрывать в кладовках со сборниками олимпиадных задач по программированию. И заставлять решать их на перфокартах по несколько часов в день, просто чтоб идиотские мысли из головы вышли.
Задача про мышей и отраву