Entrada
Una matriz binaria no vacía que consta de 3x3 submatrices puestas una al lado de la otra.
Tarea
Su tarea es identificar patrones de dados válidos (como se describe a continuación) entre las submatrices 3x3. Cada patrón válido vale el valor de los dados correspondientes. Los patrones inválidos valen 0.
Salida
La suma de los valores de dados válidos.
Patrones de dados
Ejemplo
El resultado esperado para la siguiente matriz es 14 porque contiene los dados 5 , 6 y 3 , seguidos de un patrón no válido (de izquierda a derecha y de arriba a abajo).
Reglas
- Se garantiza que tanto el ancho como la altura de la matriz serán múltiplos de 3.
- Debe ignorar las submatrices que no están alineadas correctamente en la cuadrícula (consulte el tercer caso de prueba). Más formalmente y suponiendo la indexación 0: las coordenadas de la celda superior izquierda de cada submatriz a considerar son de la forma .
- Este es el código de golf .
Casos de prueba
// 0
[ [ 1,0,0 ],
[ 0,0,1 ],
[ 1,0,0 ] ]
// 2
[ [ 0,0,1 ],
[ 0,0,0 ],
[ 1,0,0 ] ]
// 0 (0 + 0)
[ [ 0,0,1,0,1,0 ],
[ 0,0,0,1,0,0 ],
[ 0,0,1,0,1,0 ] ]
// 9 (3 + 3 + 3)
[ [ 1,0,0,0,0,1,1,0,0 ],
[ 0,1,0,0,1,0,0,1,0 ],
[ 0,0,1,1,0,0,0,0,1 ] ]
// 6 (6 + 0)
[ [ 1,0,1 ],
[ 1,0,1 ],
[ 1,0,1 ],
[ 1,0,1 ],
[ 1,0,0 ],
[ 1,0,1 ] ]
// 14 (5 + 6 + 3 + 0)
[ [ 1,0,1,1,1,1 ],
[ 0,1,0,0,0,0 ],
[ 1,0,1,1,1,1 ],
[ 1,0,0,0,0,0 ],
[ 0,1,0,0,1,0 ],
[ 0,0,1,0,1,0 ] ]
// 16 (1 + 2 + 3 + 4 + 0 + 6)
[ [ 0,0,0,1,0,0,1,0,0 ],
[ 0,1,0,0,0,0,0,1,0 ],
[ 0,0,0,0,0,1,0,0,1 ],
[ 1,0,1,1,1,1,1,0,1 ],
[ 0,0,0,1,0,1,1,0,1 ],
[ 1,0,1,1,1,1,1,0,1 ] ]
//3
y úselo'0'+''.join...
para guardar dos bytes :)R , 134 bytes
Pruébalo en línea!
Noté que tenía la misma idea de @Heteira
Historia:
171: -10 bytes gracias a @JayCe!161: -3 bytes gracias a @Giuseppe!158: -13 bytes guardados!145: -2 bytes gracias a @Giuseppe!143: -6 bytes guardados!137: -3 bytes gracias a @JayCe!fuente
dim
(2^(8:0))
cual se pueden eliminar.cat
la salida deintToUtf8
: guardar 3 bytesPerl 6 ,
113105 9794 bytesPruébalo en línea!
Divide la matriz en submatrices de 3x3, convierte los nueve 1s y 0s en base 2 y luego la indexa en una lista de enteros para el valor.
Explicación:
fuente
Jalea ,
2928 bytes-1 gracias al Sr. Xcoder (usar
Ṁ
para reemplazarṢṪ
)Un enlace monádico.
Pruébalo en línea! O ejecuta las pruebas .
¿Cómo?
Por ejemplo, cuando una submatriz es:
Luego
ZU,Ɗ
produce:... que se aplana
[0, 0, 0, 1, 1, 1, 1, 1, 1]
, que, convirtiendo de binario, es63
la sexta entrada en la lista de índice de la página de códigos“°€⁼-Ḍ?‘
(?
siendo byte3F
en la página de códigos de Jelly )fuente
Ṁ
podría funcionar en lugar deṢṪ
para -1.M
>. <). ¿Se puede hacer algo inteligente?ŒṪ
Me pregunto ...Japt
-x
, 36 bytesAhora se está poniendo interesante. Estoy seguro de que se puede jugar golf aún más
Pruébalo en línea!
fuente
Retina 0.8.2 , 90 bytes
Pruébalo en línea! Explicación:
Une todos los bloques y luego vuelve a dividirlos en filas de 9 columnas.
Solo mantenga patrones de dados válidos (dos patrones para
6
, luego uno coincide con cualquier número de0
a5
, aunque0
por supuesto no contribuirá a la cuenta a continuación).Cuente las pepitas en los dados válidos.
fuente
Ruby , 151 bytes
Pruébalo en línea!
Una lambda que acepta una matriz 2D de entradas (o cadenas, supongo). Se inspira en la respuesta de Jo King . Siento que cortar los dados de la matriz de entrada tomó mucho espacio, por lo que bien podría ser superado. Afortunadamente, tratar con nils solo me costó unos pocos bytes.
Sin golf:
fuente
Clojure, 197 bytes
Debería haber inventado algo más inteligente.
fuente
Python 2 , 159 bytes
Pruébalo en línea!
Felicitaciones a Jonathan Frech por el enfoque de codificación Unicode.
fuente