Python :: Aufgabe #322 :: Lösung #2
3 Lösungen
#322
Magisches Quadrat (magic square)
Fortgeschrittener - Python
von JKooP
- 28.02.2021 um 10:54 Uhr
Von einem Magischen Quadrat spricht man, wenn
- alle Zahlen nur einmal vorkommen und die Summe der Zahlen
- aller Zeilen,
- aller Spalten sowie
- der Diagonalen immer gleich ist.
Beispiele für Magische Quadrate sind als Bilder angehängt.
Schreibe eine Methode/Funktion, mit der man überprüfen kann, ob es sich bei einer
beliebig großen quadratischen Matrix um ein solch magisches Quadrat handelt.
Zusätzlich kann, bei positiver Prüfung, auch die gesuchte Summe ausgegeben werden.
Zur Darstellung der Matrix können je nach Programmiersprache oder Vorliebe Arrays,
Vektoren oder auch generische Listen verwendet werden.
Viel Spaß
- alle Zahlen nur einmal vorkommen und die Summe der Zahlen
- aller Zeilen,
- aller Spalten sowie
- der Diagonalen immer gleich ist.
Beispiele für Magische Quadrate sind als Bilder angehängt.
Schreibe eine Methode/Funktion, mit der man überprüfen kann, ob es sich bei einer
beliebig großen quadratischen Matrix um ein solch magisches Quadrat handelt.
Zusätzlich kann, bei positiver Prüfung, auch die gesuchte Summe ausgegeben werden.
Zur Darstellung der Matrix können je nach Programmiersprache oder Vorliebe Arrays,
Vektoren oder auch generische Listen verwendet werden.
Viel Spaß
#2
von satn1241 (3090 Punkte)
- 06.03.2021 um 19:51 Uhr
import numpy as np
testmatrix = np.array([[4, 9, 2], [3, 5, 7], [8, 1, 6]])
def matrix_check(matrix):
# Check Duplikate
liste = []
for e in matrix:
for x in e:
liste.append(x)
liste.sort()
for i in range(0, len(liste) - 1):
if liste[i] == liste[i + 1]:
print("kein magisches Quadrat")
return None
# Check Zeile, Spalte, Diagonale
t_matrix = matrix.transpose()
check = []
d1 = 0
d2 = 0
for i in range(0, matrix.ndim + 1):
check.append(sum(matrix[i]))
check.append(sum(t_matrix[i]))
d1 += matrix[i, i]
d2 += (matrix[matrix.ndim - i, matrix.ndim - i])
if not d1 == d2:
print("Kein magisches Quadrat")
return None
for e in check:
if not e == d1:
print("kein magisches Quadrat")
return None
print("magisches Quadrat")
return None
matrix_check(testmatrix)
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
