Défi
Je suis attaqué par le Larcenous Midnight Crew et j'ai besoin d'invoquer le Catenative Doomsday Dice Cascader afin de me défendre. Comme je manque d'espace, j'ai besoin que le code soit aussi court que possible.
L'algorithme du Cascader de dés Catenative Doomsday est le suivant:
Tout d'abord, le dé à six faces dans la bulle principale est lancé et le résultat déterminera le nombre d'itérations de la prochaine étape.
Commencez avec un dé à six faces. Pour autant de fois que le jet du dé Prime Bubble, multipliez le nombre de faces du dé suivant par le résultat du jet du dé en cours. Par exemple, si sur votre premier jet du dé à six faces votre jet est de 2, alors votre prochain dé aura 6 * 2 = 12 faces.
Votre objectif est d'écrire une fonction ou un programme qui ne prend aucune entrée et génère le résultat final du dernier dé lancé. Puisqu'il s'agit de code-golf , le nombre d'octets le plus bas dans chaque langue gagne!
Exemples
Exemple # 1 (extrait directement du lien ci-dessus):
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.
Exemple # 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.
Réponses:
Python 2 ,
7669 octetsEssayez-le en ligne!
la source
Perl 6 ,
4337 octets-6 octets grâce à nwellnhof
Essayez-le en ligne!
Bloc de code anonyme qui renvoie le résultat du dé du jour du jugement dernier.
Explication:
la source
Wolfram Language (Mathematica) , 43 octets
Essayez-le en ligne!
la source
J , 21 octets
Essayez-le en ligne!
+6 octets grâce à un problème de logique repéré par FrownyFrog
REMARQUE: J n'a pas de verbes niladiques. Cependant, ce verbe fonctionnera de la même manière quel que soit l'argument que vous lui donnerez. Dans l'exemple TIO, je l'appelle avec
0
, mais j'aurais pu utiliser99
ou''
tout aussi bien.Comment
1+
ajouter un à ...[:?
un seul rouleau d'une matrice à n côtés (côtés lecture0
àn-1
), où le nombren
est déterminé par ...(*1+?)
prendre l'argument actuely
et lancer?
pour produire un nombre aléatoire entre0
ety-1
.1+
fait que1
poury
, y compris. Enfin, le*
crée un crochet en J, qui le multipliera ày
nouveau.^:
faites cela plusieurs fois ...(?`])
?
lancer l'argument initial, qui est6
, pour déterminer combien de fois répéter. Si nous roulons0
(correspondant à un1
sur la bulle principale), l'argument passera inchangé. Le]
indique que6
, inchangée, sera la valeur de départ du(*1+?)
verbe répété qui détermine la valeur du dé pour le lancer final.@6x
attache le verbe constant6
, afin que nous puissions l'appeler avec n'importe quoi, etx
force J à utiliser le calcul entier étendu dont nous avons besoin pour les nombres éventuellement énormes.la source
in this case 0 executes the previous verb once, 1 twice, etc
pourquoi donc?K (oK) , 32 octets
Solution:
Essayez-le en ligne!
Commencez par 6 et "1 choisissez 6", répétez sur "1 choisissez 6" fois:
Vous pouvez voir les itérations en basculant sur pour un scan , par exemple
la source
(*).x
->*/x
et{
}/[*a;6,a:1+1?6]
->a{
}/6,a:*1+1?6
Gelée , 9 octets
Un lien niladique qui donne un entier positif.
Essayez-le en ligne!
Enregistrer un octet sur le plus évident
6X×$6X’¤¡X
Comment?
la source
05AB1E , 10 octets
Le choix aléatoire intégré pour les grandes listes est assez lent, il peut donc en résulter un délai d'attente si le rouleau Prime Bubble est par exemple un 6.
Essayez-le en ligne ou essayez-le en ligne avec des impressions supplémentaires pour voir les rouleaux . (TIO utilise la version héritée de 05AB1E, car elle est légèrement plus rapide.)
Explication:
la source
Gelée , 9 octets
Essayez-le en ligne!
La réponse de Jonathan Allan affirme qu'il est
. En fait, nous n'avons pas besoin d'apporter une modification aussi importante. Par conséquent, c'est une approche alternative à la réponse de Jonathan Allan, et, aussi, un lieu de repos pour mon 6 octets invalide initial. :(
la source
Perl 5 , 54 octets
Essayez-le en ligne!
la source
Fusain , 16 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Poussez 6 vers la liste prédéfinie.
Répétez un nombre aléatoire de fois de 1 à 6 ...
... poussez un nombre aléatoire entre 1 et le produit de la liste dans la liste.
Sortez le dernier numéro poussé dans la liste.
Approche alternative, également 16 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Définissez le nombre de côtés sur 6.
Répétez un nombre aléatoire entre 0 et 5 fois ...
... multipliez le nombre de côtés par un nombre aléatoire de 1 au nombre de côtés.
Imprimez un nombre aléatoire de 1 au nombre de côtés.
la source
Python 3 , 76 octets
Essayez-le en ligne!
-2 octets grâce à TFeld
la source
R , 43 octets
Essayez-le en ligne!
k
garde une trace du nombre actuel de faces sur le dé. Utilise le fait quiT
est initialisé en tant que1
.J'ai essayé quelques autres choses, mais je n'ai pas pu battre cette approche simple et directe.
la source
Gelée , 10 octets
Essayez-le en ligne!
Explication
la source
Rubis , 41 octets
Essayez-le en ligne!
Explication
la source
Java 10,
2149386 octetsEssayez-le en ligne ou essayez-le en ligne avec des lignes d'impression supplémentaires pour voir les étapes .
int
java.math.BigInteger
int
long
BigInteger
int
BigIntegers
Explication:
la source
int
int
type.PHP , 59 octets
étendu:
Je ne sais pas si je suis censé inclure la balise ouverte.
Sur ma machine, il se bloque s'il
$s*$r
est trop grand, donc il ne s'imprime pas$q>=5
parfois ... parce que les chiffres deviennent si gros. Pas sûr d'un correctif.la source
Pyth , 14 octets
Essayez-le en ligne!
la source
C # (.NET Core) , 136 octets
Essayez-le en ligne!
Je suis presque sûr que cela fonctionne, étant donné l'hypothèse d'une longueur entière infinie que nous aimons ici. Si je dois réellement gérer le débordement, j'aurais besoin de sortir d'une classe entièrement différente.
la source
System.ArgumentOutOfRangeException: 'maxValue' must be greater than zero
int
long
BigIntegers
Julia 1.0 , 60 octets
b=big(6)
le fait fonctionner avec des entiers de taille arbitraire Essayez-le en ligne!la source
Gaia , 13 octets
Essayez-le en ligne!
la source