Überprüfen Sie die horizontale und vertikale Symmetrie in der Binärmatrix mit Python
Eine Binärmatrix ist ein rechteckiges Gitter, in dem jedes Element entweder 0 oder 1 ist, was wahre oder falsche Zustände anzeigt. Es wird häufig zur Darstellung von Beziehungen, Konnektivität und Mustern in verschiedenen Disziplinen eingesetzt
Angenommen, wir haben eine 2D binäre Eingabematrix mit N Zeilen und M Spalten genommen. T. Wir werden nun mit der folgenden Methode prüfen, ob die Eingabematrix horizontal oder vertikal symmetrisch oder beides ist.
Wenn die erste Zeile mit der letzten Zeile übereinstimmt, die zweite Zeile mit der vorletzten Zeile usw., wird die Matrix als horizontal symmetrisch bezeichnet.
Wenn die erste Spalte mit der letzten Spalte übereinstimmt, die zweite Spalte mit der vorletzten Spalte usw., wird die Matrix als vertikal symmetrisch bezeichnet.
Beispiel
1 0 1
0 1 0
1 0 1
Horizontale Symmetrie: Die erste Zeile „1 0 1“ ist eine exakte Spiegelung der dritten Zeile „1 0 1“, wenn die Matrix horizontal gespiegelt wird. Jedes Element in der ersten Zeile entspricht dem Element an derselben Position in der dritten Zeile.
Vertikale Symmetrie: Die erste Spalte „1 0 1“ ist eine gespiegelte Version der dritten Spalte „1 0 1“, wenn die Matrix vertikal gespiegelt wird. Die Elemente in der ersten Spalte werden an den Elementen an den gleichen Positionen in der dritten Spalte ausgerichtet.
Algorithmus (Schritte)
Im Folgenden sind die Algorithmen/Schritte aufgeführt, die zur Ausführung der gewünschten Aufgabe befolgt werden müssen –.
Erstellen Sie eine Funktion checkHorizontalVertical(), um zu prüfen, ob die Eingabematrix horizontal oder vertikal symmetrisch ist, indem Sie die Eingabematrix sowie die Anzahl der Zeilen und Spalten als Argumente übergeben.
Initialisieren Sie horizontal_symmetric und Vertical_symmetric als True, um anzunehmen, dass die Matrix in beide Richtungen symmetrisch ist.
Vergleichen Sie die erste Reihe mit der letzten Reihe, die zweite Reihe mit der vorletzten Reihe usw., um die horizontale Symmetrie zu prüfen.
Durchlaufen Sie bis zur Hälfte der Zeilen der Matrix.
Durchlaufen Sie innerhalb der Schleife die Spalten und vergleichen Sie jede Zelle der aktuellen Zeile mit der entsprechenden Zelle in der zu vergleichenden Zeile.
Wenn eine Zelle unterschiedlich ist, setzen Sie horizontal_symmetric auf False und unterbrechen Sie die Schleife.
Erhöhen Sie die Zeilennummer um 1 und verringern Sie die Zeilennummer ab der letzten Zeile für die nächste Iteration um 1.
Überprüfen Sie als Nächstes die vertikale Symmetrie, indem Sie die erste Spalte mit der letzten Spalte, die zweite Spalte mit der vorletzten Spalte usw. vergleichen.
-
Durchlaufen Sie bis zur Hälfte der Spalten der Matrix.
Durchlaufen Sie innerhalb der Schleife die Zeilen und vergleichen Sie jede Zelle der aktuellen Spalte mit der entsprechenden Zelle in der zu vergleichenden Spalte.
Wenn eine Zelle unterschiedlich ist, setzen Sie „vertikal_symmetric“ auf „False“ und unterbrechen Sie die Schleife.
Erhöhen Sie die Spaltennummer um 1 und verringern Sie die Spaltennummer ab der letzten Spalte für die nächste Iteration um 1.
Überprüfen Sie die Symmetriebedingungen:
Wenn weder horizontal_symmetric noch Vertical_symmetric True sind, geben Sie „Weder horizontal noch vertikal symmetrisch“ aus.
Wenn horizontal_symmetric True, Vertical_symmetric jedoch False ist, wird „Die Eingabematrix ist horizontal symmetrisch“ gedruckt.
Wenn Vertical_symmetric „True“, Horizontal_symmetric jedoch „False“ ist, geben Sie „Die Eingabematrix ist vertikal symmetrisch“ aus.
Wenn sowohl horizontal_symmetric als auch Vertical_symmetric True sind, drucken Sie „Die Eingabematrix ist sowohl horizontal als auch vertikal symmetrisch.“
Rufen Sie die Funktion checkHorizontalVertical mit der Eingabematrix, der Anzahl der Zeilen und der Anzahl der Spalten als Argumente auf.
Beispiel
Das folgende Beispiel vergleicht Zeilen mit ihren Gegenstücken vom Ende, um die horizontale Symmetrie zu prüfen, und Spalten mit ihren Gegenstücken vom Ende, um die vertikale Symmetrie zu prüfen. Basierend auf den Vergleichsergebnissen wird gedruckt, ob die Eingabematrix horizontal symmetrisch, vertikal symmetrisch, sowohl horizontal als auch vertikal symmetrisch oder weder horizontal noch vertikal symmetrisch ist.
# Creating a function to check whether the input matrix is
# horizontal or vertically symmetric by passing the input matrix,
# no of rows and columns as arguments
def checkHorizontalVertical(inputMatrix, rows, cols):
# Initializing both the horizontal and vertical
# symmetric as true at first
horizontal_symmetric = True
vertical_symmetric = True
# We compare the first row with the last row, the second row with second
# last row and so on.
p = 0
x = rows - 1
# Traversing till half of the rows of the matrix
while p < rows // 2:
# Traversing in the columns
for q in range(cols):
# Checking if each cell is the same or not
if inputMatrix[p][q] != inputMatrix[x][q]:
# If it is not the same then that horizontal symmetric is false
horizontal_symmetric = False
break
# Incrementing the row number by 1
p += 1
x -= 1
# Checking for Vertical Symmetry. The first column is compared to the last column,
# the second column to the second-to-last column, and so forth.
p = 0
x = cols - 1
# Traversing till half of the columns
while p < cols // 2:
# Checking each row of the column
for q in range(rows):
# Checking if each cell is the same or not
if inputMatrix[p][q] != inputMatrix[x][q]:
# If it is not the same then that vertical symmetric is false
vertical = False
break
# Incrementing the column number by 1
p += 1
x -= 1
# checking whether not horizontal and not vertically symmetric
if not horizontal_symmetric and not vertical_symmetric:
# printing Neither horizontal nor vertical symmetric if the condition is true
print("Neither horizontal nor vertical symmetric")
# checking whether the matrix is horizontally symmetric but not vertical
elif horizontal_symmetric and not vertical_symmetric:
# printing horizontal symmetric matrix
print("The input matrix is horizontal symmetric")
# checking whether the matrix is vertically symmetric but not horizontal
elif vertical_symmetric and not horizontal_symmetric:
# printing vertically symmetric
print("The input matrix is vertical symmetric")
else:
# else printing both horizontal and vertical symmetric
print("The input matrix is both horizontal and vertically symmetric")
# input matrix
inputMatrix = [[1, 0, 1], [0, 0, 0], [1, 0, 1]]
# calling the above checkHorizontalVertical() by passing
# input matrix, no of rows, columns as arguments
checkHorizontalVertical(inputMatrix, 3, 3)
Ausgabe
The input matrix is both horizontal and vertically symmetric
Abschluss
In diesem Beitrag haben wir erläutert, wie man die Matrix mit verschachtelten for-Schleifen durchläuft und wie man mit for-Schleifen die Zeilen jeder Spalte durchläuft. Schließlich haben wir gelernt, wie man bestimmt, ob eine bestimmte Matrix horizontal oder vertikal symmetrisch ist.