PROG0151 - Word zippers
In a game of word zippers, you get two words $A$ and $C$, and the aim is to place a new word $B$ in between those words. The word $B$ must be chosen so that the first two words $AB$ and the last two words $BC$ each form a new word again. The length of the word $B$ is also given. E.g. the four letter word type fits between the words hydro and writer, which results in the compound words hydrotype and typewriter.
Assignment
- Write a function
readWords(filename)
- Write a function
wordzippers(zipper, words)
As a result, the function must print a string, with the format word-WORDS-word. The words before and after the hyphens are the given words, and are written in lowercase letters. The words between the hyphens are the words that form a valid word zipper. These words must be written in uppercase letters. If there are multiple words between the hyphens, they must be listed alphabetically and separated by commas. If no words can be found, three question marks must be placed in between the hyphens.
Example
>>> words = readWords('wordlist.txt') >>> wordzippers('gyne-....-wrote', words) 'gyne-TYPE-wrote' >>> wordzippers('hydro-....-writer', words) 'hydro-TYPE-writer' >>> wordzippers('java-.....-python', words) 'java-???-python' >>> wordzippers('agit-....-wood', words) 'agit-PROP-wood' >>> wordzippers('arch-...-thing', words) 'arch-SEE-thing' >>> wordzippers('frog-...-puller', words) 'frog-LEG-puller' >>> wordzippers('arche-....-wrote', words) 'arche-TYPE-wrote'
Bij een spelletje woordritsen krijg je twee woorden $A$ en $C$ gegeven, waartussen je een nieuw woord $B$ moet zien te plaatsen. Het woord $B$ moet zo gekozen worden, dat de eerste twee woorden $AB$ en de laatste twee woorden $BC$ samen weer een nieuw woord vormen. De lengte van het gezocht woord $B$ wordt daarbij ook gegeven. Zo past het zesletterwoord staart tussen de woorden paarden en deling, wat resulteert in de samengestelde woorden paardenstaart en staartdeling.
Opgave
- Schrijf een functie
leesWoorden(bestandsnaam)
- Schrijf een functie
woordritsen(rits, woorden)
Als resultaat moet de functie een string teruggeven, met als formaat woord-WOORDEN-woord. De woorden voor en na de koppeltekens zijn de opgegeven woorden, en worden met kleine letters weergegeven. De woorden tussen de twee koppeltekens zijn de woorden die een geldige woordenrits vormen. Deze woorden moeten met hoofdletters weergegeven worden. Indien er meerdere woorden zijn die een geldige woordrits vormen, dan moeten ze in alfabetische volgorde opgelijst worden en van elkaar gescheiden worden door komma's. Indien er geen woorden zijn die een geldige woordrits vormen, dan moeten drie vraagtekens tussen de twee koppeltekens geplaatst worden.
Voorbeeld
>>> woorden = leesWoorden('woordenlijst.txt') >>> woordritsen('aal-....-tuin', woorden) 'aal-MOES-tuin' >>> woordritsen('donder-...-blad', woorden) 'donder-DAG,KOP-blad' >>> woordritsen('java-.....-python', woorden) 'java-???-python' >>> woordritsen('paarden-......-deling', woorden) 'paarden-STAART-deling' >>> woordritsen('reken-......-formule', woorden) 'reken-WONDER-formule' >>> woordritsen('veld-.....-veld', woorden) 'veld-BONEN,PROEF,SPORT,TEKEN,ZICHT-veld' >>> woordritsen('woord-.....-bloem', woorden) 'woord-KUNST-bloem'
Added by: | Peter Dawyndt |
Date: | 2011-08-18 |
Time limit: | 60s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | PY_NBC |
Resource: | None |