Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.23 KB | None | 0 0
  1. import re
  2. class Scrabble:
  3. def __init__(self, n):
  4. self.grootte = n
  5. assert 1 <= n <= 26, 'ongeldig spelbord'
  6. # initialisatie van een leeg spelbord
  7. self.bord = []
  8. for _ in range(self.grootte):
  9. self.bord.append(n * '-')
  10. for i in range(len(self.bord)):
  11. self.bord[i] = list(self.bord[i])
  12.  
  13. def __str__(self):
  14. r = ''
  15. for rij in self.bord:
  16. r += ''.join(rij) + '\n'
  17. return r.rstrip()
  18. def aanleggen(self, plaats, woord):
  19. r = ''
  20. gelegd = False
  21. verticaal = False
  22. if plaats[0].isalpha():
  23. verticaal = True
  24. # variabele om karakters te vergelijken met elkaar
  25. vglk = ''
  26. # rijen beginnen te tellen vanaf 0
  27. # kolommen zijn letters A, B, ...
  28. rij = ''
  29. kolom = ''
  30. for karakter in plaats:
  31. if karakter.isalpha():
  32. kolom = karakter
  33. else:
  34. rij += karakter
  35. rij = int(rij)
  36. assert rij > 0, 'woord kan niet aangelegd worden'
  37. # Als het woord horizontaal kan gelegd worden
  38. if len(woord) + ord(kolom) % 64 - 1 <= self.grootte and verticaal is False:
  39. string = ''
  40. geldig = True
  41. for i in range(len(woord)):
  42. vglk = woord[i].upper()
  43. if self.bord[rij - 1][ord(kolom) % 64 + i - 1] != '-' and self.bord[rij - 1][ord(kolom) % 64 + i - 1].upper() != vglk:
  44. geldig = False
  45. if geldig:
  46. gelegd = True
  47. for i in range(len(woord)):
  48. vglk = woord[i].upper()
  49. if self.bord[rij - 1][ord(kolom) % 64 + i - 1] == '-':
  50. self.bord[rij - 1][ord(kolom) % 64 + i - 1] = woord[i]
  51. string += woord[i]
  52. elif self.bord[rij - 1][ord(kolom) % 64 + i - 1].upper() == vglk:
  53. string += '(' + self.bord[rij - 1][ord(kolom) % 64 + i - 1] + ')'
  54.  
  55. # Als het woord verticaal kan gelegd worden
  56. if len(woord) + rij - 1 <= self.grootte and not gelegd and verticaal is True:
  57. string = ''
  58. geldig = True
  59. for i in range(len(woord)):
  60. vglk = woord[i].upper()
  61. if self.bord[rij + i - 1][ord(kolom) % 64 - 1] != '-' and self.bord[rij + i - 1][ord(kolom) % 64 - 1].upper() != vglk:
  62. geldig = False
  63. if geldig:
  64. gelegd = True
  65. for i in range(len(woord)):
  66. vglk = woord[i].upper()
  67. if self.bord[rij + i - 1][ord(kolom) % 64 - 1] == '-':
  68. self.bord[rij + i - 1][ord(kolom) % 64 - 1] = woord[i]
  69. string += woord[i]
  70. elif self.bord[rij + i - 1][ord(kolom) % 64 - 1].upper() == vglk:
  71. string += '(' + self.bord[rij + i - 1][ord(kolom) % 64 - 1] + ')'
  72. else:
  73. raise AssertionError('woord kan niet aangelegd worden')
  74.  
  75. if not gelegd:
  76. raise AssertionError('woord kan niet aangelegd worden')
  77. return re.sub(r"\)\(", "", string)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement