Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import re
- class Scrabble:
- def __init__(self, n):
- self.grootte = n
- assert 1 <= n <= 26, 'ongeldig spelbord'
- # initialisatie van een leeg spelbord
- self.bord = []
- for _ in range(self.grootte):
- self.bord.append(n * '-')
- for i in range(len(self.bord)):
- self.bord[i] = list(self.bord[i])
- def __str__(self):
- r = ''
- for rij in self.bord:
- r += ''.join(rij) + '\n'
- return r.rstrip()
- def aanleggen(self, plaats, woord):
- r = ''
- gelegd = False
- verticaal = False
- if plaats[0].isalpha():
- verticaal = True
- # variabele om karakters te vergelijken met elkaar
- vglk = ''
- # rijen beginnen te tellen vanaf 0
- # kolommen zijn letters A, B, ...
- rij = ''
- kolom = ''
- for karakter in plaats:
- if karakter.isalpha():
- kolom = karakter
- else:
- rij += karakter
- rij = int(rij)
- assert rij > 0, 'woord kan niet aangelegd worden'
- # Als het woord horizontaal kan gelegd worden
- if len(woord) + ord(kolom) % 64 - 1 <= self.grootte and verticaal is False:
- string = ''
- geldig = True
- for i in range(len(woord)):
- vglk = woord[i].upper()
- if self.bord[rij - 1][ord(kolom) % 64 + i - 1] != '-' and self.bord[rij - 1][ord(kolom) % 64 + i - 1].upper() != vglk:
- geldig = False
- if geldig:
- gelegd = True
- for i in range(len(woord)):
- vglk = woord[i].upper()
- if self.bord[rij - 1][ord(kolom) % 64 + i - 1] == '-':
- self.bord[rij - 1][ord(kolom) % 64 + i - 1] = woord[i]
- string += woord[i]
- elif self.bord[rij - 1][ord(kolom) % 64 + i - 1].upper() == vglk:
- string += '(' + self.bord[rij - 1][ord(kolom) % 64 + i - 1] + ')'
- # Als het woord verticaal kan gelegd worden
- if len(woord) + rij - 1 <= self.grootte and not gelegd and verticaal is True:
- string = ''
- geldig = True
- for i in range(len(woord)):
- vglk = woord[i].upper()
- if self.bord[rij + i - 1][ord(kolom) % 64 - 1] != '-' and self.bord[rij + i - 1][ord(kolom) % 64 - 1].upper() != vglk:
- geldig = False
- if geldig:
- gelegd = True
- for i in range(len(woord)):
- vglk = woord[i].upper()
- if self.bord[rij + i - 1][ord(kolom) % 64 - 1] == '-':
- self.bord[rij + i - 1][ord(kolom) % 64 - 1] = woord[i]
- string += woord[i]
- elif self.bord[rij + i - 1][ord(kolom) % 64 - 1].upper() == vglk:
- string += '(' + self.bord[rij + i - 1][ord(kolom) % 64 - 1] + ')'
- else:
- raise AssertionError('woord kan niet aangelegd worden')
- if not gelegd:
- raise AssertionError('woord kan niet aangelegd worden')
- return re.sub(r"\)\(", "", string)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement