Ziel: Bei einer Matrix aus positiven ganzen Zahlen wird die kleinste zentrosymmetrische Matrix ausgegeben, die M enthält (diese Matrix kann auch nicht positive ganze Zahlen enthalten).
Eine zentrosymmetrische Matrix ist eine quadratische Matrix mit Rotationssymmetrie der Ordnung 2 - dh sie bleibt nach zweimaligem Drehen dieselbe Matrix. Beispielsweise hat eine zentrosymmetrische Matrix das gleiche Element oben links wie das Element unten rechts und das Element über der Mitte das gleiche wie das Element unterhalb der Mitte. Eine nützliche Visualisierung finden Sie hier .
Wenn eine Matrix , erzeugen Sie formeller eine quadratische Matrix N, so dass N zentrosymmetrisch und M ⊆ N ist , und es gibt keine andere quadratische Matrix K, so dass dim K < dim N ist .
istgenau danneine Teilmenge von B (Notation: A ⊆ B ), wenn jeder Wert A i , j für ein Paar von ganzen Zahlen ( i ' , j ' ) am Index B i + i ' , j + j ' erscheint .
Hinweis : Einige Matrizen haben mehrere Lösungen (z. B. [[3,3],[1,2]]
als [[2,1,0],[3,3,3],[0,1,2]]
oder gelöst [[3,3,3],[1,2,1],[3,3,3]]
). Sie müssen mindestens eine der gültigen Lösungen ausgeben.
Testfälle
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]]
quelle
Antworten:
Brachylog , 12 Bytes
Probieren Sie es online aus!
Im Gegensatz zu den meisten Brachylog-Antworten wird die Eingabe über die Ausgabevariable
.
und das Ergebnis über die Eingabevariable ausgegeben?
(verwirrend, ich weiß).Erläuterung
8 Bytes, gibt alle gültigen Matrizen an
Technisch funktioniert dieses Programm auch:
ṁ↔ᵐ↔?aaᵐ
Dadurch bleiben jedoch die Zellen als Variablen übrig, die einen beliebigen Wert annehmen können (sie zeigen als
_XXXXX
, was ein interner Prolog-Variablenname ist). Technisch gesehen ist dies sogar noch besser als gefragt, aber ich denke, es ist nicht das, was die Herausforderung verlangt.quelle
≜
die Etikettierung hätte sich verzögert ...JavaScript (ES6),
192180177 BytesProbieren Sie es online aus!
Algorithmus
Beispiel:
Wir testen, ob wir die Matrix so vervollständigen können, dass sie zentrosymmetrisch ist.
Beispiel:
quelle
Gelee , 27 Bytes
Probieren Sie es online aus!
Aus Gründen der Übersichtlichkeit wurden Zeilenumbrüche zur tatsächlichen Ausgabe über TIO hinzugefügt.
quelle
Python 2 ,
242227226 BytesProbieren Sie es online aus!
Gerettet:
quelle
n=[W*[0]for _ in r(W)]
kann seinn=eval(`[W*[0]]*W`)
.Clojure 254 Bytes
Jinkies, Scoob
Probieren Sie es online aus!
quelle