Любопытство сгубило кошку?


20

Некоторые люди говорят, что любопытство убило кошку. Другие говорят, что это была коробка и яд. В 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, поэтому очевидно, что побеждает самый короткий счетчик байтов.


6
Вы понимаете, что радиоактивное вещество никогда полностью не разлагается
Рохан Джунджхунвала

1
Я понятия не имею, что мы должны делать здесь ... Можете ли вы пройти каждый шаг, чтобы выяснить, должен ли результат быть trueили false?
бета-распад

Привет и добро пожаловать в PPCG! Как уже говорили другие, это могло бы использовать немного больше разъяснений. Если вы затронете вопросы, поднятые выше, я думаю, что это может быть аккуратной задачей, и она будет вновь открыта. Для дальнейшего использования у нас есть песочница, поэтому авторы могут получить отзывы о проблемах, прежде чем публиковать их на главном сайте.
AdmBorkBork

3
Не могли бы вы дать нам уравнение, для которого выходы дают True?
xnor

1
@xnor Для полувыведения λи массы m, m-m*(1/2)**(604800000/λ) > 9000(или , так как край случае может пойти в любую сторону).
Мего

Ответы:


9

Python 3, 33 байта

lambda a,b:a-a*.5**(6048e5/b)>9e3

Объяснение:

         6048e5         # number of milliseconds in 1 week
               /b       # half-lifes per week
  a*.5**(        )      # mgs of substance remaining after 1 week
a-                      # mgs of substance decayed after one week
                  >9e3  # return true if more than 9000mgs has decayed in 1 week

Попробуй здесь


Также 33 байта:lambda a,b:2**(-6048e5/b)+9e3/a<1
Даниил

5

CJam (22 байта)

q~dX.5@6048e5\/#-*9e3>

Онлайн демо

рассечение

Быстрое объяснение математики: если период полураспада наступает через какое- λто время, tто доля оставшегося радиоактивного материала равна (1/2)^(t/λ), значит, доля уменьшается 1 - (1/2)^(t/λ).

q~d         e# Parse input, ensuring that the later division will use doubles
X.5@6048e5\ e# Rearrange stack to: m 1 0.5 6048e5 λ
/#-*        e# Div, pow, sub, mul, giving the total mass decayed after a week
9e3>        e# Is it OVER 9000! ?

5

Фурье, 51 байт

Я должен признать, что я не полностью понимаю эту программу ... В основном, просто перевод кода Python от TheNumberOne.

oI~M~NI~H604800000~G>H{1}{G/H^(M/2~Mi^~i)N-M>9000@o}

Обратите внимание, что это первая программа, написанная для PPCG, которая использует @функцию очистки вывода.

Попробуйте онлайн!


4
Подходящее имя пользователя ...
ojdo

@ojdo Хаха да: D
Бета-распад

4

На самом деле, 20 байтов

5╤:6048*/1½ⁿ1-*93╤*<

Попробуйте онлайн!

Объяснение:

5╤:6048*/1½ⁿ1-*93╤*<
5╤                    10**5
  :6048               6048
       *              6048*10**5 (milliseconds in 1 week)
        /             divide by half-life
         1½ⁿ          (1/2)**(^)
            1-        1-(^) (% of sample decayed after 1 week)
              *       multiply by sample mass (mass decayed after 1 week)
               93╤*   9*10**3 (9000)
                   <  is 9000 < sample mass decayed?

3

Дьялог АПЛ , 19 байт

9E3≤⊣-⊣×.5*6048E5÷⊢

9E3≤ 9000 меньше или равно

⊣- левый аргумент (масса) минус

⊣× левый аргумент раз

.5*  ½ к власти

6048E5÷⊢ 604800000 делится на правильный аргумент (период полураспада)

Нет необходимости в скобках, так как APL строго справа налево.

Попробуй APL онлайн!


1
19 байтов. Это дьявольское.
C. Tewalt

@matrixugly В этом случае я бы спросил, почему в других языках так много пуха. У меня есть ровно один символ на «вещь» в совершенно нормально выглядящей инфиксной (например, математической) нотации.
Адам
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.