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)
waaraan de locatie van een tekstbestand moet doorgegeven worden. Dit
tekstbestand moet een lijst van alle woorden bevatten die als geldig
beschouwd worden. Elk van deze woorden moet hierbij op een afzonderlijke
regel staan. Het bestand woordenlijst.txt wordt
gebruikt bij de voorbeelden van deze opgave, en kan ook gebruikt worden
om je oplossing te testen. De functie moet een (samengesteld) object als
resultaat teruggeven, dat alle geldige woorden uit het bestand bevat. De
keuze van het geschikte gegevenstype voor dit object maak je in functie
van de snelheid waarmee de functie woordenrits
(zie hieronder) uitgevoerd wordt. Een minder geschikte keuze zal immers
leiden tot een oplossing die een reeks woordritsen niet kan bepalen
binnen de vooropgestelde tijdslimiet.
Schrijf een functie
woordritsen(rits, woorden)
die alle geldige woorden met gegeven lengte teruggeeft die passen tussen
twee opgegeven woorden. Als eerste parameter moet aan de functie een
string doorgegeven worden, met als formaat woord-....-woord.
Het eerste gegeven woord staat hierbij voor het eerste koppelteken, en
het tweede gegeven woord na het tweede koppelteken. De woorden zelf
bevatten geen koppeltekens. Het aantal punten dat tussen de twee
koppeltekens staat, geeft de lengte aan van het gezochte woord dat
tussen de twee gegeven woorden past. De tweede parameter die aan de
functie moet doorgegeven worden is een (samengesteld) object dat alle
woorden bevat die als geldig beschouwd worden. Bij het opzoeken van
woorden die een woordenrits kunnen vormen, moet geen onderscheid gemaakt
worden tussen hoofdletters en kleine letters, noch in de woorden uit het
opgegeven bestand, noch in de opgegeven woorden van de eerste parameter.
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'