Dies ist die zweidimensionale Verallgemeinerung dieser Herausforderung .
Für unsere Zwecke wird eine Matrix (oder ein 2D-Array) A als Submatrix einer anderen Matrix B betrachtet , wenn A erhalten werden kann, indem eine Anzahl von Zeilen und Spalten vollständig aus B entfernt wird . (Hinweis: Einige Quellen haben andere / restriktivere Definitionen.)
Hier ist ein Beispiel:
A = [1 4 B = [1 2 3 4 5 6
2 1] 6 5 4 3 2 1
2 1 2 1 2 1
9 1 8 2 7 6]
Wir können die Spalten 2, 3, 5, 6 und die Zeilen 2, 4 aus B löschen , um A zu erhalten :
B = [1 2 3 4 5 6 [1 _ _ 4 _ _ [1 4 = A
6 5 4 3 2 1 --> _ _ _ _ _ _ --> 2 1]
2 1 2 1 2 1 2 _ _ 1 _ _
9 1 8 2 7 6] _ _ _ _ _ _]
Beachten Sie, dass A immer noch eine Submatrix von B ist, wenn alle Zeilen oder alle Spalten von B beibehalten werden (oder tatsächlich, wenn A = B ist ).
Die Herausforderung
Du hast es erraten. Bestimmen Sie bei zwei nicht leeren ganzzahligen Matrizen A und B , ob A eine Untermatrix von B ist .
Sie können ein Programm oder eine Funktion schreiben, indem Sie eine Eingabe über STDIN (oder die nächstgelegene Alternative), ein Befehlszeilenargument oder ein Funktionsargument vornehmen und das Ergebnis über STDOUT (oder die nächstgelegene Alternative), einen Funktionsrückgabewert oder einen Funktionsparameter (out) ausgeben.
Die Eingabe kann in einem beliebigen Format erfolgen. Die Matrizen können als verschachtelte Listen, Zeichenfolgen mit zwei verschiedenen Trennzeichen, flache Listen zusammen mit den Abmessungen der Matrix usw. angegeben werden, solange die Eingabe nicht vorverarbeitet wird. Sie können B als erstes und A als zweites wählen , solange Ihre Wahl konsistent ist. Sie können annehmen, dass die Elemente der Matrizen positiv und kleiner als 256 sind.
Die Ausgabe sollte wahr sein, wenn A eine Submatrix von B ist und ansonsten falsch . Der spezifische Ausgabewert muss nicht konsistent sein.
Es gelten die Standardregeln für Code-Golf .
Testfälle
Jeder Testfall befindet sich in einer separaten Zeile A, B
.
Wahrheitsfälle:
[[1]], [[1]]
[[149, 221]], [[177, 149, 44, 221]]
[[1, 1, 2], [1, 2, 2]], [[1, 1, 1, 2, 2, 2], [3, 1, 3, 2, 3, 2], [1, 1, 2, 2, 2, 2]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[1, 2, 3], [4, 7, 6], [7, 8, 9], [1, 2, 3], [4, 5, 6], [7, 8, 9]]
[[228, 66], [58, 228]], [[228, 66], [58, 228]]
[[1, 2], [2, 1]], [[1, 2, 2], [2, 1, 2], [2, 2, 1]]
[[136, 196], [252, 136]], [[136, 252, 210, 196, 79, 222], [222, 79, 196, 210, 252, 136], [252, 136, 252, 136, 252, 136], [180, 136, 56, 252, 158, 222]]
Falsche Fälle:
[[1]], [[2]]
[[224, 15]], [[144, 15, 12, 224]]
[[41], [150]], [[20, 41, 197, 150]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[1, 2, 3], [7, 8, 9], [4, 5, 6]]
[[1, 2, 2], [2, 1, 2], [2, 2, 1]], [[1, 2], [2, 1]]
[[1, 2, 2], [2, 1, 2]], [[1, 2], [2, 1], [2, 2]]
[[1, 2], [3, 4]], [[5, 3, 4, 5], [2, 5, 5, 1], [4, 5, 5, 3], [5, 1, 2, 5]]
[[158, 112], [211, 211]], [[158, 211, 189, 112, 73, 8], [8, 73, 112, 189, 211, 158], [211, 158, 211, 158, 211, 158], [21, 158, 199, 211, 212, 8]]