Inspirado y saqueado de este desafío de dados por Arnauld
Entrada
Se le da una matriz de dados de 5x1 o 1x5 (su elección) que consiste en submatrices binarias de 3x3.
Objetivo
Dada una matriz de dados válida, debe calificarla usando las reglas de 6,5,4 que son las siguientes:
- Si la tirada contiene 6,5,4, suma los otros dos dados y ese es tu puntaje. Por ejemplo, 4, X, 5,6, Y = X + Y
- De lo contrario, el puntaje es 0. Ej. 5,5,5,4,1 = 0
Artículo de wiki para el juego
Patrones de dados
Reglas
- Se garantiza que la matriz solo contendrá caras válidas, pero incluirá las permutaciones 2,3 y 6. También puede tomarlo en cualquier orientación de la manera que sea conveniente. Indique la orientación elegida en su respuesta.
- Salida de la puntuación calculada
- Las lagunas estándar están prohibidas
- Este es el código de golf .
Ejemplos
// 2,5,2,4,6: Output should be: 4
[ [ 0,0,1 ],
[ 0,0,0 ],
[ 1,0,0 ],
[ 1,0,1 ],
[ 0,1,0 ],
[ 1,0,1 ],
[ 0,0,1 ],
[ 0,0,0 ],
[ 1,0,0 ],
[ 1,0,1 ],
[ 0,0,0 ],
[ 1,0,1 ],
[ 1,1,1 ],
[ 0,0,0 ],
[ 1,1,1 ] ]
// 1,6,2,4,6: Output should be: 0
[ [ 0,0,0, 1,0,1, 1,0,0, 1,0,1, 1,1,1 ],
[ 0,1,0, 1,0,1, 0,0,0, 0,0,0, 0,0,0 ],
[ 0,0,0, 1,0,1, 0,0,1, 1,0,1, 1,1,1 ] ]
// 5,6,6,4,6: Output should be: 12
[ [ 1,0,1, 1,0,1, 1,1,1, 1,0,1, 1,1,1 ],
[ 0,1,0, 1,0,1, 0,0,0, 0,0,0, 0,0,0 ],
[ 1,0,1, 1,0,1, 1,1,1, 1,0,1, 1,1,1 ] ]
// 3,3,4,5,6: Output should be: 6
[ [ 0,0,1, 1,0,0, 1,0,1, 1,0,1, 1,1,1 ],
[ 0,1,0, 0,1,0, 0,0,0, 0,1,0, 0,0,0 ],
[ 1,0,0, 0,0,1, 1,0,1, 1,0,1, 1,1,1 ] ]
// 2,5,2,5,6: Output should be: 0
[ [ 0,0,1, 1,0,1, 1,0,0, 1,0,1, 1,1,1 ],
[ 0,0,0, 0,1,0, 0,0,0, 0,1,0, 0,0,0 ],
[ 1,0,0, 1,0,1, 0,0,1, 1,0,1, 1,1,1 ] ]
[2,5,2,5,6]
. Mi solución actual funciona para los cuatro casos de prueba (al usar un método muy malo para ordenar los valores y eliminar la sublista[4,5,6]
), que por supuesto falla cuando5
está presente dos veces.Respuestas:
05AB1E , 15 bytes
Pruébalo en línea! o echa un vistazo a una suite de prueba
Utiliza el mismo truco que usan Chas Brown y Lynn: disminuir cada número entero en cada submatriz 3x3 en lugar de restar 15 al final. Espera entrada en formato de columna.
Cómo funciona
fuente
Jalea , 14 bytes
Pruébalo en línea!
Acepta una columna de dados.
Al igual que la respuesta de Python de Chas Brown, esto compensa cada valor de dados en −3, por lo que no necesitamos restar 15 (4 + 5 + 6) de la última suma.
fuente
Python 2 , 81 bytes
Pruébalo en línea!
Se espera que todas las entradas estén en forma de columna.
fuente
Perl 6 ,
4846 bytesGracias a Ramillies por -2 bytes
Pruébalo en línea!
Un bloque de código anónimo que toma la matriz verticalmente y devuelve un entero.
Explicación:
fuente
.flat
lugar de.[*;*]
, de esta maneraMATL , 12 bytes
Pruébalo en línea!
Toma la entrada en orientación horizontal como una matriz de 3x15. El truco de @Chas Brown de restar 3 temprano (en lugar de 15 más tarde) guardó varios bytes de diferentes maneras.
fuente
Brachylog ,
2322 bytes24 bytes (sundar)Uno de mis primeros programas de branchylog. Probablemente se pueda jugar más al golf.
Imprime falso si no hay 4,5,6. idk cómo hacer que salga 0.Pruébalo en línea!
fuente
0
salga de manera instantáneafalse
, agregar|∧0
al final debería hacer el trabajo.ḍ₅
: ¡ Pruébelo en línea!I
: ¡ Pruébelo en línea! (Tenga en cuenta que también he agregado el|∧0
aquí).R , 56 bytes
Pruébalo en línea!
fuente
c(m)
para aplanar enm
lugar dem[1:45]
Pyth , 20 bytes
Espera entrada como una columna de dados (como en el caso de prueba 1). Pruébelo en línea aquí , o verifique todos los casos de prueba a la vez aquí .
fuente
05AB1E ,
302922 bytesToma las matrices de dados una debajo de la otra.
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
JavaScript (ES6), 78 bytes
Toma entrada como una columna de dados.
Pruébalo en línea!
¿Cómo?
Al hacerlo
a + 0
, implícitamente aplanamos y coaccionamos la matriz de entrada a una cadena y agregamos un final"0"
, que da exactamente 5x18 = 90 caracteres.Por ejemplo, el primer caso de prueba conduce a:
Para cada subcadena de dados s de 18 caracteres, calculamos el número n de pips + 1 y actualizamos el número total de pips t con:
Reutilizamos la matriz de entrada a como una máscara de bits para realizar un seguimiento de cada dado que se encontró al menos una vez:
Si el rollo contiene al menos un 4 , un 5 y un 6 , la máscara de bits a tendrá los siguientes bits establecidos:
Probamos esto haciendo
a > 223
. Si tiene éxito, devolvemos t . Debido a que contamos un pip extra para cada dado y porque no queremos contar 4 + 5 + 6 en el resultado, t se inicializa a - (5 + (4 + 5 + 6)) = -20 .fuente
Dyalog APL ,
2827 bytesPruébalo en línea!
Toma una matriz 1x5 de matrices de dados 3x3 como entrada.
+/¨,¨
suma los valores de pip de cada uno de los dados. Luego reste 3, use∨/⍉⍵∘.=⍳3
para verificar si hay al menos una instancia de (1, 2, 3), Y los resultados junto con∧/
y multiplique el resultado (0 o 1) por la suma de los valores de dados ajustados (+/⍵
).fuente
Retina 0.8.2 , 45 bytes
Pruébalo en línea! Toma dados verticales. Explicación:
Cambie la forma de los dados en 5 filas individuales.
Obtenga los valores de cada fila.
Clasifícalos en orden.
Únete a ellos en una sola cuerda.
Asegúrese de que los tres dados requeridos estén presentes.
Convierte cada dado en unario.
Resta los 4, 5 y 6 correspondientes.
Suma y convierte a decimal.
fuente
Jalea , 18 bytes
Un enlace monádico
Pruébalo en línea!
fuente
Octava , 54 bytes
Pruébalo en línea!
Puerto de mi respuesta MATL.
fuente
Ruby , 78 bytes
Pruébalo en línea!
fuente