Bouwsteen 3 — actions(bord)
Hier bouw je op verder
- Python If en else
- Python Sets
Leerdoel: je geeft alle mogelijke zetten op een bord terug: alle
lege cellen als (rij, kolom) tuples.
Wat doet deze functie?
Voor minimax moet je weten welke zetten er mogelijk zijn op een bord,
en dat zijn de cellen die nog leeg (None) zijn. Je geeft ze terug als
een set van tuples. Een set, omdat de volgorde er niet toe doet:
alle lege cellen tellen even zwaar.
Specificatie
- Input: een
bord. - Output: een
setvan(i, j)tuples voor alle cellen waarbord[i][j] is None. - Voorbeelden:
- Leeg bord → set van 9 tuples:
{(0,0), (0,1), ..., (2,2)}. - Bord met 1 zet → set van 8 tuples.
- Vol bord → lege set:
set().
- Leeg bord → set van 9 tuples:
Voorspel
Wat denk je dat de output is?
bord = [
["X", None, "X"],
["O", "X", "O"],
[None, None, None],
]
# Welke cellen zijn None?
Antwoord
{(0, 1), (2, 0), (2, 1), (2, 2)}, vier lege cellen. In welke volgorde
je ze ziet maakt niet uit, een set is ongeordend.
Bouw zelf en test
Tip
Dezelfde twee geneste lussen als op het bord in Python,
met daarin een if op bord[i][j] is None. Een set maak je met
set(), en je voegt er iets aan toe met .add(...).
Let op de dubbele haakjes: mogelijk.add((i, j)) voegt één tuple toe.
mogelijk.add(i, j) geeft een foutmelding, want add accepteert maar
één argument.
Antwoord
def actions(bord):
mogelijk = set()
for i in range(3):
for j in range(3):
if bord[i][j] is None:
mogelijk.add((i, j))
return mogelijk
Door naar functies in functies →.