Некоторые люди говорят, что любопытство убило кошку. Другие говорят, что это была коробка и яд. В RSPCA говорят, что Эрвин Шредингер должен потерять право на владение домашними животными.
С правозащитниками у его дома. Кот убийца ученый Шредингер, наконец , придумал его величайшим изобретением. Специальная радиоактивная смесь унобтаниума и хандвавия, которая может иметь любой период полураспада, и один грамм продукта способен убить любое живое существо. К сожалению, когда он попытался проверить это на своем последнем коте: Бобе, он забыл, что у кошек 9 жизней, и поэтому для убийства потребуется 9 грамм. С небольшим количеством воды, но без еды, бедный Боб проживет ровно 1 неделю (7 дней), если продукт не убьет его первым.
Задача: Учитывая ввод массы в миллиграммах и период полураспада в миллисекундах - оба целых числа, которые могут превышать 2 ^ 31, напишите программу, которая выводит, убивает ли таинственный суперпродукт кошку или это 1 неделя предел истекает первым. Предположим, что истина / да / 1 / все, что указано в ответе, предназначено для случаев, когда он не умирает от голода.
Чтобы продукт убил его, в общей сложности 9 грамм должны распасться. Таким образом, из образца в 18 граммов 1 период полураспада должен пройти. Если образец содержит меньше или равно 9 граммам, это никогда не будет достигнуто, и поэтому можно сразу предположить, что пройдет 1 неделя до того, как 9 грамм распадутся.
Вы можете предположить:
- Боб умирает, микросекунда 9 грамм разложилась.
- Изменение массы из-за распада не имеет значения.
- Все дни и времена следуют общепринятому времени Земли.
- Коробка, в которой запечатан Боб, не разбивается и не открывается, поэтому нет никаких шансов на смерть от других причин.
- Кислород тоже не проблема.
- Если оба события происходят в одно и то же время, то любой вывод является приемлемым.
- Все входы должны быть ниже 2 ^ 63-1
Тестовые случаи:
Пример:
18000 604800001
Для разложения 9 грамм должен пройти ровно 1 период полураспада (18000/2 = 9000 миллиграммов или 9 грамм). 1 период полураспада составляет 604800001 миллисекунд, или 168 часов и 1 миллисекунда, или ровно 1 неделя и 1 миллисекунда. Поскольку Боб умирает от голода ровно через 1 неделю, результат будет ложным, так как он умер от голода незадолго до того, как был достигнут предел в 9 грамм продукта.
8000 40000 false
70000 800 true
18000 604800000 either
18000 604800001 false
18000 604799999 true
1 1 false
100000 1 true
1000000000 1000000000 true
Подсчет очков: Естественно, мы хотим, чтобы страдания Боба быстро заканчивались, поэтому лучше использовать более короткий период полураспада. Период полураспада и байт заканчиваются на E, поэтому очевидно, что побеждает самый короткий счетчик байтов.
true
илиfalse
?λ
и массыm
,m-m*(1/2)**(604800000/λ) > 9000
(или≥
, так как край случае может пойти в любую сторону).Ответы:
Python 3, 33 байта
Объяснение:
Попробуй здесь
источник
lambda a,b:2**(-6048e5/b)+9e3/a<1
CJam (22 байта)
Онлайн демо
рассечение
Быстрое объяснение математики: если период полураспада наступает через какое-
λ
то время,t
то доля оставшегося радиоактивного материала равна(1/2)^(t/λ)
, значит, доля уменьшается1 - (1/2)^(t/λ)
.источник
Фурье, 51 байт
Я должен признать, что я не полностью понимаю эту программу ... В основном, просто перевод кода Python от TheNumberOne.
Обратите внимание, что это первая программа, написанная для PPCG, которая использует
@
функцию очистки вывода.Попробуйте онлайн!
источник
На самом деле, 20 байтов
Попробуйте онлайн!
Объяснение:
источник
Дьялог АПЛ , 19 байт
9E3≤
9000 меньше или равно⊣-
левый аргумент (масса) минус⊣×
левый аргумент раз.5*
½ к власти6048E5÷⊢
604800000 делится на правильный аргумент (период полураспада)Нет необходимости в скобках, так как APL строго справа налево.
Попробуй APL онлайн!
источник