En un dado estándar (dado) los números están ordenados de modo que las caras opuestas sumen siete. Escriba el programa más corto posible en su idioma preferido que genere un lanzamiento aleatorio seguido de 9 propinas aleatorias. Una propina es un cuarto de vuelta del dado, por ejemplo, si el dado está orientado hacia 5, todas las posibles propinas son 1,3,4 y 6.
Ejemplo de salida deseada:
1532131356
code-golf
random
repeated-transformation
steenslag
fuente
fuente
JavaScript (71 caracteres)
Es posible que deba reemplazar
print
conalert
o algo más, dependiendo de su entorno JavaScript.fuente
GolfScript, 28
fuente
Golpetazo
código de muestra: http://ideone.com/CCfro
fuente
((var=expression))
es muy agradable: pensé que el camino más corto eravar=$((expression))
Pero, ¿por qué lo usas solo una vez y desperdicias toneladas de caracteres en expr en backticks?R,
5652fuente
Bash con solo un bucle:
100 99 9896http://ideone.com/XrZO7
La idea clave es que para elegir un número aleatorio en [1, x] que no sea igual a y, puede elegir un número aleatorio en [1, x-1] y luego incrementar si es> = y. Para este problema, queremos un número aleatorio en [1,6] que no sea igual a f o 7-f. Tenemos que hacer las dos pruebas en orden min (f, 7-f), max (f, 7-f).
Suponiendo que un entorno inicialmente vacío podría ahorrar 2 caracteres al no inicializar i y cambiar la condición del bucle a
i++<10
fuente
Golpe:
97 94 92 90 8987Fuertemente golfizado de la respuesta de Aman ZeeK Verma:
http://ideone.com/QiuTx
NB podría decirse que puede reducirse en 5 caracteres cambiando la primera línea a,
for((;i++<10;))
pero eso hace suposiciones que no siempre son válidas. Funcionaría bien en ideone, pero alguien que lo ejecute desde un shell podría teneri
of
exportar a algo que no sea cero.fuente
man bash
, lo recomiendo. Una vez lo leí de principio a fin, y el solo hecho de tener una vaga idea de lo que es posible y vale la pena buscar me ha servido mucho.Windows PowerShell, 45
Bastante trivial, en realidad. Genero una lista de posibles tiradas de dados
1..6
y luego selecciono solo las que no son iguales a siete menos la última tirada y luego solo las que no son iguales a la última tirada. De la lista restante, luego selecciono un elemento aleatorio y se lo asigno$d
. Ya que$d
que inicialmente se trata como0
tira un dado normal la primera vez.Script de prueba:
Historia:
fuente
The term 'random' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.
Get-Random
cmdlet no existía en v1.J
Esto debería funcionar, pero desafortunadamente el generador aleatorio de J se atasca después de la tercera iteración:
6 4 5 4 5 4 5 4 5 4
fuente
(?4)
tiende a enrollarse una vez y tratarse como una constante para las iteraciones posteriores si no tiene cuidado con él. Trabajé alrededor usando una(?@4:)
construcción similar.Rubí
66 caracteres
fuente
J, 30 caracteres
6 2 3 5 4 2 4 1 3 6
Explicaciones (leer de derecha a izquierda):
?6
devuelve un número aleatorio entre 0 y 5^:(<10)
aplica una función 9 veces, acumulando los resultados a lo largo del camino. La función es:?@4:{(i.6)-.],5&-
] , 5&-
devuelve una matriz del número de entrada y su complemento a 5 (actualmente estamos manejando números basados en 0, por lo que la suma de caras opuestas es 5)(i. 6) -.
los elimina del conjunto completo de enteros 0 a 5. Nos quedan todas las posiciones válidas después de una sola operación de volcado desde la posición de entrada.?@4: {
elige uno de esos al azar.>:
incrementa toda la secuencia para devolver las cifras al intervalo de 1 a 6.fuente
GS2, 16 bytes
Así es como funciona
fuente
QBasic (71 caracteres)
Las dos nuevas líneas son necesarias e incluidas en el carácter cuentan como un carácter cada una.
fuente
TI-BASIC,
3834Solución aburrida, pero es más corta que la revisión anterior. Aprovecho el hecho de que en una calculadora nueva,
Ans
se inicializa a cero.fuente
Java 8, 130 bytes
Pruébalo aquí.
Como programa completo con método principal detallado, esto sería 178 bytes en su lugar:
Pruébalo aquí.
Semi-puerto de la respuesta Bash de @AmanZeeKVerma .
Explicación:
fuente
MATLAB 58 bytes
fuente
> <> , 71 bytes
Me alegra poder mostrar la
x
aleatorización de puntero de código de > <> ya que no recuerdo haberlo visto aquí.Puede probarlo en este intérprete en línea (pegar código, enviar, iniciar).
fuente
R , 67 bytes
Pruébalo en línea!
Hay una respuesta R más golfista, pero creo que este es un enfoque diferente de las respuestas presentadas hasta ahora.
fuente
05AB1E , 23 bytes
Definitivamente se puede jugar al golf, pero actualmente no lo veo.
Pruébalo en línea.
Explicación:
fuente