De tikcode is een heel eenvoudige manier om tekstberichten letter per letter te coderen. De naam verwijst naar het feit dat berichten verzonden worden als een reeks tikkende geluiden. Gevangenen gebruiken de code vaak om met elkaar te communiceren, meestal door te tikken op de metalen staven, pijpen of wanden in hun cel.
De code maakt gebruik van een vierkant $$5 \times 5$$ rooster waarin alle letters in alfabetische volgorde uitgeschreven worden van links naar rechts, en van boven naar onder. Dit met uitzondering van de letter K, die gelijkgesteld wordt aan de letter C.
1 | 2 | 3 | 4 | 5 | |
---|---|---|---|---|---|
1 | A | B | C/K | D | E |
2 | F | G | H | I | J |
3 | L | M | N | O | P |
4 | Q | R | S | T | U |
5 | V | W | X | Y | Z |
De luisteraar moet enkel letten op de timing van het tikken om letters te kunnen onderscheiden. Elke letter wordt immers gecommuniceerd aan de hand van twee getallen:
het eerste getal duidt de rij aan waarop de letter voorkomt in het rooster (horizontaal)
het tweede getal duidt de kolom aan waarop de letter voorkomt in het rooster (verticaal)
Om bijvoorbeeld de letter B te communiceren, moet men één keer tikken, dan kort pauzeren, en dan twee keer tikken. Om het woord VICTOR te communiceren, moet de volgende code gebruikt worden (de pauze tussen elk getal van een paar is doorgaans ook korter dan de pauze tussen letters):
V | I | C | T | O | R |
---|---|---|---|---|---|
5, 1 | 2, 4 | 1, 3 | 4, 4 | 3, 4 | 4, 2 |
..... . | .. .... | . ... | .... .... | ... .... | .... .. |
Omwille van de moeilijkheid en de tijd die nodig is om één enkele letter te communiceren, hebben gevangenen vaak afkortingen en acroniemen bedacht voor veel voorkomende termen of zinnen, zoals GN voor good night of GBU voor god bless you.
Ter vergelijking: morsecode is veel moeilijker te communiceren door te tikken of te kloppen, omdat het daarbij nodig is om te tikken met een duidelijk en nauwkeurig ritme of om twee verschillende geluiden te produceren. Morsecode duurt ook langer om te leren. Om het vierkant rooster van de tikcode te leren, moet je gewoon het alfabet kennen en de korte reeks AFLQV (de beginletter van elke rij).
De communicatie via tikcode wordt voorgesteld als een string (str) waarin een tik wordt voorgesteld door een punt (.) en de pauze tussen twee reeksen tikken (zowel de pauze tussen de twee getallen die een letter voorstellen als de pauze tussen twee letters) als een spatie. Gevraagd wordt:
Schrijf een functie codeer_letter waaraan een letter (str) moet doorgegeven worden. De functie moet een tuple teruggeven met het rijnummer (int) en het kolomnummer (int) waarop de gegeven letter voorkomt in het vierkant rooster van de tikcode. Daarbij mag de functie geen onderscheid maken tussen hoofdletters en kleine letters.
Schrijf een functie decodeer_letter waaraan twee getallen (int) moeten doorgegeven worden, die het rij- en kolomnummer van cel in het vierkant rooster van de tikcode aanduiden. De functie moet de hoofdletter teruggeven uit de aangegeven cel in het rooster. Hierbij nemen we aan dat de cel op rij 1 en kolom 3 in het rooster de letter C bevat.
Schrijf een functie codeer waaraan een woord (str) moet doorgegeven worden dat enkel bestaat uit letters. De functie moet teruggeven hoe dit woord gecommuniceerd wordt in tikcode (str). Daarbij mag de functie geen onderscheid maken tussen hoofdletters en kleine letters.
Schrijf een functie decodeer waaraan de communicatie van een woord in tikcode (str) moet doorgegeven worden. De functie moet het gecommuniceerde woord teruggeven (in hoofdletters).
>>> codeer_letter('V')
(5, 1)
>>> codeer_letter('i')
(2, 4)
>>> codeer('VICTOR')
'..... . .. .... . ... .... .... ... .... .... ..'
>>> codeer('Charlie')
'. ... .. ... . . .... .. ... . .. .... . .....'
>>> decodeer_letter(5, 1)
'V'
>>> decodeer_letter(2, 4)
'I'
>>> decodeer('..... . .. .... . ... .... .... ... .... .... ..')
'VICTOR'
>>> decodeer('. ... .. ... . . .... .. ... . .. .... . .....')
'CHARLIE'
Het bekendste voorbeeld van het gebruik van tikcode is onder Amerikaanse krijgsgevangenen tijdens de Vietnamoorlog. De code werd in juni 1965 geïntroduceerd door vier krijgsgevangenen in de Hỏa Lò1 gevangenis (beter bekend onder de bijnaam Hanoi Hilton): kapitein Carlyle "Smitty" Harris, luitenant Phillip Butler, luitenant Robert Peel en luitenant-commandant Robert Shumaker. Harris had ooit gehoord dat de tikcode gebruikt werd onder gevangenen in de Tweede Wereldoorlog en herinnerde zich een instructeur van de Amerikaanse luchtmacht die had uitgelegd hoe de code werkte.
In Vietnam werd de tikcode een zeer populaire manier waarmee geïsoleerde gevangen met elkaar konden communiceren. Krijgsgevangenen gebruikten de code om met elkaar te communiceren tussen cellen zonder dat de bewakers het konden oppikken. Ze gebruikten het om zowat alles met elkaar uit te wisselen, van vragen waarmee ze bestookt waren tijdens ondervragingen (zodat iedereen op een consistente manier een misleidend verhaal kon ophangen), tot wie er gewond was en anderen nodig had om magere voedselrantsoenen te doneren. De code was makkelijk om te leren en nieuw binnengekomen gevangenen konden ze binnen de paar dagen al vlot gebruiken. Ze werd zelfs gebruikt wanneer gevangenen naast elkaar zaten maar niet met elkaar mochten praten, door op de dij van een buur te tikken. Door tikcode te gebruiken om het isolement te doorbreken, konden gevangenen een hiërarchie aanhouden en het moreel handhaven.
In 1965 werd admiraal Jeremiah Denton — piloot bij de US Navy — door de Noord-Vietnamezen gevangen genomen en gedwongen om deel te nemen aan een propaganda-interview dat in de Verenigde Staten zou worden uitgezonden. Hij deed alsof hij verblind werd door de televisielichten en knipperde met zijn ogen het woord "T-O-R-T-U-R-E" in morsecode — waardoor de Amerikaanse inlichtingendiensten voor het vernamen dat Amerikaanse gevangenen gemarteld werden.
In zijn Investigator's Guide to Steganography2 (2003) merkt Gregory Kipper op dat gevangen soldaten soms handgebaren gebruikten om berichten over te brengen tijdens foto-opnames:
vaak werden deze gebaren weggemoffeld door de media