Zeeslag wordt gespeeld op een veld van bijvoorbeeld 9 x 9 hokjes. Een hokje wordt aangeduid met een letter-cijfercombinatie, bijvoorbeeld A1 of B9. Iedere speler mag op zijn helft tien schepen plaatsen met, afhankelijk van de zeeslagvariant, een omvang variërend van 1 tot 6 opeenvolgende hokjes. Schepen mogen horizontaal of verticaal staan, maar niet diagonaal.

Zeeslag
zeeslag

De soorten en aantallen toegestane schepen zijn hetzelfde voor elke speler. Er bestaan heel wat varianten maar de meest gebruikte schepen zijn:

Nadat de schepen zijn geplaatst, verloopt het spel in een aantal ronden. De spelers noemen om beurt een hokje in het rooster van de tegenstander. De tegenstander zegt 'geraakt' indien het vak wordt bezet door een schip. Om zich een beeld te vormen van de vloot van de tegenstander neemt de speler nota van de treffer of misser. Doel is om als eerste alle locaties van alle schepen van de tegenstander te raden en zo de vloot van de tegenstander tot zinken te brengen.

In deze oefening wordt de ligging van de boten op het rooster bijghouden in een set. Ook een enkele boot wordt voorgesteld door een set van vakjes. Hieronder vind je de grijze vloot zoals in de afbeelding getoond.

{'C4', 'D4', 'E4', 'A2', 'I8', 'F8', 'H8', 'A3', 'G8'}

Opgave

Programmeer volgende drie functies:

In deze oefening kunnen boten aan elkaar grenzen.

Voorbeeld

>>> boot_overlappend({'B4', 'A4', 'C4'},{'C4', 'D4', 'E4', 'A2', 'I8', 'F8', 'H8', 'A3', 'G8'})
True
>>> boot_overlappend({'F4', 'F5', 'F6', 'F3'},{'C4', 'D4', 'E4', 'A2', 'I8', 'F8', 'H8', 'A3', 'G8'})
False

>>> boot_toevoegen({'B4', 'A4', 'C4'},{'C4', 'D4', 'E4', 'A2', 'I8', 'F8', 'H8', 'A3', 'G8'})
{'C4', 'D4', 'E4', 'A2', 'I8', 'F8', 'H8', 'A3', 'G8'}
>>> boot_toevoegen({'F4', 'F5', 'F6', 'F3'},{'C4', 'D4', 'E4', 'A2', 'I8', 'F8', 'H8', 'A3', 'G8'})
{'F5', 'C4', 'D4', 'F6', 'E4', 'A2', 'F4', 'I8', 'F8', 'F3', 'H8', 'A3', 'G8'}

>>> vuur('I7',{'E4', 'H8', 'I8', 'A2', 'G8', 'D4', 'C4', 'F8'})
(False, {'E4', 'H8', 'I8', 'A2', 'G8', 'D4', 'C4', 'F8'})
>>> vuur('F8',{'E4', 'H8', 'I8', 'A2', 'G8', 'D4', 'C4', 'F8'})
(True, {'E4', 'H8', 'I8', 'A2', 'G8', 'D4', 'C4'})

Bronnen

Wikipedia (2018).1