In 1863  — temidden van de Amerikaanse Burgeroorlog — onderschepten soldaten uit de Noordelijke Staten (de Unie) een tas met correspondentie van rebellen uit de Zuidelijke Staten (de Confederatie), vlak voor die over het meer van Pontchartrain zou gesmokkeld worden. In één van de brieven pochte een zekere Anna over hoe ze een krant uit Boston om de tuin geleid had. Ze stuurde het volgende gedicht met als titel "The Gypsy's Wassail" naar de krant en beweerde dat het in Sanskriet geschreven was:

Dro lseta red efnoc Evarbruossel, Bdog!
Dra, Geruaeb, Dnaht, ims Nosnhojeel!
Eojn Osnhojd, Nahti, msn Oskcajp Leh,
Ho eixi dnis tifm eh Tevig, ot!

De krant publiceerde dit als een "mooi en patriottisch gedicht door onze getalenteerde inzender". Enkele dagen later doorzag een lezer de truc — het was gewoon Engels maar dan omgekeerd geschreven:

God bless our brave Confederates, Lord!
Lee, Johnson, Smith, and Beauregard!
Help Jackson, Smith, and Johnson Joe,
To give them fits in Dixie, oh!

Ze had de brief alleen maar ondertekend met "Anna", maar in dezelfde tas vonden ze een brief waarin haar zus aan haar man schreef "Anna schrijft je één van haar vermakelijke brieven" en daaronder haar handtekening en adres. Generaal Wickham Hoffman van de Noordelijke Staten stuurde haar een brief en schreef daarover in zijn memoires:

I told her that her letter had fallen into the hands of one of those ‘Yankee’ officers whom she saw fit to abuse, and who was so pleased with its wit that he should take great pleasure in forwarding it to its destination. That in return he had only to ask that when the author of ‘The Gypsy’s Wassail’ favored the expectant world with another poem, he might be honored with an early copy. Anna must have been rather surprised.

Opgave

Een zin wordt omgekeerd door alle letters in omgekeerde volgorde te zetten. Het oorspronkelijk gebruik van hoofdletters en kleine letters blijft evenwel behouden: als op een positie origineel een hoofdletter stond, dan moet de letter die daar bij het omkeren komt te staan omgezet worden naar een hoofdletter en analoog voor kleine letters. Alle karakters die geen letter zijn blijven bij het omkeren gewoon op hun plaats staan.

omkeren
Voorbeeld dat illustreert hoe de zin "God bless our brave Confederates, Lord!" omgekeerd wordt.

Hierboven tonen we hoe de eerste zin uit de oorspronkelijke tekst van het gedicht "The Gypsy's Wassail" omgekeerd wordt. Hierbij hebben we de posities met hoofdletters in het oranje aangeduid, de posities met kleine letters in het blauw en de posities waar geen letters staan in het groen. De dunne groene pijlen geven aan waar karakters die geen letter zijn blijven staan. De dikke blauwe pijlen geven aan dat bijvoorbeeld de eerste en de laatste letter van de zin bij het omkeren van plaats verwisselen. Het feit dat elke positie zijn kleur behoudt bij het omkeren, duidt erop dat de posities van hoofdletters en kleine letters behouden blijft.

Merk op dat de hele procedure omkeerbaar is: als we een omgekeerde zin opnieuw omkeren, dan krijgen we terug de oorspronkelijke zin. Gevraagd wordt:

Voorbeeld

In onderstaande voorbeeldsessie gaan we ervan uit dat het tekstbestand origineel.txt1 zich in de huidige directory bevindt.

>>> omkeren('God bless our brave Confederates, Lord!')
'Dro lseta red efnoc Evarbruossel, Bdog!'
>>> omkeren('Dro lseta red efnoc Evarbruossel, Bdog!')
'God bless our brave Confederates, Lord!'
>>> omkeren('Lee, Johnson, Smith, and Beauregard!')
'Dra, Geruaeb, Dnaht, ims Nosnhojeel!'
>>> omkeren('Help Jackson, Smith, and Johnson Joe,')
'Eojn Osnhojd, Nahti, msn Oskcajp Leh,'
>>> omkeren('To give them fits in Dixie, oh!')
'Ho eixi dnis tifm eh Tevig, ot!'

>>> codec('origineel.txt2')
Dro lseta red efnoc Evarbruossel, Bdog!
Dra, Geruaeb, Dnaht, ims Nosnhojeel!
Eojn Osnhojd, Nahti, msn Oskcajp Leh,
Ho eixi dnis tifm eh Tevig, ot!
>>> codec('origineel.txt3', 'gecodeerd.txt4')
>>> codec('gecodeerd.txt5')
God bless our brave Confederates, Lord!
Lee, Johnson, Smith, and Beauregard!
Help Jackson, Smith, and Johnson Joe,
To give them fits in Dixie, oh!
>>> codec('gecodeerd.txt6', 'gedecodeerd.txt7')

>>> gelijk('origineel.txt8', 'gecodeerd.txt9')
False
>>> gelijk('origineel.txt10', 'gedecodeerd.txt11')
True

Bronnen