Ga naar hoofdinhoud

Bouwsteen 3 — actions(bord)

Hier bouw je op verder

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 set van (i, j) tuples voor alle cellen waar bord[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().

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

Python
Code-omgeving wordt voorbereid…
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 →.