Цікавість вбила кота?


20

Деякі люди кажуть, що цікавість убила кішку. Інші кажуть, що це коробка та отрута. В RSPCA кажуть, що Ервін Шредінгер повинен втратити право власності на домашніх тварин.

З правозахисниками поза його будинком. Кот вбивця вчений Шредінгер, нарешті , придумав його найбільшим винаходом. Спеціальна радіоактивна суміш унобтанію та рувавію, яка може мати будь-який період напіввиведення, і один грам продукту здатний вбити будь-яку живу істоту. На жаль, коли він спробував випробувати його на останньому коті: Боб, він забув, що у котів 9 життів, а тому для вбивства знадобиться 9 грам. З водою, але без їжі, бідний Боб проживе рівно 1 тиждень (7 днів), якщо продукт не вб'є його першим.

Завдання: З огляду на введення маси в міліграмах та періоду напіврозпаду в мілісекундах - обидва цілі числа, які можуть перевищувати 2 ^ 31, написати програму, яка виводить, чи вбиває кішка таємничий суперпродукт, чи якщо це 1 тиждень ліміт закінчується першим. Припустимо, правда / так / 1 / все, що зазначено у відповіді, коли він не помирає від голоду.

Щоб продукт його вбив, загалом має розпастись 9 грам. Таким чином, з проби 18 грам повинен пройти 1 період напіввиведення. Якщо проба містить менше або дорівнює 9 грам, цього ніколи не буде досягнуто, і тому можна негайно припустити, що тиждень пройде до 9 г розпадів.

Ви можете припустити:

  • Боб помирає, мікросекунда 9 грам загнила.
  • Зміна маси внаслідок розпаду значення не має.
  • Усі дні та часи слідують загальноприйнятому земному часу.
  • Ящик, у якого запечатаний Боб, є непорушним і не відкритим, тому немає ймовірності смерті з інших причин.
  • Кисень також не проблема.
  • Якщо обидва трапляються в той самий час, будь-який вихід прийнятний.
  • Усі входи повинні бути нижче 2 ^ 63-1

Тестові приклади:

Приклад:

18000 604800001

Щоб розпад 9 грамів повинен пройти рівно 1 період напіврозпаду (18000/2 = 9000 міліграм або 9 грам). Час напіввиведення становить 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
Ви розумієте, що радіоактивна речовина ніколи не повністю розпадається
Rohan Jhunjhunwala

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, яка використовує @, чітку функцію виводу.

Спробуйте в Інтернеті!



@ojdo Haha так: 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

Діалог APL , 19 байт

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

9E3≤ на 9000 менше або дорівнює

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

⊣× ліві рази аргументу

.5*  ½ до потужності

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

Немає потреби в дужках, оскільки APL суворо праворуч-ліворуч.

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


1
19 байт. Це діаболічно.
C. Tewalt

@matrixugly У цьому випадку я б запитав, чому в інших мовах так багато пуху. У мене рівно один символ на "річ" у цілком нормальній зовнішній вигляд (як математика).
Adám
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.