Een tekstbestand bevat een aantal regels, waarop woorden gescheiden door spaties te vinden zijn. In
dit bestand komen enkel kleine letters, spaties en '\n
-karakters voor.
De bedoeling is om een woordenboek te construeren, met als sleutel elk van die woorden, en als
bijhorende waarde een lijst van meest gelijkaardige woorden.
Om de gelijkenis tussen woorden vast te stellen, gebruiken we de Hammingafstand tussen twee woorden $$a$$ en $$b$$. Hiertoe vergelijken we elk karakter uit $$a$$ met het karakter op dezelfde positie in $$b$$, en tellen het aantal verschillende karakters. Indien de strings $$a$$ en $$b$$ van verschillende lengte zijn, dan wordt dit verschil vermeerderd met de absolute waarde van het verschil in lengte van $$a$$ en $$b$$.
Enkele voorbeelden:
hamming('test', 'test') = 0 hamming('test', 'best') = 1 # 1 letter verschillend hamming('best', 'asbest') = 6 # 4 letters verschillend + 2 verschil in lengte hamming('testen', 'best') = 3 # 1 letter verschillend + 2 verschil in lengte
Indien een woord meest gelijkend is met slechts 1 woord, dan moet de waarde dus een lijst zijn
met slechts één woord. Indien er meerdere woorden zijn die evenveel gelijken op het sleutelwoord,
dan een lijst met al die meest gelijkende woorden. De volgorde van de woorden moet gesorteerd
worden via de ingebouwde sorted()
-functie (die deze woorden alfabetisch opklimmend
sorteert).
Bij het bepalen van gelijkenissen tussen woorden om meest gelijkende woorden te zoeken, wordt het woord zelf uitgesloten (anders zou je als meest gelijkend woord natuurlijk altijd het woord zelf vinden). Een welbepaald woord kan ook meerdere keren voorkomen in een bestand. In dit geval, kan het meerdere keren in een resultaatlijst voorkomen.
maan ma maak maan roos markt rokresultaat van de functie
gelijkend_woordenboek()
gelijkend_woordenboek('Tekst_0_in.txt') = {'ma': ['maak', 'maan', 'maan'], 'maak': ['maan', 'maan'], 'markt': ['maak'], 'roos': ['rok'], 'rok': ['roos'], 'maan': ['maak']}