La curiosità uccise il gatto?


20

Alcuni dicono che la curiosità abbia ucciso il gatto. Altri dicono che era la scatola e il veleno. La RSPCA afferma che Erwin Schrödinger deve perdere il diritto di possedere animali domestici.

Con attivisti per i diritti degli animali fuori dalla sua casa. Lo scienziato assassino di gatti Schrödinger ha finalmente escogitato la sua più grande invenzione. Una speciale miscela radioattiva di unobtanium e handwavium che può avere qualsiasi emivita e un singolo grammo di prodotto è in grado di uccidere qualsiasi creatura vivente. Sfortunatamente, quando ha provato a testarlo sul suo ultimo gatto: Bob, ha dimenticato che i gatti hanno 9 vite e quindi avrebbe bisogno di 9 grammi per uccidere. Con un po 'd'acqua ma senza cibo, il povero Bob vivrà esattamente 1 settimana (7 giorni) se il prodotto non lo uccide per primo.

Il compito: dato un input di una massa in milligrammi e un'emivita in millisecondi - entrambi numeri interi che possono superare 2 ^ 31, scrivere un programma che emetta se il super prodotto misterioso uccide o meno il gatto o se è 1 settimana il limite scade prima. Assumi vero / sì / 1 / qualsiasi cosa specificata nella risposta è per quando non muore di fame.

Perché il prodotto lo uccida, devono decadere in totale 9 grammi. Quindi, su un campione di 18 grammi, deve passare 1 emivita. Se il campione contiene meno o uguale a 9 grammi, ciò non sarà mai raggiunto e quindi si può presumere immediatamente che passerà 1 settimana prima che decadano 9 grammi.

Puoi presumere:

  • Bob muore il microsecondo 9 grammi è decaduto.
  • Il cambiamento è di massa a causa del decadimento non importa.
  • Tutti i giorni e gli orari seguono l'ora della Terra generalmente accettata.
  • La scatola in cui è sigillato Bob è infrangibile e non aperto, quindi non c'è possibilità di morte per altre cause.
  • Anche l'ossigeno non è un problema.
  • Se entrambi si verificano contemporaneamente, l'output è accettabile.
  • Tutti gli ingressi dovrebbero essere inferiori a 2 ^ 63-1

Casi test:

Esempio:

18000 604800001

Per far decadere 9 grammi, deve passare esattamente 1 emivita (18000/2 = 9000 milligrammi o 9 grammi). 1 emivita è 604800001 millisecondi, o 168 ore e 1 millisecondo, o esattamente 1 settimana e 1 millisecondo. Poiché Bob muore di fame esattamente 1 settimana, l'output è falso poiché è morto di fame poco prima del raggiungimento del limite di 9 grammi di prodotto

8000 40000 false

70000 800 true

18000 604800000 either

18000 604800001 false

18000 604799999 true

1 1 false

100000 1 true

1000000000 1000000000 true

Punteggio: Naturalmente vogliamo che la sofferenza di Bob finisca rapidamente, quindi è meglio un'emivita più breve. L'emivita e il byte terminano entrambi in E, quindi vince il conteggio dei byte più breve.


6
Ti rendi conto che una sostanza radioattiva non decade mai completamente
Rohan Jhunjhunwala,

1
Non ho idea di cosa dobbiamo fare qui ... Puoi seguire ogni passaggio per scoprire se l'output dovrebbe essere trueo false?
Decadimento beta

Ciao e benvenuto in PPCG! Come altri hanno già detto, questo potrebbe usare solo un po 'più di chiarimenti. Se affronti i punti sollevati sopra, penso che questa potrebbe essere una bella sfida, e si riaprirebbe. Per riferimento futuro, abbiamo a disposizione un Sandbox in modo che gli autori possano ricevere feedback sulle sfide prima di pubblicarle sul sito principale.
AdmBorkBork,

3
Potresti darci un'equazione per quali output danno True?
xnor

1
@xnor Per emivita λe massa m, m-m*(1/2)**(604800000/λ) > 9000(o , quanto il caso limite può andare in entrambi i casi).
Mego,

Risposte:


9

Python 3, 33 byte

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

Spiegazione:

         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

Prova qui


Anche 33 byte:lambda a,b:2**(-6048e5/b)+9e3/a<1
Daniel,

5

CJam (22 byte)

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

Demo online

Dissezione

Una rapida spiegazione della matematica: se l'emivita è λdopo il tempo tla proporzione del materiale radioattivo rimanente è (1/2)^(t/λ), quindi la proporzione è decaduta 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

Fourier, 51 byte

Devo ammettere che non capisco perfettamente questo programma ... Principalmente solo una traduzione del codice Python di TheNumberOne.

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

Nota che questo è il primo programma che ho scritto per PPCG che utilizza @la funzione di output chiaro.

Provalo online!


4
Nome utente
adatto

@ojdo Haha sì: D
Decadimento beta

4

In realtà, 20 byte

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

Provalo online!

Spiegazione:

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

Dyalog APL , 19 byte

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

9E3≤ è 9000 inferiore o uguale a

⊣- argomento sinistro (massa) meno

⊣× volte l'argomento sinistro

.5*  ½ alla potenza di

6048E5÷⊢ 604800000 diviso per l'argomento giusto (emivita)

Non c'è bisogno di parentesi, poiché APL è strettamente da destra a sinistra.

ProvaAPL online!


1
19 byte. Questo è metabolico.
C. Tewalt,

@matrixugly In questo caso, chiedo perché le altre lingue abbiano così tanta lanugine. Ho esattamente un carattere per "cosa" in una notazione infix (come la matematica) piuttosto normale.
Adám,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.