Objetivo: Dada una matriz de enteros positivos , genera la matriz centrosimétrica más pequeña que contiene M (esta matriz también puede contener enteros no positivos).
Una matriz centrosimétrica es una matriz cuadrada con simetría rotacional de orden 2, es decir, permanece la misma matriz después de rotarla dos veces. Por ejemplo, una matriz centrosimétrica tiene el elemento superior izquierdo igual que el inferior derecho, y el elemento sobre el centro igual que el que está debajo del centro. Una visualización útil se puede encontrar aquí .
Más formalmente, dada una matriz , producen una matriz cuadrada N tal que N es centrosimétrico y M ⊆ N , y no hay otra matriz cuadrada K tal que dim K < dim N .
es un subconjunto de B (notación: A ⊆ B ) si y solo si cada valor A i , j aparece en el índice B i + i ′ , j + j ′ para algún par de enteros ( i ′ , j ′ ) .
Nota : algunas matrices tienen múltiples soluciones (por ejemplo, [[3,3],[1,2]]
se resuelven como [[2,1,0],[3,3,3],[0,1,2]]
o [[3,3,3],[1,2,1],[3,3,3]]
); debe generar al menos una de las soluciones válidas.
Casos de prueba
input
example output
[[1, 2, 3],
[4, 5, 6]]
[[1, 2, 3, 0],
[4, 5, 6, 0],
[0, 6, 5, 4],
[0, 3, 2, 1]]
[[9]]
[[9]]
[[9, 10]]
[[9, 10],
[10, 9]]
[[100, 200, 300]]
[[100, 200, 300],
[ 0, 0, 0],
[300, 200, 100]]
[[1, 2, 3],
[4, 5, 4]]
[[1, 2, 3],
[4, 5, 4]
[3, 2, 1]]
[[1, 2, 3],
[5, 6, 5],
[3, 2, 1]]
[[1, 2, 3],
[5, 6, 5],
[3, 2, 1]]
[[4, 5, 4],
[1, 2, 3]]
[[3, 2, 1],
[4, 5, 4],
[1, 2, 3]]
[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 9, 9, 9, 9, 9, 9, 9],
[1, 1, 1, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 1]]
[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9],
[1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1],
[9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1],
[9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
fuente
Respuestas:
Brachylog , 12 bytes
Pruébalo en línea!
Contrariamente a la mayoría de las respuestas de Brachylog, esto lleva la entrada a través de la variable Salida
.
y genera el resultado a través de la variable Entrada?
(confuso, lo sé).Explicación
8 bytes, da todas las matrices válidas
Técnicamente, este programa también funciona:
ṁ↔ᵐ↔?aaᵐ
Pero esto dejará como variables las celdas que pueden tomar cualquier valor (se muestran como
_XXXXX
, que es un nombre interno de variable Prolog). Entonces, técnicamente, esto es incluso mejor de lo que se pide, pero supongo que no es lo que pide el desafío.fuente
≜
retrasado el etiquetado ...JavaScript (ES6),
192180177 bytesPruébalo en línea!
Algoritmo
Ejemplo:
Probamos si podemos completar la matriz de modo que sea centrosimétrica.
Ejemplo:
fuente
Jalea , 27 bytes
Pruébalo en línea!
Se agregaron nuevas líneas a la salida real sobre TIO para mayor claridad.
fuente
Python 2 ,
242227226 bytesPruébalo en línea!
Salvado:
fuente
n=[W*[0]for _ in r(W)]
puede sern=eval(`[W*[0]]*W`)
.Clojure 254 bytes
Jinkies, Scoob
Pruébalo en línea!
fuente