Het spiegelbeeld van letter $$\alpha$$ op afstand $$n \in \mathbb{N}$$ wordt gevormd door het letterpaar $$\alpha_{-n}\,\alpha_{+n}$$. De twee letters van dit spiegelbeeld worden bepaald door het alfabet in wijzerzin rond een cirkel te plaatsen, waardoor na de letter Z terug de letter A volgt.
De letter $$\alpha_{-n}$$ wordt dan bekomen door vanaf letter $$\alpha$$ in tegenwijzerzin $$n$$ stappen terug te springen in het alfabet rond de cirkel. De letter $$\alpha_{+n}$$ wordt bekomen door vanaf letter $$\alpha$$ in wijzerzin $$n$$ stappen vooruit te springen in het alfabet rond de cirkel. Op die manier zijn $$\alpha_{-n}$$ en $$\alpha_{+n}$$ dus elkaars spiegelbeeld ten opzichte van de letter $$\alpha$$. Het letterpaar OC is bijvoorbeeld het spiegelbeeld van letter V (oranje) op afstand $$n = 7$$, omdat letter O op 7 stappen in tegenwijzerzin staat van letter V (blauw) en letter C op 7 stappen in wijzerzin van letter V (groen).
Bij Narcissuscodering wordt een bericht gecodeerd door elke letter te vervangen door zijn spiegelbeeld op afstand $$n \in \mathbb{N}$$. De letters van het eerste woord van het bericht worden gecodeerd met afstand $$n=1$$, die van het tweede woord met afstand $$n=2$$, die van het derde woord met afstand $$n=3$$, enzoverder. Daarbij bestaan de woorden van het bericht uit de langst mogelijke opeenvolging van letters. Twee woorden worden dus altijd van elkaar gescheiden door één of meer karakters die geen letter zijn. Een karakter dat geen letter is, blijft bij het coderen gewoon staan. Een hoofdletter wordt gecodeerd als een paar hoofdletters en een kleine letter als een paar kleine letters. Zo wordt het bericht
Een, Twee, Drie, Vier, Vijf, Zes, Zeven, Acht, Negen, Tien, Elf, Twaalf, Dertien, Veertien & Vijftien!
bijvoorbeeld gecodeerd als
DFdfmo, RVuycgcg, AGouflbh, RZemainv, QAdneoak, TFykmy, SGxlocxlgu, SIukzplb, EWvnxpvnew, JDysuodx, TPawuq, HFkiomomzxtr, QQrreeggvvrraa, HJqsqsdffhuwqszb & GKtxuyqueitxptyc!
Daarbij wordt het woord Een met afstand $$n=1$$ gecodeerd als DFdfmo, het woord Twee met afstand $$n=2$$ als RVuycgcg, het woord Drie met afstand $$n=3$$ als AGouflbh, ..., en het woord Vijftien met afstand $$n=15$$ als GKtxuyqueitxptyc.
Schrijf een functie sprong waaraan twee argumenten moeten doorgegeven worden: i) een karakter $$\alpha$$ en ii) een getal $$n \in \mathbb{Z}$$ (int). Als $$\alpha$$ geen string (str) is die bestaat uit één letter, dan moet een AssertionError opgeworpen worden met boodschap ongeldige letter: $$\alpha$$. Anders moet de letter $$\alpha_n$$ (str) teruggegeven worden. Als $$\alpha$$ een hoofdletter is, dan moet de functie een hoofdletter teruggeven. Als $$\alpha$$ een kleine letter is, dan moet de functie een kleine letter teruggeven.
Schrijf een functie spiegelbeeld waaraan twee argumenten moeten doorgegeven worden: i) een karakter $$\alpha$$ en ii) een getal $$n \in \mathbb{N}$$ (int). Als $$\alpha$$ geen string (str) is die bestaat uit één letter, dan moet een AssertionError opgeworpen worden met boodschap ongeldige letter: $$\alpha$$. Anders moet het letterpaar (str) teruggegeven worden waardoor letter $$\alpha$$ vervangen wordt volgens de Narcissuscodering met afstand $$n$$.
Schrijf een functie fixatie waaraan twee argumenten moeten doorgegeven worden: i) een letterpaar $$p$$ en ii) een getal $$n \in \mathbb{N}$$ (int). De functie moet een AssertionError opwerpen met boodschap ongeldig paar: $$p$$ als het eerste argument $$p$$ geen string (str) is die bestaat uit twee hoofdletters of twee kleine letters, of als je vanaf de eerste letter van $$p$$ in wijzerzin niet in $$2n$$ stappen vooruit springt naar de tweede letter van $$p$$. Anders moet de functie de letter (str) teruggeven die gecodeerd wordt als letterpaar $$p$$ volgens de Narcissuscodering met afstand $$n$$.
Schrijf een functie codeer waaraan een klare tekst1 (str) moet doorgegeven worden. De functie moet de corresponderende cijfertekst2 (str) volgens de Narcissuscodering teruggeven.
Schrijf een functie decodeer waaraan een cijfertekst3 (str) moet doorgegeven worden die zou moeten gecodeerd zijn volgens de Narcissuscodering. De functie moet de corresponderende klare tekst4 (str) teruggeven. Als de gegeven cijfertekst geen resultaat kan zijn van een Narcissuscodering, dan moet de functie bij het eerste ongeldige paar $$p$$ een AssertionError opwerpen met boodschap ongeldig paar: $$p$$.
>>> sprong('V', 7)
'C'
>>> sprong('v', -7)
'o'
>>> sprong('!', 13)
Traceback (most recent call last):
AssertionError: ongeldige letter: !
>>> spiegelbeeld('V', 1)
'UW'
>>> spiegelbeeld('v', 7)
'oc'
>>> spiegelbeeld('!', 13)
Traceback (most recent call last):
AssertionError: ongeldige letter: !
>>> fixatie('UW', 1)
'V'
>>> fixatie('oc', 7)
'v'
>>> fixatie('cm', 4)
Traceback (most recent call last):
AssertionError: ongeldig paar: cm
>>> codeer('Een, Twee, Drie, Vier, Vijf, Zes, Zeven, Acht, Negen, Tien, Elf, Twaalf, Dertien, Veertien & Vijftien!')
'DFdfmo, RVuycgcg, AGouflbh, RZemainv, QAdneoak, TFykmy, SGxlocxlgu, SIukzplb, EWvnxpvnew, JDysuodx, TPawuq, HFkiomomzxtr, QQrreeggvvrraa, HJqsqsdffhuwqszb & GKtxuyqueitxptyc!'
>>> codeer('And Now for Something Completely Different')
'ZBmoce LPmquy cilrou OWksiqaipxdlemjrck XHjthrkugqzjoyzjgqtd XJcozlzlyklxykhtnz'
>>> decodeer('DFdfmo, RVuycgcg, AGouflbh, RZemainv, QAdneoak, TFykmy, SGxlocxlgu, SIukzplb, EWvnxpvnew, JDysuodx, TPawuq, HFkiomomzxtr, QQrreeggvvrraa, HJqsqsdffhuwqszb & GKtxuyqueitxptyc!')
'Een, Twee, Drie, Vier, Vijf, Zes, Zeven, Acht, Negen, Tien, Elf, Twaalf, Dertien, Veertien & Vijftien!'
>>> decodeer('ZBmoce LPmquy cilrou OWksiqaipxdlemjrcm XHjthrkugqzjoyzjgqtd XJcozlzlyklxykhtnz')
Traceback (most recent call last):
AssertionError: ongeldig paar: cm
Narkissos (Oudgrieks: Νάρκισσος) of Narcissus (Latijn) is een figuur uit de Griekse mythologie. Hij was een zoon van de riviergod Kephissos5 en de nimf Liriope. Het verhaal van Narcissus is vooral bekend van Ovidius6, die de Griekse mythe in Latijnse dichtvorm heeft overgeleverd (Metamorfosen 3.341-510). De versie van Ovidius vertelt het verhaal vanaf de metamorfose van de nimf Echo tot en met de metamorfose van Narcissus.
Narcissus was een jager uit Thespiae7 in Boeotië8 die bekend stond omwille zijn schoonheid, maar halsstarrig alle romantische avances bleef verwerpen. Uiteindelijk werd hij verliefd op zijn eigen spiegelbeeld in een plas water, waarnaar hij de rest van zijn leven bleef staren. Na zijn dood ontkiemde bij deze plaats aan het water een bloem die zijn naam droeg.
De mythe van Narcissus ligt aan de basis van de term narcisme9, die gebruikt wordt om iemand te benoemen die vervuld is van eigenliefde of een ziekelijke fixatie voor zichzelf vertoont (een narcist).