¿La curiosidad mató al gato?

20

Algunas personas dicen que la curiosidad mató al gato. Otros dicen que fue la caja y el veneno. La RSPCA dice que Erwin Schrödinger necesita perder el derecho a tener mascotas.

Con activistas por los derechos de los animales fuera de su casa. El científico asesino de gatos Schrödinger finalmente ha inventado su mayor invento. Una mezcla radiactiva especial de unobtanium y handwavium que puede tener cualquier semivida, y un solo gramo del producto es capaz de matar a cualquier criatura viviente. Desafortunadamente, cuando trató de probarlo en su último gato: Bob, olvidó que los gatos tienen 9 vidas, por lo que necesitaría 9 gramos para matar. Con un poco de agua pero sin comida, el pobre Bob vivirá exactamente 1 semana (7 días) si el producto no lo mata primero.

La tarea: dada una entrada de una masa en miligramos y una vida media en milisegundos, ambos enteros que pueden exceder 2 ^ 31, escribir un programa que muestre si el súper producto misterioso mata o no al gato, o si es 1 semana El límite caduca primero. Suponga que verdadero / sí / 1 / cualquier cosa especificada en la respuesta es para cuando no muere de hambre.

Para que el producto lo mate, se deben descomponer un total de 9 gramos. Entonces, de una muestra de 18 gramos, debe pasar 1 vida media. Si la muestra contiene menos de o igual a 9 gramos, esto nunca se logrará, por lo que se puede suponer de inmediato que pasará 1 semana antes de que se descompongan 9 gramos.

Puedes asumir:

  • Bob muere el microsegundo 9 gramos ha decaído.
  • El cambio es masa debido a la descomposición no importa.
  • Todos los días y horas siguen el tiempo terrestre generalmente aceptado.
  • La caja en la que está sellado Bob es irrompible y no se puede abrir, por lo que no hay posibilidad de muerte por otras causas.
  • El oxígeno tampoco es un problema.
  • Si ambos suceden exactamente al mismo tiempo, cualquier salida es aceptable.
  • Todas las entradas deben estar por debajo de 2 ^ 63-1

Casos de prueba:

Ejemplo:

18000 604800001

Para que se descompongan 9 gramos, debe pasar exactamente 1 vida media (18000/2 = 9000 miligramos o 9 gramos). 1 vida media es 604800001 milisegundos, o 168 horas y 1 milisegundo, o exactamente 1 semana y 1 milisegundo. Como Bob muere de hambre exactamente en 1 semana, la producción es falsa ya que murió de hambre justo antes de que se alcanzara el límite de producto de 9 gramos.

8000 40000 false

70000 800 true

18000 604800000 either

18000 604800001 false

18000 604799999 true

1 1 false

100000 1 true

1000000000 1000000000 true

Puntuación: Naturalmente, queremos que el sufrimiento de Bob termine rápidamente, por lo que es mejor una vida media más corta. La vida media y el byte terminan en E, por lo que claramente gana el conteo de bytes más corto.

Boib
fuente
66
Te das cuenta de que una sustancia radiactiva nunca se descompone por completo
Rohan Jhunjhunwala
1
No tengo idea de lo que tenemos que hacer aquí ... ¿Puedes seguir cada paso para averiguar si la salida debería ser trueo false?
Beta Decay
Hola y bienvenido a PPCG! Como otros han dicho, esto podría usar un poco más de aclaración. Si aborda los puntos planteados anteriormente, creo que este podría ser un gran desafío, y se reabriría. Para referencia futura, tenemos un Sandbox disponible para que los autores puedan obtener comentarios sobre los desafíos antes de publicarlos en el sitio principal.
AdmBorkBork
3
¿Podría darnos una ecuación para qué salidas dan Verdadero?
xnor
1
Para @xnor vida media λy la masa m, m-m*(1/2)**(604800000/λ) > 9000(o , dado el caso extremo puede ir en cualquier dirección).
Mego

Respuestas:

9

Python 3, 33 bytes

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

Explicación:

         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

Intenta aquí

El numero uno
fuente
También 33 bytes:lambda a,b:2**(-6048e5/b)+9e3/a<1
Daniel
5

CJam (22 bytes)

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

Demostración en línea

Disección

Una explicación rápida de las matemáticas: si la vida media es λ, después de un tiempo, tla proporción del material radiactivo restante es (1/2)^(t/λ), entonces la proporción decaída es 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
fuente
5

Fourier, 51 bytes

Tengo que admitir que no entiendo completamente este programa ... Principalmente solo una traducción del código Python de TheNumberOne.

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

Tenga en cuenta que este es el primer programa que he escrito para PPCG que utiliza @la función de salida clara.

Pruébalo en línea!

Decaimiento Beta
fuente
44
Nombre de usuario
apropiado
@ojdo Jaja sí: D
Beta Decay
4

En realidad, 20 bytes

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

Pruébalo en línea!

Explicación:

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
fuente
3

Dyalog APL , 19 bytes

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

9E3≤ es 9000 más pequeño o igual a

⊣- el argumento izquierdo (masa) menos

⊣× los tiempos de discusión de la izquierda

.5*  ½ al poder de

6048E5÷⊢ 604800000 dividido por el argumento correcto (semivida)

No hay necesidad de paréntesis, ya que APL es estrictamente de derecha a izquierda.

TryAPL en línea!

Adán
fuente
1
19 bytes. Eso es diabólico.
C. Tewalt
@matrixugly En este caso, preguntaría por qué los otros idiomas tienen tanta pelusa. Tengo exactamente un personaje por "cosa" en una notación de infijo de aspecto bastante normal (como las matemáticas).
Adám