In 1885 publiceerde James B. Ward The Beale Papers, een korte tekst met drie gecodeerde boodschappen. Wie de codes kon kraken, zou de weg vinden naar een schat, begraven in Bedford County in Virginia. Volgens de tekst liet Beale zestig jaar eerder een doosje met de boodschappen achter bij een herbergier. Beale zelf verdween spoorloos. De herbergier gaf de gecodeerde boodschappen door aan een vriend. Die kon maar één van de puzzels oplossen, de puzzel die de belofte van de schat openbaarde. De gekraakte code bestond uit getallen die correspondeerden met de beginletters van woorden in de Amerikaanse Onafhankelijkheidsverklaring. De code vormde een reeks getallen. Zo refereerde 12 bijvoorbeeld naar de eerste letter van het twaalfde woord van de tekst van de Founding Fathers van de Verenigde Staten.
In 1980 gebruikte de bekende Amerikaanse codekraker Jim Gillogly een computer om een van de resterende codes te ontcijferen. Hij vond een aantal anomalieën, zoals lange reeksen karakters in alfabetische volgorde, en besloot daaruit dat de code een hoax moest zijn. Er volgenden nog vele pogingen om de schat te vinden — zelfs Hollywood liet zich met de film National Treasure door het verhaal inspireren — maar Gillogly zag de voorbije dertig jaar niets dat hem overtuigde om zijn mening te herzien. "Ik heb er alle vertrouwen in dat het om een grap gaat", vertelt hij.
Het is de bedoeling dat je een geheime code kraakt die werd opgeslagen in een tekstbestand. De geheime code bestaat uit een reeks natuurlijke getallen die van elkaar worden gescheiden door komma's, eventueel voorafgegaan en/of gevolgd door spaties. Deze reeks getallen kan in het bestand uitgeschreven zijn over verschillende regels, waarbij nooit gesplitst werd tussen cijfers van eenzelfde getal.
39, 120, 11, 73, 22, 63, 73, 139, 53, 51, 69, 93, 112, 31, 63, 22, 42, 22, 63,
131, 112, 73, 22, 63, 8, 44, 60, 3, 151, 53, 117, 22, 112, 126, 22, 120, 83, 21,
43, 112, 73, 23, 22, 35, 56, 63
De sleutel tot het kraken van de code wordt gevormd door de woorden van de tekst die zit opgeslagen in een ander tekstbestand. Hierbij definiëren we een woord als de langst mogelijke opeenvolging van letters. Elk getal uit de geheime code staat dan voor de eerste letter van het woord op de positie die wordt aangegeven door het getal. Hierbij staat het eerste woord op positie 1, het tweede woord op positie 2, enzoverder. Gevraagd wordt:
Schrijf een functie getallen waaraan de locatie moet doorgegeven worden van een tekstbestand dat een geheime code bevat. De functie moet een lijst met de getallen uit het bestand teruggeven, waarbij de getallen voorgesteld worden als integers.
Schrijf een functie woorden waaraan de locatie van een tekstbestand moet doorgegeven worden. De functie moet een lijst met de opeenvolgende woorden uit het bestand teruggeven, waarbij alle woorden werden omgezet naar kleine letters.
Schrijf een functie decodeer waaraan de locaties van twee tekstbestanden moeten doorgegeven worden: een bestand met een geheime code en een bestand met een leesbare tekst waarvan de woorden de sleutel vormen tot het kraken van de geheime code. De functie moet een string teruggeven met de gekraakte code die ontstaat als je elk getal uit de geheime code vervangt door de eerste letter van het woord op de overeenkomstige positie in de leesbare tekst. Alle letters van de gekraakte code die door de functie wordt teruggegeven, moeten omgezet worden naar kleine letters.
In onderstaande voorbeeldsessie gaan we ervan uit dat de tekstbestanden geheim.txt1 en gedicht.txt2 zich in de huidige directory bevinden.
>>> getallen('geheim.txt') [39, 120, 11, 73, 22, 63, 73, 139, 53, 51, 69, 93, 112, 31, 63, 22, 42, 22, 63, 131, 112, 73, 22, 63, 8, 44, 60, 3, 151, 53, 117, 22, 112, 126, 22, 120, 83, 21, 43, 112, 73, 23, 22, 35, 56, 63] >>> woorden('gedicht.txt') ['as', 'i', 'have', 'gone', 'alone', 'in', 'there', 'and', 'with', 'my', 'treasures', 'bold', 'i', 'can', 'keep', 'my', 'secret', 'where', 'and', 'hint', 'of', 'riches', 'new', 'and', 'old', 'begin', 'it', 'where', 'warm', 'waters', 'halt', 'and', 'take', 'it', 'in', 'the', 'canyon', 'down', 'not', 'far', 'but', 'too', 'far', 'to', 'walk', 'put', 'in', 'below', 'the', 'home', 'of', 'brown', 'from', 'there', 'it', 's', 'no', 'place', 'for', 'the', 'meek', 'the', 'end', 'is', 'ever', 'drawing', 'nigh', 'there', 'll', 'be', 'no', 'paddle', 'up', 'your', 'creek', 'just', 'heavy', 'loads', 'and', 'water', 'high', 'if', 'you', 've', 'been', 'wise', 'and', 'found', 'the', 'blaze', 'look', 'quickly', 'down', 'your', 'quest', 'to', 'cease', 'but', 'tarry', 'scant', 'with', 'marvel', 'gaze', 'just', 'take', 'the', 'chest', 'and', 'go', 'in', 'peace', 'so', 'why', 'is', 'it', 'that', 'i', 'must', 'go', 'and', 'leave', 'my', 'trove', 'for', 'all', 'to', 'seek', 'the', 'answers', 'i', 'already', 'know', 'i', 've', 'done', 'it', 'tired', 'and', 'now', 'i', 'm', 'weak', 'so', 'hear', 'me', 'all', 'and', 'listen', 'good', 'your', 'effort', 'will', 'be', 'worth', 'the', 'cold', 'if', 'you', 'are', 'brave', 'and', 'in', 'the', 'wood', 'i', 'give', 'you', 'title', 'to', 'the', 'gold'] >>> decodeer('geheim.txt', 'gedicht.txt') 'natureunfoldshertreasureatthefirstrayofsunrise'
In maart 2013 kondigde kunsthandelaar Forrest Fenn uit New Mexico aan dat hij een bronzen schatkist had verborgen in de Rocky Mountains, ten noorden van Santa Fe. De schatkist zou gouden munten, kunstvoorwerpen en sieraden bevatten ter waarde van meer dan één miljoen dollar.
Fenn beweerde dat hij op het idee was gekomen toen hij in 1988 gediagnosticeerd was met kanker, en zag het plan om een schat te begraven als een soort erfenis. Hij werd uiteindelijk genezen verklaard van de kanker, maar besloot om de schatkist toch te begraven. In een zelf-gepubliceerde memoire schreef hij het volgende gedicht, en gaf aan dat het negen aanwijzingen bevat om de schat te kunnen vinden:
As I have gone alone in there
And with my treasures bold,
I can keep my secret where,
And hint of riches new and old.Begin it where warm waters halt
And take it in the canyon down,
Not far, but too far to walk.
Put in below the home of Brown.From there it's no place for the meek,
The end is ever drawing nigh;
There'll be no paddle up your creek,
Just heavy loads and water high.If you've been wise and found the blaze,
Look quickly down, your quest to cease,
But tarry scant with marvel gaze,
Just take the chest and go in peace.So why is it that I must go
And leave my trove for all to seek?
The answers I already know,
I've done it tired and now I'm weak.So hear me all and listen good,
Your effort will be worth the cold.
If you are brave and in the wood
I give you title to the gold.
Sindsdien volgt Fenn de zoektocht naar de schat op de voet, en publiceert hij af en toe ook bijkomende aanwijzigen:
No need to dig up the old outhouses,
the treasure is not associated with any structure.
Een aantal personen beweren dat ze de schatkist hebben gevonden, maar tot
nu toe heeft niemand daar het bewijs van geleverd. Fenn geeft aan dat voor
zover hij weet de schat nog niet ontdekt werd. Heel wat bijkomende
informatie en discussies over de zoektocht naar de schat kan je vinden op
de website The Thrill
of the Chase3.