En este desafío de código de golf , debe generar un ascii-art de una tirada de dado al azar.
Me gusta esto:
________
/\ \
/ \ 6 \
{ 4 }-------}
\ / 5 /
\/_______/
Tenga en cuenta que:
________
/\ \
/ \ 3 \
{ 4 }-------}
\ / 5 /
\/_______/
es una salida no válida, porque ese no es un resultado posible en un dado
Hay 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 posibilidades de tiradas de dado.
Su programa debe generar una de estas tiradas de dados en forma de arte ascii (modelado como el siguiente, con las xy y zs reemplazadas por números) como arriba, con cada salida teniendo> 0 probabilidad de ocurrir, pero las probabilidades no tienen que ser pares (se les permite ser dados trucos, a diferencia de la vida real). Su programa no puede generar una tirada de dado no válida o una tirada que no sea de dado. Su programa debe tener una probabilidad de 1 de generar una tirada válida
Tenga en cuenta que su dado no necesariamente tiene que ser un dado diestro como se muestra en la primera imagen. (diestros y zurdos describen la red del dado)
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 su dado es zurdo, lo siguiente es una salida válida, pero no si su dado es diestro:
________
/\ \
/ \ 2 \
{ 1 }-------}
\ / 3 /
\/_______/
Si bien puede elegir zurdos o diestros, su dado debe ser consistente: no puede cambiar de izquierda a derecha o viceversa
La siguiente es una lista de salidas válidas para el dado. Consulte las imágenes de arriba para ver las posiciones 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
de nuevo, esto es código golf , por lo que menos bytes es mejor
Respuestas:
Python 3,
197196192bytesPruébalo en ideone
Derecha (cambie a zurdo intercambiando
u*u
conl*l
en la última línea)Obligado a ser derrotado, pero dejemos que los dados salgan a la luz , especialmente porque todos mis intentos de jugar al golf ASCII, excepto ir sin procesar y usar el formato de la vieja escuela, no pudieron guardar bytes;
- Cualquier otro consejo de golf para un n00b gustosamente apreciado.
fuente
from random import*
yc=choice
.*
; ¡ejército de reserva!%d
, use%4d
en su lugar y lo rellenará adecuadamente para usted. Es posible que también puedas aprovecharlo para otras partes del dado.C, 177
En programa de prueba
Explicación
fuente
Javascript
238232207201 bytesque cuando no tiene golf es:
Algoritmo
Tenga en cuenta que en cada una de las 8 intersecciones de esquina de un dado, los valores de la cara del dado de intersección son fijos, pero pueden aparecer en cualquiera de las 3 rotaciones. Por ejemplo, mientras mira hacia abajo en la esquina "1", "2", "3", el dado se puede girar alrededor de un eje a través de la esquina y fuera de la esquina opuesta, para mostrar "1", "2" o "3" además del art. ASCII
v
codifica las caras del troquel que se cruzan en cada esquina,b
es un desplazamiento al comienzo de una esquina aleatoria yo
es el comienzo de la rotación dentro de los datos de la esquina. El arte ASCII se escribe en la consola usando unaconsole.log
cadena de formato.fuente
`
comillas que permitan el uso de caracteres de nueva línea literales en lugar de tener que escribir\n
todo el tiempo.';'
TSQL 308 bytes
280 bytes (en Server Management Studio: Consulta - resultado en texto)
Nota: al eliminar la impresión y la parte de declaración, y generar el resultado directamente desde SELECT. Sin embargo, eso no funcionaría en el violín
Violín
fuente
ABS(a^3*b-a*b^3)
para guardar 4 bytes? (No estoy seguro, parece funcionar en el violín, pero solo me da una sola tirada de a, b, c = 5,1,3, así que puedo estar equivocado)Javascript, 251 bytes
Llamar usando
u();
Es largo pero es una respuesta, y no he respondido en mucho tiempo.
fuente
a=()=>(0|Math.random()*6)+1;
debería ahorrar 8Ruby, 150 bytes
Todo el abuso de formato de cadena !!!
El crédito por la fórmula para obtener el último número va a @xnor aquí .
fuente