Python :: Aufgabe #344

3 Lösungen Lösungen öffentlich

Prüfen auf Toeplitz-Matrix

Fortgeschrittener - Python von JKooP - 16.04.2021 um 17:07 Uhr
Von einer Toeplitz-Matrix spricht man, wenn alle Diagonalen von links oben nach rechts unten die gleichen Zahlen enthalten.

Beispiel 1:
matrix = { {4, 5, 6, 7, 8}, {3, 4, 5, 6, 7 }, {2, 3, 4, 5, 6}, {1, 2, 3, 4, 5} }
Lösung: wahr, denn alle Diagonalen enthalten die gleichen Zahlen =>
{1}, {2, 2}, {3, 3, 3}, {4, 4, 4, 4}, {5, 5, 5, 5}, {6, 6, 6}, {7, 7}, {8}

Beispiel 2:
matrix = { {1, 2}, {2, 2} }
Lösung: falsch, denn die zweite Diagonale enthält unterschiedliche Zahlen =>
{1}, {1, 2}, {2}

Erstelle eine Methode/Funktion, die jede Matrix größer 2x2 dahingehend prüft, ob es sich um eine Toeplitz-Matrix handelt.

Viel Spaß

Lösungen:

vote_ok
von eisheiliger (3750 Punkte) - 17.04.2021 um 16:53 Uhr
Quellcode ausblenden Python-Code

"""
#344: Prüfen auf Toeplitz-Matrix
Erstelle eine Methode/Funktion, die jede Matrix größer 2x2 dahingehend prüft, ob es sich um eine Toeplitz-Matrix handelt.
"""


def prf_toepl(matrix):
    zei = len(matrix)
    spa = len(matrix[0])
    erg = 0

    for i in range(0, zei - 1):
        if matrix[i][0:spa - 1] == matrix[i + 1][1:spa]:
            erg = 0
        else:
            erg = 1

    if erg == 0:
        print("Toeplitz Matrix = TRUE")
    else:
        print("Toeplitz Matrix = FALSE")


def main():
    matrix1 = [[1, 2],
               [2, 2]]

    matrix2 = [[4, 5, 6, 7, 8],
               [3, 4, 5, 6, 7],
               [2, 3, 4, 5, 6],
               [1, 2, 3, 4, 5]]

    matrix3 = [["a", "b", "c", "d", "e"],
               ["f", "a", "b", "c", "d"],
               ["g", "f", "a", "b", "c"],
               ["h", "g", "f", "a", "b"],
               ["i", "h", "g", "f", "a"]]

    prf_toepl(matrix1)
    prf_toepl(matrix2)
    prf_toepl(matrix3)


if __name__ == '__main__':
    main()


vote_ok
von AlexGroeg (2010 Punkte) - 17.04.2021 um 17:08 Uhr
Quellcode ausblenden Python-Code

def ist_toeplitz_matrix(m):
    zeilen  = len(m)-1
    spalten = len(m[0])-1
    n = zeilen * spalten
    
    if n < 1:
        print('Das ist keine Matrix !!')
        return False
    
    spalte = 0
    while n > 0:
        for zeile in range(zeilen):
            try:
                if m[zeile][spalte] == m[zeile +1][spalte +1]:
                    spalte += 1
                else: 
                    return False
            except:
                spalte = 0
        n -= 1
    return True



matrix = [ [4, 5, 6, 7, 8], 
           [3, 4, 5, 6, 7], 
           [2, 3, 4, 5, 6], 
           [1, 2, 3, 4, 5] ]

for i in matrix:  
    print(i)
print('Ist Toeplitz-Matrix:', ist_toeplitz_matrix(matrix), '\n')


matrix = [ [1, 2], 
           [2, 2] ]

for i in matrix:  
    print(i)
print('Ist Toeplitz Matrix:', ist_toeplitz_matrix(matrix), '\n') 

1x
vote_ok
von AlexGroeg (2010 Punkte) - 19.04.2021 um 17:46 Uhr
Quellcode ausblenden Python-Code

def ist_toeplitz_matrix(matrix):
    zeilen = len(matrix)
    spalte = len(matrix[0])

    for zeile in range(0, zeilen -1):
        if matrix[zeile][0:spalte -1] != matrix[zeile +1][1:spalte]:
            return False
        
    return True


beispiele = [ [[4, 5, 6, 7, 8], 
               [3, 4, 5, 6, 7],
               [2, 3, 4, 5, 6], 
               [1, 2, 3, 4, 5]], 
             
              [[1, 2],
               [2, 2]] ]

for matrix in beispiele: 
    for zeile in matrix:  print(zeile)
    print('Ist Toeplitz-Matrix:', ist_toeplitz_matrix(matrix), '\n')