Dans ce défi de code-golf , vous devez produire un art ascii d'un jet de dé aléatoire.
comme ça:
________
/\ \
/ \ 6 \
{ 4 }-------}
\ / 5 /
\/_______/
Veuillez noter que:
________
/\ \
/ \ 3 \
{ 4 }-------}
\ / 5 /
\/_______/
est une sortie non valide, car ce n'est pas un résultat possible sur un dé
Il y a 6(faces that could be up)*4(faces that could be the left face after the top is determined)*1(faces that could be the right face after the other two are determined)
= 24 possibilités de jets de dé.
Votre programme doit sortir l'un de ces jets de dé sous la forme d'un art ascii (modélisé comme celui ci-dessous, avec les xy et zs remplacés par des nombres) comme ci-dessus, chaque sortie ayant> 0 probabilité de se produire, mais les probabilités ne le font pas doivent être égaux (ils sont autorisés à être des dés pièges, contrairement à la vie réelle). Votre programme ne peut pas sortir un jet de dé invalide ou un jet de dé non. Votre programme doit avoir une probabilité de 1 de sortir un rouleau valide
Veuillez noter que votre dé ne doit pas nécessairement être un dé droitier comme indiqué sur la première image. (droitiers et gauchers décrivent le filet du dé)
right-handed die
________
/\ \ net
/ \ z \ _|4|_ _
{ x }-------} |6|2|1|5|
\ / y / |3|
\/_______/
left handed die
________
/\ \ net
/ \ y \ _|3|_ _
{ x }-------} |6|2|1|5|
\ / z / |4|
\/_______/
Si votre dé est gaucher, ce qui suit est une sortie valide, mais pas si votre dé est droitier:
________
/\ \
/ \ 2 \
{ 1 }-------}
\ / 3 /
\/_______/
Bien que vous puissiez choisir gaucher ou droitier, votre dé doit être cohérent: il ne peut pas changer de gauche à droite ou vice versa
ce qui suit est une liste de sorties valides pour le dé. Référez-vous aux images ci-dessus pour les positions de XYZ:
X-Y-Z
-----
5-4-1
1-5-4
4-1-5
5-6-4
4-5-6
6-4-5
5-3-6
6-5-3
3-6-5
5-1-3
3-5-1
1-3-5
2-6-3
3-2-6
6-3-2
2-4-6
6-2-4
4-6-2
2-1-4
4-2-1
1-4-2
2-3-1
1-2-3
3-1-2
encore une fois, c'est le code-golf , donc moins d'octets est mieux
Réponses:
Python 3,
197 196192 octetsTestez-le sur ideone
Droitier (passer à un gaucher en échangeant
u*u
avecl*l
sur la dernière ligne)Bound to be beat - mais passons les dés à soupirer - d'autant plus que toutes mes tentatives pour jouer au golf ASCII, sauf aller brut et utiliser un formatage old-school, n'ont pas réussi à économiser des octets;
- d'autres conseils de golf pour un n00b volontiers appréciés.
la source
from random import*
etc=choice
.*
; ta!%d
, utilisez%4d
plutôt et cela le remplira correctement pour vous. Vous pourrez peut-être également l'utiliser pour d'autres parties du dé.C, 177
En programme de test
Explication
la source
Javascript
238232207201 octetsqui, quand il n'est pas golfé, est:
Algorithme
Considérez qu'à chacune des 8 intersections d'angle d'un dé, les valeurs de face de dé qui se croisent sont fixes mais peuvent apparaître dans l'une des 3 rotations. Par exemple, tout en regardant le coin "1", "2", "3", le dé peut être tourné autour d'un axe à travers le coin et à l'extérieur du coin opposé, pour afficher "1", "2" ou "3" en plus de l'art ASCII.
v
code en dur les faces de la matrice qui se croisent à chaque coin,b
est un décalage par rapport au début d'un coin aléatoire eto
est le début de la rotation dans les données de coin. L'art ASCII est écrit sur la console à l'aide d'uneconsole.log
chaîne de format.la source
`
guillemets qui permettent d'utiliser des caractères de nouvelle ligne littéraux au lieu d'avoir à écrire\n
tout le temps.';'
TSQL 308 octets
280 octets (dans Server Management Studio: requête - résultat en texte)
Remarque: en supprimant l'impression et la partie de déclaration - et la sortie du résultat directement à partir du SELECT. Mais ça ne marcherait pas au violon
Violon
la source
ABS(a^3*b-a*b^3)
pour enregistrer 4 octets? (Je ne suis pas sûr - semble fonctionner dans le violon, mais il ne me donne qu'un seul rouleau de a, b, c = 5,1,3 donc je peux me tromper)Javascript, 251 octets
Appeler en utilisant
u();
C'est long mais c'est une réponse, et je n'ai pas répondu depuis longtemps.
la source
a=()=>(0|Math.random()*6)+1;
devrait sauver 8Rubis, 150 octets
Tous les abus de formatage de chaînes !!!
Le crédit pour la formule obtenant le dernier nombre va à @xnor ici .
la source