In maart 2013 kondigde kunsthandelaar Forrest Fenn uit New Mexico (VSA) 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.

Wheeler Peak in de Sangre de Cristo Mountains, de hoogste berg van de Amerikaanse staat New Mexico.

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 Chase1.

Opgave

We hebben ons door de schat van Fenn laten inspireren om zelf ook een schattenjacht op te zetten. Hiervoor hebben we een directory samengesteld met subdirectories en gewone bestanden. De bestanden bevatten aanwijzingen waarmee een zin kan samengesteld worden die de oplossing van het raadsel vormt. Elke regel van een bestand uit de gegeven directory bestaat uit de volgende drie velden, die telkens van elkaar gescheiden worden door één enkele spatie (de velden bevatten zelf geen spaties):

  1. een woord
  2. een relatieve padnaam (alle padnamen zijn relatief ten opzichte van de hoofddirectory waarin de schat verborgen zit)
  3. een positief natuurlijk getal

Gevraagd wordt om een bash shell script treasure te schrijven waaraan vier argumenten moeten doorgegeven worden: i) een stopwoord (een token dat het einde van de zoektocht aangeeft), ii) een padnaam van de directory waarin de schat moet gezocht worden, iii) een padnaam van het bestand waarin het eerste woord kan gevonden worden (deze padnaam is relatief ten opzicht van de directory die als tweede argument wordt opgegeven) en iv) een regelnummer waarop het eerste woord kan gevonden worden.

De laatste drie argumenten wijzen de regel in het bestand aan waarop het eerste woord kan gevonden worden. Bovendien bevat diezelfde regel ook een verwijzing naar de regel in het bestand waarop het volgende woord kan gevonden worden. Door deze reeks aanwijzigingen te volgen, kan het shell script een zin samenstellen. De woorden van deze zin moeten van elkaar gescheiden worden door één enkele spatie. De samengestelde zin moet door het shell script naar standaard uitvoer uitgeschreven worden. Het volgen van de aanwijzingen eindigt als het shell script een regel bereikt waarvan het woord gelijk is aan het stopwoord dat als eerste argument aan het shell script werd doorgegeven. Dit stopwoord maakt geen deel uit van de zin die moet uitgeschreven worden.

Voor deze opgave is het niet nodig dat het shell script foutafhandeling voorziet voor de argumenten die aan het shell script worden doorgegeven. Bovendien mag het shell script ervan uitgaan dat de directory waarin de zin moet teruggevonden worden goed opgebouwd werd, en dat er vanaf het gegeven startpunt steeds een reeks woorden kan gevonden worden die eindigt met het gegeven stopwoord.

Voorbeeld

Onderstaande voorbeeldsessie geeft aan hoe het shell script treasure moet kunnen gebruikt worden. Hierbij gaan we ervan uit dat de directory fenn2 waarin de schat moet gevonden worden zich in de huidige directory bevindt.

$ treasure END fenn HDHJ2 3
bronze silver gold

Onderstaand schema geeft het pad aan dat het shell script in dit geval moet volgen om de zin bestaande uit de woorden bronze silver gold op te bouwen.

Pad dat het shell script treasure moet volgen om de zin bestaande uit de woorden "bronze silver gold" op te bouwen.

Epiloog

Mocht je nog enige hoop koesteren: In 2020 werd de schat van Fenn door een anonieme schatzoeker gevonden in Wyoming3 (VSA). Later bleek het om voormalig journalist en geneeskundestudent Jack Stuef4 te gaan. In een poging om te honoreren wat volgens hem de wens van Fenn was na zijn dood in september 2020, heeft hij tot nu toe geweigerd om de locatie van de schat bekend te maken. In december 2022 werd de inhoud van de schatkist geveild5 voor een totaal bedrag van 1.3 miljoen Amerikaanse dollar.