Objetivo: Dada uma matriz de números inteiros positivos , produza a menor matriz centrimétrica que contém (essa matriz também pode conter números inteiros não positivos).M
Uma matriz centrossimétrica é uma matriz quadrada com simetria rotacional da ordem 2 - isto é, permanece a mesma matriz depois de girá-la duas vezes. Por exemplo, uma matriz centrossimétrica tem o elemento superior esquerdo igual ao canto inferior direito e o elemento acima do centro o mesmo que o abaixo do centro. Uma visualização útil pode ser encontrada aqui .
Mais formalmente, dada uma matriz , produzir uma matriz quadrada tal que é centrossimétrica e , e não há nenhum outro matriz quadrada de tal modo que .N N M ⊆ N K dim K < dim N
B A ⊆ B A i , j B i + i ' , j + j ' ( i ' , j ' ) é um subconjunto de (notação: ) se e somente se cada valor aparecer no índice para alguns pares de números inteiros .
Nota : algumas matrizes têm várias soluções (por exemplo, [[3,3],[1,2]]
sendo resolvidas como [[2,1,0],[3,3,3],[0,1,2]]
ou [[3,3,3],[1,2,1],[3,3,3]]
); você deve gerar pelo menos uma das soluções válidas.
Casos de teste
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]]
fonte
Respostas:
Braquilog , 12 bytes
Experimente online!
Ao contrário da maioria das respostas do Brachylog, isso recebe a entrada pela variável Output
.
e gera o resultado pela variável Input?
(confuso, eu sei).Explicação
8 bytes, fornece todas as matrizes válidas
Tecnicamente, este programa também funciona:
ṁ↔ᵐ↔?aaᵐ
Mas isso deixará como variáveis as células que podem assumir qualquer valor (elas são exibidas como
_XXXXX
, que é um nome de variável interno do Prolog). Então, tecnicamente, isso é ainda melhor do que o solicitado, mas acho que não é o que o desafio pede.fonte
≜
que atrasou rotulagem ...JavaScript (ES6),
192180177 bytesExperimente online!
Algoritmo
Exemplo:
Testamos se podemos concluir a matriz de forma que seja centrossimétrica.
Exemplo:
fonte
Gelatina , 27 bytes
Experimente online!
Novas linhas adicionadas à saída real sobre o TIO para maior clareza.
fonte
Python 2 ,
242227226 bytesExperimente online!
Salvou:
fonte
n=[W*[0]for _ in r(W)]
pode sern=eval(`[W*[0]]*W`)
.Clojure 254 bytes
Jinkies, Scoob
Experimente online!
fonte