Ciekawość zabiła kota?

20

Niektórzy mówią, że ciekawość zabiła kota. Inni mówią, że to było pudełko i trucizna. RSPCA twierdzi, że Erwin Schrödinger musi stracić prawo do posiadania zwierząt domowych.

Z działaczami na rzecz praw zwierząt przed jego domem. Kot morderca naukowiec Schrödinger wreszcie wymyślić swojego największego wynalazku. Specjalna, radioaktywna mieszanka unobtanium i handwavium, która może mieć dowolny okres półtrwania, a jeden gram produktu jest w stanie zabić każde żywe stworzenie. Niestety, kiedy próbował przetestować go na swoim ostatnim kocie: Bobie, zapomniał, że koty mają 9 żyć, a więc potrzebuje 9 gramów, aby zabić. Przy odrobinie wody, ale bez jedzenia, biedny Bob przeżyje dokładnie 1 tydzień (7 dni), jeśli produkt nie zabije go pierwszy.

Zadanie: Biorąc pod uwagę wkład masy w miligramach i okres półtrwania w milisekundach - obie liczby całkowite, które mogą przekraczać 2 ^ 31, napisz program, który wyświetli, czy tajemniczy super produkt zabije kota, czy też jest to 1 tydzień limit wygasa pierwszy. Załóżmy, że prawda / tak / 1 / wszystko określone w odpowiedzi dotyczy sytuacji, gdy nie umrze on z głodu.

Aby produkt go zabił, musi zepsuć się łącznie 9 gramów. Tak więc z próbki 18 gramów musi upłynąć 1 okres półtrwania. Jeśli próbka zawiera mniej niż 9 gramów, nigdy nie zostanie to osiągnięte, dlatego można natychmiast założyć, że minie 1 tydzień, zanim rozpadnie się 9 gramów.

Możesz założyć:

  • Bob umiera, mikrosekunda 9 gramów uległa rozkładowi.
  • Zmiana jest masowa z powodu rozkładu nie ma znaczenia.
  • Wszystkie dni i godziny następują po ogólnie przyjętym czasie na ziemi.
  • Pudełko, w którym zaplombowany jest Bob, jest nie do złamania i nie można go otworzyć, więc nie ma szans na śmierć z innych przyczyn.
  • Tlen również nie stanowi problemu.
  • Jeśli oba wystąpią dokładnie w tym samym czasie, każde wyjście jest akceptowalne.
  • Wszystkie dane wejściowe powinny być poniżej 2 ^ 63-1

Przypadki testowe:

Przykład:

18000 604800001

Aby rozpadło się 9 gramów, musi upłynąć dokładnie 1 okres półtrwania (18000/2 = 9000 miligramów lub 9 gramów). 1 okres półtrwania wynosi 604800001 milisekund lub 168 godzin i 1 milisekundę, lub dokładnie 1 tydzień i 1 milisekundę. Ponieważ Bob umiera z głodu dokładnie w 1 tygodniu, wynik jest fałszywy, ponieważ zmarł z głodu tuż przed osiągnięciem limitu produktu 9 gramów

8000 40000 false

70000 800 true

18000 604800000 either

18000 604800001 false

18000 604799999 true

1 1 false

100000 1 true

1000000000 1000000000 true

Punktacja: Oczywiście chcemy, aby cierpienie Boba szybko się skończyło, dlatego najlepszy jest krótszy okres półtrwania. Okres półtrwania i bajt kończą się na E, więc wyraźnie wygrywa najkrótsza liczba bajtów.

Boib
źródło
6
Zdajesz sobie sprawę, że substancja radioaktywna nigdy nie rozpada się w pełni
Rohan Jhunjhunwala
1
Nie mam pojęcia, co musimy tutaj zrobić ... Czy możesz przejść przez każdy krok, aby dowiedzieć się, czy wynik powinien być, trueczy false?
Beta Decay
Cześć i witamy w PPCG! Jak powiedzieli inni, przydałoby się nieco więcej wyjaśnień. Jeśli poruszysz kwestie poruszone powyżej, myślę, że może to być fajne wyzwanie i zostanie ono ponownie otwarte. Do wykorzystania w przyszłości mamy piaskownicę, aby autorzy mogli uzyskać informacje zwrotne na temat wyzwań przed opublikowaniem ich na głównej stronie.
AdmBorkBork,
3
Czy mógłbyś podać nam równanie, dla którego wartości wyjściowe dają wartość True?
xnor
1
@xnor Na okres półtrwania λi masy m, m-m*(1/2)**(604800000/λ) > 9000(lub , w przypadku, ponieważ krawędź może przejść w obu kierunkach).
Mego

Odpowiedzi:

9

Python 3, 33 bajty

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

Wyjaśnienie:

         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

Wypróbuj tutaj

Numer jeden
źródło
Również 33 bajty:lambda a,b:2**(-6048e5/b)+9e3/a<1
Daniel,
5

CJam (22 bajty)

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

Demo online

Sekcja

Szybkie wyjaśnienie matematyki: jeśli okres połowicznego rozpadu jest λwtedy, po pewnym czasie tpozostaje (1/2)^(t/λ)proporcja pozostałego materiału radioaktywnego , więc proporcja ulega rozkładowi 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! ?
Peter Taylor
źródło
5

Fourier, 51 bajtów

Muszę przyznać, że nie do końca rozumiem ten program ... Głównie tylko tłumaczenie kodu Python TheNumberOne.

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

Zauważ, że jest to pierwszy program, który napisałem dla PPCG, który korzysta @z funkcji Clear Output.

Wypróbuj online!

Rozpad beta
źródło
4
Dopasowanie nazwy użytkownika ...
ojdo
@ojdo Haha tak: D
Beta Decay
4

Właściwie 20 bajtów

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

Wypróbuj online!

Wyjaśnienie:

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?
Mego
źródło
3

Dyalog APL , 19 bajtów

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

9E3≤ jest 9000 mniejszy lub równy

⊣- lewy argument (masa) minus

⊣× czasy lewych argumentów

.5*  ½ do potęgi

6048E5÷⊢ 604800000 podzielone przez odpowiedni argument (okres półtrwania)

Nie potrzeba nawiasów, ponieważ APL jest ściśle od prawej do lewej.

Wypróbuj APL online!

Adám
źródło
1
19 bajtów. To jest dyaboliczne.
C. Tewalt,
@matrixugly W tym przypadku zapytałbym, dlaczego inne języki mają tyle puchu. Mam dokładnie jedną postać na „rzecz” w notacji o normalnym wyglądzie (jak matematyka).
Adám,