Een vierkant speelveld bestaat uit n bij n velden, genummerd via een tuple gehele getallen. Het eerste getal stelt hierbij een rijnummer voor en het tweede een kolomnummer. Beide getallen liggen dus tussen 0 en n-1 (grenzen inbegrepen). Op dit bord worden een aantal velden gedefinieerd die ontoegankelijk zijn voor een speelstuk. Bedoeling is om na te gaan of vanuit het veld (0,0) het veld (n-1, n-1) bereikbaar is door enkel horizontaal of verticaal te bewegen, zonder een verboden speelveld te gebruiken. Programmeer in de klasse DiagonaalPad:

Voorbeeld

Tabblad 1

d = DiagonaalPad(2)
d += (1, 1)
print(d.verboden_velden()) #[(1, 1)]
d += (1, 1)
print(d.verboden_velden()) #[(1, 1)]

d = DiagonaalPad(6)
d += (3, 4)
print(d.verboden_velden()) #[(3, 4)]
d += (4, 4)
print(d.verboden_velden()) #[(3, 4), (4, 4)]
d += [(-3, 5), (1, 1), (3, 5), (-1, -3), (5, 1), (1, 3)]
print(d.verboden_velden()) #[(3, 4), (4, 4), (1, 1), (3, 5), (5, 1), (1, 3)]

Tabblad 2

d = DiagonaalPad(2)
print(sorted(d.alle_borden())) #[[(0, 0), (1, 1)], [(1, 0), (0, 1)]]

d = DiagonaalPad(3)
print(sorted(d.alle_borden())) #[[(0, 0), (1, 1), (2, 2)], [(0, 0), (2, 1), (1, 2)], [(1, 0), (0, 1), (2, 2)], [(1, 0), (2, 1), (0, 2)], [(2, 0), (0, 1), (1, 2)], [(2, 0), (1, 1), (0, 2)]]

Tabblad 3

d = DiagonaalPad(4)
d += [(3, 0), (2, 1), (0, 2), (1, 3)]
print(sorted(d.eindpunten(5))) #[(2, 3), (3, 2)]
print(sorted(d.trajecten())) #[[(0, 0), (0, 1), (1, 1), (1, 2), (2, 2), (2, 3), (3, 3)], [(0, 0), (0, 1), (1, 1), (1, 2), (2, 2), (3, 2), (3, 3)], [(0, 0), (1, 0), (1, 1), (1, 2), (2, 2), (2, 3), (3, 3)], [(0, 0), (1, 0), (1, 1), (1, 2), (2, 2), (3, 2), (3, 3)]]

d = DiagonaalPad(2)
d += [(0, 0), (1, 1)]
print(sorted(d.eindpunten(3))) #[]
print(sorted(d.trajecten())) #[]

d = DiagonaalPad(5)
d += [(4, 0), (0, 1), (3, 2), (2, 3), (1, 4)]
print(sorted(d.eindpunten(5))) #[(0, 3), (1, 2), (2, 1), (3, 0), (4, 1)]
print(sorted(d.trajecten())) #[[(0, 0), (1, 0), (1, 1), (1, 2), (2, 2), (2, 1), (2, 0), (3, 0), (3, 1), (4, 1), (4, 2), (4, 3), (3, 3), (3, 4), (4, 4)], [(0, 0), (1, 0), (1, 1), (1, 2), (2, 2), (2, 1), (2, 0), (3, 0), (3, 1), (4, 1), (4, 2), (4, 3), (4, 4)], [(0, 0), (1, 0), (1, 1), (1, 2), (2, 2), (2, 1), (3, 1), (4, 1), (4, 2), (4, 3), (3, 3), (3, 4), (4, 4)], [(0, 0), (1, 0), (1, 1), (1, 2), (2, 2), (2, 1), (3, 1), (4, 1), (4, 2), (4, 3), (4, 4)], [(0, 0), (1, 0), (1, 1), (2, 1), (2, 0), (3, 0), (3, 1), (4, 1), (4, 2), (4, 3), (3, 3), (3, 4), (4, 4)], [(0, 0), (1, 0), (1, 1), (2, 1), (2, 0), (3, 0), (3, 1), (4, 1), (4, 2), (4, 3), (4, 4)], [(0, 0), (1, 0), (1, 1), (2, 1), (3, 1), (4, 1), (4, 2), (4, 3), (3, 3), (3, 4), (4, 4)], [(0, 0), (1, 0), (1, 1), (2, 1), (3, 1), (4, 1), (4, 2), (4, 3), (4, 4)], [(0, 0), (1, 0), (2, 0), (2, 1), (3, 1), (4, 1), (4, 2), (4, 3), (3, 3), (3, 4), (4, 4)], [(0, 0), (1, 0), (2, 0), (2, 1), (3, 1), (4, 1), (4, 2), (4, 3), (4, 4)], [(0, 0), (1, 0), (2, 0), (3, 0), (3, 1), (4, 1), (4, 2), (4, 3), (3, 3), (3, 4), (4, 4)], [(0, 0), (1, 0), (2, 0), (3, 0), (3, 1), (4, 1), (4, 2), (4, 3), (4, 4)]]