Reto
Estoy siendo atacado por el larguero Midnight Crew y necesito convocar al Catenative Doomsday Dice Cascader para defenderme. Como tengo poco espacio, necesito que el código sea lo más corto posible.
El algoritmo para el Catenative Doomsday Dice Cascader es el siguiente:
Primero, se tira el dado de seis lados en la Burbuja Prime, y el resultado determinará cuántas iteraciones del próximo paso tienen lugar.
Comience con un dado de seis lados. Por tantas veces como la tirada del dado de Prime Bubble, multiplique el número de lados en el próximo dado por el resultado de la tirada del dado actual. Por ejemplo, si en su primera tirada del dado de seis lados su tirada es 2, entonces su próximo dado tendrá 6 * 2 = 12 lados.
Su objetivo es escribir una función o programa que no tome entrada y produzca el resultado final del último dado lanzado. Como se trata de un código de golf , ¡el recuento de bytes más bajo en cada idioma gana!
Ejemplos
Ejemplo # 1 (Tomado directamente del enlace de arriba):
The Prime Bubble rolls a 6, meaning that the Cascader will iterate six times
#1: We always start with a 6 sided die, and it rolls a 2, so the next die has 6x2=12 sides
#2: The 12 sided die rolls an 8, meaning that the third die has 12x8=96 sides
#3: The 96 sided die rolls a 35, meaning that die 4 has 96x35=3360 sides
#4: The 3360 sided die rolls a 2922, so die 5 has 3360x2922 = 9,817,920 sides
#5: The 9.8 million sided die rolls a 5,101,894, so the final die has 50,089,987,140,480 sides
#6: The 50 trillion sided die rolls a one. Hooray.
Since the last die rolled gave a 1, your function or program should output 1.
Ejemplo # 2
The Prime Bubble rolls a 2, meaning that the Cascader will iterate twice.
#1: We always start with a 6 sided die, and it rolls a 4, so the next die has 6x4 = 24 sides
#2: The 24 sided die rolls a 14
Since the last die rolled gave a 14, your function or program should output 14.
Respuestas:
Python 2 ,
7669 bytesPruébalo en línea!
fuente
Perl 6 ,
4337 bytes-6 bytes gracias a nwellnhof
Pruébalo en línea!
Bloque de código anónimo que devuelve el resultado del dado del fin del mundo.
Explicación:
fuente
Wolfram Language (Mathematica) , 43 bytes
Pruébalo en línea!
fuente
J , 21 bytes
Pruébalo en línea!
+6 bytes gracias a un problema lógico detectado por FrownyFrog
NOTA: J no tiene verbos niládicos. Sin embargo, este verbo funcionará igual sin importar el argumento que le des. En el ejemplo de TIO, lo llamo con
0
, pero podría haberlo usado99
o''
igual de bien.cómo
1+
agrega uno a ...[:?
un solo rollo de una matriz de n lados (lados lectura0
an-1
), donde el númeron
se determina por ...(*1+?)
toma el argumento actualy
y rueda?
para producir un número aleatorio entre0
yy-1
.1+
hace que1
ay
, ambos inclusive. Finalmente,*
crea un gancho J, que multiplicará esoy
nuevamente.^:
hacer lo anterior muchas veces ...(?`])
?
tira el argumento inicial, que es6
, para determinar cuántas veces repetir. Si tiramos0
(correspondiente a a1
en Prime Bubble), el argumento pasará sin cambios. El]
indica que6
, sin cambios, será el valor inicial del(*1+?)
verbo repetido que determina el valor del dado para la tirada final.@6x
adjunta el verbo constante6
, de modo que podamos llamarlo con cualquier cosa, yx
obliga a J a usar el cómputo entero extendido que necesitamos para los números posiblemente enormes.fuente
in this case 0 executes the previous verb once, 1 twice, etc
¿porqué es eso?K (oK) , 32 bytes
Solución:
Pruébalo en línea!
Comience con 6 y "1 elige 6", repite "1 elige 6" veces:
Puede ver las iteraciones cambiando la imagen para un escaneo , p. Ej.
fuente
(*).x
->*/x
y{
}/[*a;6,a:1+1?6]
->a{
}/6,a:*1+1?6
Jalea , 9 bytes
Un enlace niládico que produce un número entero positivo.
Pruébalo en línea!
Guardar un byte sobre lo más obvio
6X×$6X’¤¡X
¿Cómo?
fuente
05AB1E , 10 bytes
La elección aleatoria incorporada para listas grandes es bastante lenta, por lo que puede dar lugar a un tiempo de espera si el lanzamiento de Prime Bubble es, por ejemplo, un 6.
Pruébelo en línea o pruébelo en línea con impresiones adicionales para ver los rollos . (TIO utiliza la versión heredada de 05AB1E, ya que es un poco más rápido).
Explicación:
fuente
Jalea , 9 bytes
Pruébalo en línea!
La respuesta de Jonathan Allan afirma que es
. De hecho, no necesitamos hacer una modificación tan grande. Por lo tanto, este es un enfoque alternativo a la respuesta de Jonathan Allan y, también, un lugar de descanso para mi 6-byter inicial no válido. :(
fuente
Perl 5 , 54 bytes
Pruébalo en línea!
fuente
Carbón , 16 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Empuje 6 a la lista predefinida.
Repita un número aleatorio de veces de 1 a 6 ...
... empuje un número aleatorio entre 1 y el producto de la lista a la lista.
Salida del último número empujado a la lista.
Enfoque alternativo, también 16 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Establece el número de lados en 6.
Repita un número aleatorio entre 0 y 5 veces ...
... multiplique el número de lados por un número aleatorio de 1 al número de lados.
Imprime un número aleatorio del 1 al número de lados.
fuente
Python 3 , 76 bytes
Pruébalo en línea!
-2 bytes gracias a TFeld
fuente
R , 43 bytes
Pruébalo en línea!
k
realiza un seguimiento del número actual de caras en el dado. Utiliza el hecho de queT
se inicializa como1
.Intenté algunas otras cosas, pero no pude superar este enfoque simple y directo.
fuente
Jalea , 10 bytes
Pruébalo en línea!
Explicación
fuente
Ruby , 41 bytes
Pruébalo en línea!
Explicación
fuente
Java 10,
2149386 bytesPruébelo en línea o pruébelo en línea con líneas de impresión adicionales para ver los pasos .
int
java.math.BigInteger
int
long
BigInteger
int
BigIntegers
Explicación:
fuente
int
int
tipo.PHP , 59 bytes
expandido:
No estoy seguro si se supone que debo incluir la etiqueta abierta.
En mi máquina, se bloquea si
$s*$r
es demasiado grande, por lo que a$q>=5
veces no se imprime ... porque los números se vuelven muy grandes. No estoy seguro de una solución.fuente
Pyth , 14 bytes
Pruébalo en línea!
fuente
C # (.NET Core) , 136 bytes
Pruébalo en línea!
Estoy bastante seguro de que esto funciona, dada la suposición de longitud entera infinita que nos gusta aquí. Si realmente tengo que manejar el desbordamiento, necesitaría sacar una clase completamente diferente.
fuente
System.ArgumentOutOfRangeException: 'maxValue' must be greater than zero
int
long
BigIntegers
Julia 1.0 , 60 bytes
b=big(6)
hace que funcione con enteros de tamaño arbitrario ¡ Pruébelo en línea!fuente
Gaia , 13 bytes
Pruébalo en línea!
fuente