## Nog meer Sudoku's uit Sudoku's
#
sudoku = [
    [5, 3, 4, 6, 7, 8, 9, 1, 2],
    [6, 7, 2, 1, 9, 5, 3, 4, 8],
    [1, 9, 8, 3, 4, 2, 5, 6, 7],
    [8, 5, 9, 7, 6, 1, 4, 2, 3],
    [4, 2, 6, 8, 5, 3, 7, 9, 1],
    [7, 1, 3, 9, 2, 4, 8, 5, 6],
    [9, 6, 1, 5, 3, 7, 2, 8, 4],
    [2, 8, 7, 4, 1, 9, 6, 3, 5],
    [3, 4, 5, 2, 8, 6, 1, 7, 9]
]

# uit oefening 8.1
lijn = "-" * 21

def print_sudoku (sudoku):
    print (lijn)
    for rij in sudoku:
        print ("|", end="")
        for element in rij:
            print (f" {element}", end = "")
        print (" |")
    print (lijn)

def spiegel_verticaal (sudoku):
    return sudoku[::-1]

def spiegel_horizontaal (sudoku):
    resultaat = []
    for rij in sudoku:
        resultaat.append(rij[::-1])
    return resultaat

def spiegel_diagonaal (sudoku):
    resultaat = []
    for kolomnummer in range(9):
        nieuwe_rij = []
        for rij in sudoku:
            nieuwe_rij.append(rij[kolomnummer])
        #alternatief
        #for rijnummer in range(9):            
        #    nieuwe_rij.append(sudoku[rijnummer][kolomnummer])                
        resultaat.append(nieuwe_rij)
    return resultaat

def roteer_90 (sudoku):
    return spiegel_horizontaal(spiegel_diagonaal(sudoku))
        
def hernummer (sudoku):
    resultaat = []
    for rij in sudoku:
        nieuwe_rij = []
        for element in rij:
            nieuwe_rij.append(10 - element)
        resultaat.append(nieuwe_rij)
    return resultaat      


print("Origineel")
print_sudoku(sudoku)
print("Verticaal gespiegeld")
print_sudoku(spiegel_verticaal(sudoku))
print("Horizontaal gespiegeld")
print_sudoku(spiegel_horizontaal(sudoku))
print("Diagonaal gespiegeld")
print_sudoku(spiegel_diagonaal(sudoku))
print("90⁰ geroteerd")
print_sudoku(roteer_90(sudoku))
print("Hernummerd")
print_sudoku(hernummer(sudoku))
