Certaines personnes disent que la curiosité a tué le chat. D'autres disent que c'était la boîte et le poison. La RSPCA affirme qu'Erwin Schrödinger doit perdre le droit de posséder des animaux domestiques.
Avec des militants des droits des animaux devant sa maison. Le scientifique meurtrier de chats Schrödinger a finalement trouvé sa plus grande invention. Un mélange radioactif spécial d'unobtanium et de handwavium qui peut avoir n'importe quelle demi-vie, et un seul gramme du produit est capable de tuer toute créature vivante. Malheureusement, quand il a essayé de le tester sur son dernier chat: Bob, il a oublié que les chats ont 9 vies et auraient donc besoin de 9 grammes pour tuer. Avec un peu d'eau mais pas de nourriture, le pauvre Bob vivra exactement 1 semaine (7 jours) si le produit ne le tue pas en premier.
La tâche: étant donné une entrée d'une masse en milligrammes et d'une demi-vie en millisecondes - les deux entiers pouvant dépasser 2 ^ 31, écrire un programme qui indique si le super produit mystère tue le chat, ou si c'est 1 semaine expire en premier. Supposons que vrai / oui / 1 / tout ce qui est spécifié dans la réponse est pour quand il ne meurt pas de faim.
Pour que le produit le tue, un total de 9 grammes doit se désintégrer. Ainsi, sur un échantillon de 18 grammes, 1 demi-vie doit passer. Si l'échantillon contient moins ou égal à 9 grammes, cela ne sera jamais atteint, et on peut donc supposer immédiatement qu'une semaine s'écoulera avant que 9 grammes ne se désintègrent.
Vous pouvez supposer:
- Bob meurt la microseconde 9 grammes s'est décomposée.
- Le changement de masse dû à la décomposition n'a pas d'importance.
- Tous les jours et heures suivent le temps terrestre généralement accepté.
- La boîte dans laquelle Bob est scellé est incassable et ne peut pas être ouverte, il n'y a donc aucune chance de mort due à d'autres causes.
- L'oxygène n'est pas non plus un problème.
- Si les deux se produisent en même temps, l'une ou l'autre sortie est acceptable.
- Toutes les entrées doivent être inférieures à 2 ^ 63-1
Cas de test:
Exemple:
18000 604800001
Pour que 9 grammes se désintègrent, exactement 1 demi-vie doit passer (18000/2 = 9000 milligrammes ou 9 grammes). 1 demi-vie est de 604800001 millisecondes, ou 168 heures et 1 milliseconde, ou exactement 1 semaine et 1 milliseconde. Étant donné que Bob meurt de faim à exactement 1 semaine, la sortie est fausse car il est mort de faim juste avant que la limite de 9 grammes de produit ne soit atteinte
8000 40000 false
70000 800 true
18000 604800000 either
18000 604800001 false
18000 604799999 true
1 1 false
100000 1 true
1000000000 1000000000 true
Notation: Naturellement, nous voulons que la souffrance de Bob cesse rapidement, et donc une demi-vie plus courte est préférable. La demi-vie et l'octet se terminent tous les deux en E. Par conséquent, le nombre d'octets le plus court l'emporte clairement.
true
oufalse
?λ
et de massem
,m-m*(1/2)**(604800000/λ) > 9000
(ou≥
, étant donné que le cas de bord peut aller de toute façon).Réponses:
Python 3, 33 octets
Explication:
Essayez ici
la source
lambda a,b:2**(-6048e5/b)+9e3/a<1
CJam (22 octets)
Démo en ligne
Dissection
Une explication rapide des maths: si la demi-vie est
λ
après le temps,t
la proportion de matière radioactive restante est(1/2)^(t/λ)
, alors la proportion décomposée l'est1 - (1/2)^(t/λ)
.la source
Fourier, 51 octets
Je dois admettre que je ne comprends pas bien ce programme ... Principalement juste une traduction du code Python de TheNumberOne.
Notez que c'est le premier programme que j'ai écrit pour PPCG qui utilise
@
la fonction de sortie claire.Essayez-le en ligne!
la source
En fait, 20 octets
Essayez-le en ligne!
Explication:
la source
Dyalog APL , 19 octets
9E3≤
est 9000 inférieur ou égal à⊣-
l'argument gauche (masse) moins⊣×
les temps d'argument gauche.5*
½ à la puissance de6048E5÷⊢
604800000 divisé par le bon argument (demi-vie)Pas besoin de parenthèses, car APL est strictement de droite à gauche.
TryAPL en ligne!
la source