Schreiben Sie ein Programm, das feststellt, ob eine gegebene Matrix ein Problem darstellt. Ein Quandle ist eine Menge, die mit einer einzigen (nicht kommutativen, nicht assoziativen) Operation ausgestattet ist, die die folgenden Axiome befolgt:
- Die Operation ist geschlossen, dh sie
a◃b = c
ist immer ein Element der Menge, wenna
undb
Elemente der Menge sind. - Der Betrieb ist rechtsSelbst distributive:
(a◃b)◃c = (a◃c)◃(b◃c)
. - Die Operation ist rechts teilbar: Für jedes ausgewählte Paar von
a
undb
gibt es eine einzige eindeutigec
solchec◃a = b
- Die Operation ist idempotent:
a◃a = a
Ein endlicher Quandle kann als quadratische Matrix dargestellt werden. Unten sehen Sie ein Beispiel für ein Order-5-Quandle ( Quelle ).
0 0 1 1 1
1 1 0 0 0
3 4 2 4 3
4 2 4 3 2
2 3 3 2 4
Der Wert in der n-ten Zeile und der m-ten Spalte (0-indiziert) ist der Wert von n◃m. Zum Beispiel in diesem Quandle 4◃1 = 3
. Einige der Quandle-Eigenschaften sind in dieser Matrix leicht zu erkennen:
- Es ist geschlossen, da in dieser 5x5-Matrix nur die Werte 0-4 vorkommen.
- Es ist idempotent, weil die Matrixdiagonale 0 1 2 3 4 ist
- Es ist nach rechts teilbar, da keine Spalte doppelte Werte enthält. (Die Zeilen können und werden normalerweise.)
Die Eigenschaft der Rechtsselbstverteilbarkeit ist schwerer zu testen. Möglicherweise gibt es eine Verknüpfung, aber die einfachste Methode besteht darin, jede mögliche Kombination von drei Indizes zu durchlaufen, um dies zu überprüfen m[m[a][b]][c] = m[m[a][c]][m[b][c]]
.
Eingang
Die Eingabe ist die Liste der Zeilen einer Quadratmatrix, entweder mit 0-Index oder 1-Index (Ihre Wahl). Jeder Eintrag ist eine einstellige Zahl von 0
bis 8
(oder 1
bis 9
). Ich werde beim Eingabeformat flexibel sein. Einige akzeptable Formate sind:
- Die natürlichste Formatierung Ihrer Sprache für Matrizen oder Listen, z. B.
[[0 0 0][2 1 1][1 2 2]]
oder(0,0,0,2,1,1,1,2,2)
. - Die Liste der Werte, die durch Leerzeichen, Zeilenumbrüche, Kommas usw. begrenzt sind.
- Eine einzelne Zeichenfolge, die aus allen miteinander verknüpften Werten besteht, z
000211122
.
Sie können auch die Transponierte der Matrix als Eingabe nehmen (Zeilen mit Spalten tauschen). Geben Sie dies einfach in Ihrer Antwort an.
Ausgabe
Ein einzelner Wahrheitswert, der den Status der Matrix als Quandle angibt.
Beispiele für Quandles
0
0 0
1 1
0 0 0
2 1 1
1 2 2
0 0 1 1
1 1 0 0
3 3 2 2
2 2 3 3
0 3 4 1 2
2 1 0 4 3
3 4 2 0 1
4 2 1 3 0
1 0 3 2 4
Beispiele für Nicht-Quandles
nicht geschlossen
1
0 0 0
2 1 1
1 9 2
nicht rechtsselbstverteilend
0 0 1 0
1 1 0 1
2 3 2 2
3 2 3 3
(3◃1)◃2 = 2◃2 = 2
(3◃2)◃(1◃2) = 3◃0 = 3
nicht rechts teilbar
0 2 3 4 1
0 1 2 3 4
3 4 2 2 2
3 3 3 3 3
4 1 1 1 4
0 1 2 3
3 1 2 0
3 1 2 3
0 1 2 3
nicht idempotent
1 1 1 1
3 3 3 3
2 2 2 2
0 0 0 0
2 1 0 4 3
3 4 2 0 1
4 2 1 3 0
1 0 3 2 4
0 3 4 1 2