In morsecode1 wordt elk karakter van een woord omgezet naar een unieke combinatie van punten (.) en streepjes (-). De omzettingen van de individuele karakters worden telkens van elkaar gescheiden door één enkele spatie. Als we echter alle spaties uit de morsecode wegdenken, dan kunnen we enkele nieuwe definities bedenken.

We zeggen dat woorden isomorse zijn als ze dezelfde morsecode hebben. De volgende drie woorden zijn bijvoorbeeld isomorse:

woord morsecode
BLINKEN -... .-.. .. -. -.- . -.
DELICTEN -.. . .-.. .. -.-. - . -.
NEERSTEKEN -. . . .-. ... - . -.- . -.

Als we alle punten en streepjes omwisselen in de morsecode van een woord (punten worden streepjes en streepjes worden punten) en we bekomen daarmee de morsecode van een ander woord, dan zeggen we dat deze woorden antimorse zijn.

woord morsecode omgewisselde morsecode woord
EKSTEROGEN . -.- ... - . .-. --- --. . -. -.- .- -- .--. - .... . -- .- KAMPTHEMA
NEONLAMPEN -. . --- -. .-.. .- -- .--. . -. .--. .. .- -. --- ... - ..- -.- PIANOSTUK
EIWITARM . .. .-- .. - .- .-. -- --- -. .-- . - . -. -.. ONWETEND
LEERJAAR .-.. . . .-. .--- .- .- .-. -. --- -- .- -.. . -. - . -. - NOMADENTENT
OZONGATEN --- --.. --- -. --. .- - . -. ... ..- -... .-. . --. . -. - SUBREGENT

Als we de volgorde van de punten en streepjes omkeren in de morsecode van een woord en we bekomen daarmee de morsecode van een ander woord, dan zeggen we dat deze woorden revomorse zijn.

woord morsecode omgekeerde morsecode woord
DUIVEL -.. ..- .. ...- . .-.. . .-. . -.. .. . -. ... - EREDIENST
BINDINGEN -... .. -. -.. .. -. --. . -. .-. . -- .-.. .. -.-. .... - REMLICHT
HUISDIEREN .... ..- .. ... -.. .. . .-. . -. . -..- .... .. -... .. - .. . ... EXHIBITIES
ESTHETICI . ... - .... . - .. -.-. .. ... - .-. . -... . .-. ... STREBERS
LEGITIEM .-.. . --. .. - .. . -- -- . . .-.. . --.. . -. MEELEZEN

Als de morsecode van een woord palindromisch is (omgekeerde morsecode is gelijk aan de morsecode zelf) dan zeggen we dat het woord een palinmorse is.

woord morsecode
ARCHITECTE .- .-. -.-. .... .. - . -.-. - .
ERETITEL . .-. . - .. - . .-..
STARTWAARDE ... - .- .-. - .-- .- .- .-. -.. .
VAKANTIE ...- .- -.- .- -. - .. .
WATERWEG .-- .- - . .-. .-- . --.

Uiteraard kunnen we het voorgaande ook combineren, waarbij we zowel alle punten en streepjes omwisselen als de volgorde van de punten en streepjes omkeren.

Opgave

Om de morsecode van woorden te kunnen bepalen, wordt de omzetting van elk karakter naar een unieke combinatie van punten en streepjes vastgelegd in een tekstbestand. Elke regel van dat bestand bestaat uit een karakter, gevolgd door een spatie en de unieke combinatie van punten en streepjes voor dat karakter. Omdat bij de omzetting geen onderscheid gemaakt wordt tussen hoofdletters en kleine letters, worden letters in het bestand altijd voorgesteld in hoofdletters. Gevraagd wordt:

Voorbeeld

In onderstaande voorbeeldsessie gaan we ervan uit dat de tekstbestanden morse.txt2 en woorden.txt3 zich in de huidige directory bevinden.

>>> morse = morsecode('morse.txt4')
>>> morse['A']
'.-'
>>> morse['P']
'.--.'
>>> morse['?']
'..--..'

>>> tekst2morse('BLINKEN', morse)
'-... .-.. .. -. -.- . -.'
>>> tekst2morse('delicten', morse)
'-.. . .-.. .. -.-. - . -.'
>>> tekst2morse('VOORLEESSESSIES', morse)
'...- --- --- .-. .-.. . . ... ... . ... ... .. . ...'

>>> omwisselen('-. .. -. . - . . -.')
'.- -- .- - . - - .-'
>>> omwisselen('.- - - . -- .--. -')
'-. . . - .. -..- .'

>>> woorden = databank('woorden.txt5', morse)
>>> woorden['-....-....-.-.-.-.']
{'BLERKEN', 'DELICTEN', 'NEERSTEKEN', 'BLINKEN'}

>>> opzoeken('BLINKEN', morse, woorden)
{'DELICTEN', 'NEERSTEKEN', 'BLINKEN', 'BLERKEN'}
>>> opzoeken('EKSTEROGEN', morse, woorden, omgewisseld=True)
{'KAMPTHEMA'}
>>> opzoeken('ESTHETICI', morse, woorden, omgekeerd=True)
{'STREBERS'}
>>> opzoeken('ARCHITECTE', morse, woorden, omgekeerd=True)
{'ARCHITECTE'}
>>> opzoeken('TROMPET', morse, woorden, omgewisseld=True, omgekeerd=True)
{'PRESTEN', 'PLEITEN', 'WELVEN', 'WUIVEN', 'PLEUR'}
>>> opzoeken('TELESCOOP', morse, woorden, omgekeerd=True, omgewisseld=True)
{'TELESCOOP'}

Epiloog

Hoe toevallig: In het Engels bevat de morsecode van het woord OBSESSIVE een lange reeks opeenvolgende punten (18):

--- -... ... . ... ... .. ...- .

De recordhouder is echter LESSEESHIP met 21 opeenvolgende punten in de morsecode:

.-.. . ... ... . . ... .... .. .--.

In het Nederlands is dat VOORLEESSESSIES met 23 opeenvolgende punten in de morsecode:

...- --- --- .-. .-.. . . ... ... . ... ... .. . ...