PROG0189 - Scrabble words

no tags 

Scrabble is a board game for two to four players, where words must be laid on a game board using a number of random letters. Here, luck and ingenuity go hand in hand, since the letters are picked randomly and the aim is to get the highest score possible with those letters. A score is appointed to each letter of the alphabet, as you can see in the image below. The score of the word that is laid on the board, simply is the sum of the scores of the individual letters of which the word consists.

scrabble
Distribution of punts of the letters on the scrabble board.

Assignment

Add a new datatype ScrabbleWord to Python that represents the collection of words that consist only of letters from the alphabet. Both uppercase and lowercase letters are allowed, but all other characters are invalid. The objects of the datatype ScrabbleWord must behave in all respects as the built-in strings in Python, with the difference that

  • scrabble words have an additional method score, to which no parameters must be given, and that prints the score of the word on the scrabble board
  • all methods that are available for the built-in string datatype and that print a string (or for example a list of strings) as a result, must now print a scrabble word (or a list of scrabble words) as a result.

Furthermore, scrabble words are immutable sequences of text, that you can index and slice in the usual manner, and of which you can ask for example the length using the built-in function len.

Example

>>> word = ScrabbleWord('shrubbery')
>>> word.score()
19
>>> new = word.replace('sh', '').replace('ery', 'ish')
>>> print(new)
rubbish
>>> new.score()
14
>>> new = ScrabbleWord('flying') + ScrabbleWord('circus')
>>> print(new)
flyingcircus
>>> new.score()
23
>>> word[:5].score()
10

Scrabble is een bordspel voor twee tot vier spelers, waarbij woorden op een spelbord moeten gelegd worden aan de hand van een reeks willekeurige letters. Hierbij gaan geluk en vernuft hand in hand, omdat de letters willekeurig gepakt worden en het de kunst is hiermee een zo hoog mogelijke score te behalen. Aan elke letter van het alfabet wordt een vaste score toegekend, zoals je kunt zien in onderstaande afbeelding. De score van een woord dat op het spelbord gelegd wordt, is dan eenvoudigweg de som van de scores van de individuele letters waaruit het woord bestaat.

scrabble
Puntenverdeling van de letters op het scrabblebord.

Opgave

Voeg een nieuw gegevenstype ScrabbleWoord toe aan Python dat de verzameling van woorden voorstelt die enkel bestaan uit letter uit het alfabet. Zowel hoofdletters als kleine letters zijn toegelaten, maar alle andere karakters zijn ongeldig. De objecten van het gegevenstype ScrabbleWoord moeten zich in alle opzichten gedragen zoals de ingebouwde strings van Python, met dat verschil dat

  • scrabblewoorden een bijkomende methode score hebben, waaraan geen parameters moeten meegegeven worden, en die de score van het woord op het scrabblebord teruggeeft
  • alle methoden die beschikbaar zijn voor het ingebouwde string-gegevenstype en die een string als resultaat (of bijvoorbeeld een lijst van string) teruggeven, moeten nu een scrabblewoord als resultaat teruggeven (of een lijst van scrabblewoorden)

Voor de rest zijn scrabblewoorden dus onveranderlijke reeksen letters, die je op de gebruikelijke manier kunt indexeren en slicen, en waarvan je bijvoorbeeld de lengte kunt opvragen aan de hand van de ingebouwde functie len.

Voorbeeld

>>> woord = ScrabbleWoord('shrubbery')
>>> woord.score()
19
>>> nieuw = woord.replace('sh', '').replace('ery', 'ish')
>>> print(nieuw)
rubbish
>>> nieuw.score()
14
>>> nieuw = ScrabbleWoord('flying') + ScrabbleWoord('circus')
>>> print(nieuw)
flyingcircus
>>> nieuw.score()
23
>>> woord[:5].score()
10


Added by:Peter Dawyndt
Date:2011-11-24
Time limit:5s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:PY_NBC
Resource:None