Genere una cuadrícula de 4x12 de letras / espacios:
Cada dado debe aparecer precisamente una vez, ubicación elegida al azar. Las ubicaciones deben ser aproximadas, una permutación aleatoria uniforme de los dados. Muestre una cara aleatoria (de nuevo, aproximadamente uniforme) de cada dado. Izquierda-justifique la cara en la ventana de 3 caracteres. Por ejemplo,
A E A A
E C D E
D A Qu E
E A H D
Es un tablero no aleatorio en el formato que quiero. Se permite espacio final.
El dado:
A A E E G N
E L R T T Y
A O O T T W
A B B J O O
E H R T V W
C I M O T U
D I S T T Y
E I O S S T
D E L R V Y
A C H O P S
H I M N Qu U
E E I N S U
E E G H N W
A F F K P S
H L N N R Z
D E I L R X
Dato divertido: solo hay 1 K en el set. ¿Qué otra carta comparte exclusivamente los que mueren?
Este es el código de golf, por lo que gana el programa con el bytecount más corto.
Respuestas:
GolfScript, 116 bytes
Como la puntuación está en bytes, supongo que eso significa que podemos usar todos los bytes en la solución. Salir del conjunto ASCII imprimible permite una solución algo más corta que la de Peter Taylor , a costa de hacer que el código sea más difícil de mostrar aquí. Sin los datos no imprimibles, mi código se ve así:
Es bastante similar a la solución de Peter Taylor, y admito que tomé prestados descaradamente fragmentos (como el
.81=' u '2/=
truco), aunque creo que logré acortar un poco su barajadura, incluso después de gastar un extracarbónde bytes para una mejor aleatoriedad.La cadena binaria al comienzo del script contiene caracteres no imprimibles, por lo que no se puede pegar directamente aquí. En cambio, proporcionaré el script como un volcado hexadecimal:
En Linux, o cualquier sistema con el
xxd
utilidad instalada, este volcado hexadecimal se puede volver a convertir en un programa GolfScript de 116 bytes funcionando al pasarloxxd -r
.Editar: Sustituido
999rand
con9.?rand
por tanto una mejor aleatoriedad. El shuffle ahora debería ser casi tan perfecto como lo permita el RNG subyacente.fuente
Python 2.7,
253 229215 caracteresLa mayoría de los personajes son solo los dados. No quería pasar demasiado tiempo tratando de reducirlo demasiado
edición menor: eliminó 2 bytes innecesarios (espacios adicionales)
edit2: hasta 229
edit3: hasta 215
fuente
print a+' u'[a=='Q']
yprint'\n'[j%4:]
from random import*
y elimine todor.
. 2) Cambie los separadores en cadena a `` (espacio) y aprovechestr.split
el argumento predeterminado de '. 3) Deshágase de todo lo que tenga que verj
y use'\n'[len(d)%4:]
. 4) Uselist.pop
el argumento por defecto. 5) ... 6) Beneficio!j=0...+'\n'[j%4:]
para que funcioneGolfScript (
141 139137caracteresbytes)De los cuales 94 se expanden a la cadena que contiene los dados. La figura no incluye la nueva línea innecesaria insertada para que quede ajustada para que el código se pueda ver sin desplazarse:
fuente
Ruby,
201197 caracteres(y es de una sola línea)
Edición 1: se usó% W () para evitar el .split y un par de comillas.
Edición 2: Hecho a la especificación (dos espacios entre cada columna de salida)
fuente
x.join(" ").gsub(/Q ?/,"Qu")
lo arreglaría al costo de tres caracteres adicionales).join
cadena y un espacio adicional y un signo de interrogación en la expresión regular, en caso de que el software SE destruya los espacios ...)Powershell, 234 caracteres
Aquí está el mismo código con espacios en blanco adicionales, en un intento de mejorar la legibilidad :-)
No conozco una
shuffle
función incorporada en powershell, por lo que convertí cada resultado en un par clave-valor: la clave equivale a un resultado de dados y el valor equivale a un número aleatorio. Entonces fue solo un caso de ordenar estos pares por el valor y luego emitir las claves.fuente
Perl, 179 caracteres
Aquí hay una versión detallada del programa:
fuente