La curiosité a tué le chat?

20

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.

Boib
la source
6
Vous vous rendez compte qu'une substance radioactive ne se désintègre jamais complètement
Rohan Jhunjhunwala
1
Je n'ai aucune idée de ce que nous devons faire ici ... Pouvez-vous passer par chaque étape pour savoir si la sortie doit être trueou false?
Beta Decay
Salut et bienvenue à PPCG! Comme d'autres l'ont dit, cela pourrait nécessiter un peu plus de clarification. Si vous abordez les points soulevés ci-dessus, je pense que cela pourrait être un défi de taille et qu'il serait rouvert. Pour référence future, nous avons un bac à sable disponible afin que les auteurs puissent obtenir des commentaires sur les défis avant de les publier sur le site principal.
AdmBorkBork
3
Pourriez-vous nous donner une équation pour laquelle les sorties donnent True?
xnor
1
@xnor Pour la demi-vie λet de masse m, m-m*(1/2)**(604800000/λ) > 9000(ou , étant donné que le cas de bord peut aller de toute façon).
Mego

Réponses:

9

Python 3, 33 octets

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

Explication:

         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

Essayez ici

Le numéro un
la source
Aussi 33 octets:lambda a,b:2**(-6048e5/b)+9e3/a<1
Daniel
5

CJam (22 octets)

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

Démo en ligne

Dissection

Une explication rapide des maths: si la demi-vie est λaprès le temps, tla proportion de matière radioactive restante est (1/2)^(t/λ), alors la proportion décomposée l'est 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
la source
5

Fourier, 51 octets

Je dois admettre que je ne comprends pas bien ce programme ... Principalement juste une traduction du code Python de TheNumberOne.

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

Notez que c'est le premier programme que j'ai écrit pour PPCG qui utilise @la fonction de sortie claire.

Essayez-le en ligne!

Beta Decay
la source
4
Ajuster le
@ojdo Haha yes: D
Beta Decay
4

En fait, 20 octets

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

Essayez-le en ligne!

Explication:

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
la source
3

Dyalog APL , 19 octets

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

9E3≤ est 9000 inférieur ou égal à

⊣- l'argument gauche (masse) moins

⊣× les temps d'argument gauche

.5*  ½ à la puissance de

6048E5÷⊢ 604800000 divisé par le bon argument (demi-vie)

Pas besoin de parenthèses, car APL est strictement de droite à gauche.

TryAPL en ligne!

Adam
la source
1
19 octets. C'est dyabolique.
C. Tewalt
@matrixugly Dans ce cas, je demanderais pourquoi les autres langues ont autant de peluches. J'ai exactement un caractère par "chose" dans une notation infixe d'aspect normal (comme les mathématiques).
Adám