Onderstaand tekstbestand bevat een boodschap die we gecodeerd hebben aan de hand van de K3-code of de driekleurencode.
~~n>868/Su79{3532w5=16dD$pK|67P44Q=,416Q]+c856yi8+pX96`72B6. tj~1_60Mr%PL}04Q45>[g=523*KW3534414/F047q_jA@l52v3s8goo5.\05 BWd<427D2\08U15x{}419F'?M835Lo2?mI487i=zD=y00G?2092Bw,<!&D`^ 1hF!!98!p
De K3-code maakt gebruik van drie soorten karakters die met drie verschillende kleuren aangeduid worden: leestekens (rood), letters (groen) en cijfers (blauw). Daarbij wordt geen onderscheid gemaakt tussen kleine letters en hoofdletters.
~~n>868/Su79{3532w5=16dD$pK|67P44Q=,416Q]+c856yi8+pX96`72B6. tj~1_60Mr%PL}04Q45>[g=523*KW3534414/F047q_jA@l52v3s8goo5.\05 BWd<427D2\08U15x{}419F'?M835Lo2?mI487i=zD=y00G?2092Bw,<!&D`^ 1hF!!98!p
Het aantal karakters op elke regel van het tekstbestand is een veelvoud van drie, waardoor de karakters/kleuren per drie kunnen groepeerd worden.
▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪
Met drie verschillende kleuren (voorgesteld door de letters R, G en B) kunnen in totaal 27 combinaties van drie kleuren gevormd worden. Het feit dat elke combinatie van drie opeenvolgende kleuren codeert voor één karakter van de oorspronkelijke boodschap vormt dus de sleutel van de K3-code.
BBB (▪▪▪) ⟶ O GBB (▪▪▪) ⟶ RBB (▪▪▪) ⟶ A BBG (▪▪▪) ⟶ F GBG (▪▪▪) ⟶ H RBG (▪▪▪) ⟶ G BBR (▪▪▪) ⟶ P GBR (▪▪▪) ⟶ M RBR (▪▪▪) ⟶ Z BGB (▪▪▪) ⟶ Y GGB (▪▪▪) ⟶ Q RGB (▪▪▪) ⟶ C BGG (▪▪▪) ⟶ I GGG (▪▪▪) ⟶ L RGG (▪▪▪) ⟶ K BGR (▪▪▪) ⟶ D GGR (▪▪▪) ⟶ E RGR (▪▪▪) ⟶ B BRB (▪▪▪) ⟶ R GRB (▪▪▪) ⟶ W RRB (▪▪▪) ⟶ J BRG (▪▪▪) ⟶ N GRG (▪▪▪) ⟶ U RRG (▪▪▪) ⟶ V BRR (▪▪▪) ⟶ X GRR (▪▪▪) ⟶ T RRR (▪▪▪) ⟶ S
Als we deze sleutel toepassen op de gecodeerde boodschap, dan krijgen we
▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ V A N A F R I K A T O T I N A M ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ E R I K A V A N O P D E H I M A ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ ▪▪▪ L A Y A T O T I N D E W O E S T ▪▪▪ ▪▪▪ ▪▪▪ I J N
waaruit we de oorspronkelijke boodschap kunnen uitlezen als
VAN AFRIKA TOT IN AMERIKA VAN OP DE HIMALAYA TOT IN DE WOESTIJN
De sleutel van een K3-code wordt opgeslaan in een tekstbestand dat 27 regels bevat. Daarbij bestaat elke regel uit een karakter, gevolgd door een komma (,) en een unieke combinatie van drie kleuren (voorgesteld door de letters R, G en B) waardoor het karakter gecodeerd wordt. Merk op dat het karakter zelf ook een komma mag zijn.
U,GRG D,BGR ,GBB O,BBB N,BRG … A,RBB E,GGR M,GBR
Gevraagd wordt:
Schrijf een functie lees_sleutel waaraan de locatie (str) van een tekstbestand met de sleutel van een K3-code moet doorgegeven worden. De functie moet een dictionary (dict) teruggeven, die elke combinatie van drie kleuren (str) afbeeldt op het karakter (str) dat erdoor gecodeerd wordt in de gegeven sleutel van de K3-code.
Schrijf een functie kleur waaraan een karakter (str) moet doorgegeven worden. De functie moet de kleur (str) teruggeven die de soort van het gegeven karakter aanduidt in de K3-code: R voor rood, G voor groen en B voor blauw.
Schrijf een functie decodeer waaraan twee argumenten moeten doorgegeven worden: i) de locatie (str) van een tekstbestand met een boodschap die gecodeerd werd aan de hand van een K3-code en ii) de sleutel van de K3-code, voorgesteld als een dictionary (dict) zoals die wordt teruggegeven door de functie lees_sleutel. De functie moet de oorspronkelijke boodschap (str) teruggeven.
In onderstaande voorbeeldsessie gaan we ervan uit dat de tekstbestanden sleutel.txt1 en boodschap.txt2 zich in de huidige directory bevinden.
>>> sleutel = lees_sleutel('sleutel.txt3')
>>> sleutel['RGB']
'C'
>>> sleutel['GBB']
' '
>>> sleutel['RRG']
'V'
>>> kleur('?')
'R'
>>> kleur('w')
'G'
>>> kleur('8')
'B'
>>> decodeer('boodschap.txt4', sleutel)
'VAN AFRIKA TOT IN AMERIKA VAN OP DE HIMALAYA TOT IN DE WOESTIJN'
De gecodeerde berichten die bij het testen van je ingediende oplossing gebruikt worden, komen allemaal uit de liedjesteksten van K35: een van oorsprong Belgische meidengroep met een Nederlandstalig poprepertoire dat voornamelijk gericht is op een jeugdig publiek. De naam van de groep verwijst naar de eerste letters van de voornamen van de oorspronkelijke bezetting: Karen Damen6, Kristel Verbeke7 en Kathleen Aerts8.