# eerste leeftijdraadsel
stelsel = [
    [ 3,-1, 0, 0 ], 
    [ 0, 1,-2, 2 ], 
    [-1, 0, 1, 7 ]
]

# tweede leeftijdraadsel
stelsel2 = [
    [ 1,  1, 1, 27],
    [ 1, -2, 0, 0],
    [ 0, -1, 1, 3]
]

# pizzaraadsel - resulteert in een deling door 0
stelsel3 = [
    [ 1, 1, 0, 0, 6],
    [ 0, 0, 1, 1, 6],
    [ 0,-1, 0, 1, 1],
    [ 1, 0,-2, 0, 0]
]

# verwissel twee rijen (vergelijkingen) van een stelsel met elkaar
# de rijen staan op posities index_1 en index_2
def verwissel (stelsel, index_1, index_2):
    hulp = stelsel[index_1]
    stelsel[index_1] = stelsel[index_2]
    stelsel[index_2] = hulp

# deel de rij (vergelijking) door het gegeven getal (in-place)
def deel_door (rij, deler):
    for i in range(len(rij)):
        rij[i] /= deler

# trekt rij_2 een aantal keer af van rij_1 (in-place)
def trek_veelvoud_af (rij_1, rij_2, factor):
    for i in range(len(rij_1)):
        rij_1[i] -= rij_2[i] * factor

## de eliminatie
n = len(stelsel)

for k in range (0,n):   # kolomnummer
    # zorg dat er een 1 komt op plaats stelsel[k][k]
    deel_door(stelsel[k], stelsel[k][k])
    # reduceer alle rijen, behalve rij k
    for r in range (0,n):
        if r != k:
            trek_veelvoud_af (stelsel[r], stelsel[k], stelsel[r][k])

## het resultaat
for r in range (0,n):
    print (stelsel[r][n+1])





