Normaal gezien streven adverteerders er naar om hun boodschap zo klaar en duidelijk mogelijk over te brengen. We stellen in feite zelfs vast dat de meeste van die boodschappen vermoedelijk ontworpen zijn om te kunnen doordringen tot de lokale dorpsidioot.
In 1972 liet uitgeverij Addison-Wesley echter een advertentie plaatsen vanuit een tegenovergestelde invalshoek. Op de achterkant van het tijdschrift The American Statistician publiceerden ze reclame voor drie boeken, die begon met de volgende cryptische boodschap.
In het magazine Word Ways schreef David Silverman hierover:
Slaag je er in om de geheime boodschap te ontcijferen? Hoewel de slogan niet hetzelfde cachet heeft als — zeg maar — "stop een tijger in uw tank" (ESSO), heeft hij wel het voordeel dat hij universeel toepasbaar is. Hij kan net zo goed toegepast worden voor het verkopen van schoenen, boten of boenwas.
De eerste regel bevat een tekstfragment waarin een geheime boodschap verborgen zit, die je op dezelfde manier kan ontcijferen als de slogan uit de inleiding. Daarna volgen twee regels die elk een geheel getal bevatten: een startpositie $$p$$ in de slogan en een stapgrootte $$s$$, waarbij $$s \neq 0$$.
Een regel met daarop de ontcijferde boodschap. De boodschap kan je ontcijferen door te vertrekken van de aangegeven startpositie $$p$$ in de gegeven slogan, en telkens $$s$$ karakters vooruit (als $$s > 0$$) of achteruit (als $$s < 0$$) te springen totdat je alle karakters van de slogan hebt doorlopen. Daarbij worden de posities van de karakters geïndexeerd volgens de Python indexeringsregels voor strings (inclusief het gebruik van negatieve indices). Als je bij het vooruitspringen tegen de rechterkant van de slogan loopt, dan tel je gewoon verder vanaf de linkerkant van de slogan. Als je bij het achteruitspringen tegen de linkerkant van de slogan loopt, dan tel je gewoon verder vanaf de rechterkant van de slogan.
Hierboven zie je bijvoorbeeld hoe het ontcijferen werkt voor de slogan die verborgen zit in de cryptische boodschap die je kent uit de inleiding van deze opgave. We starten op positie -3 (of positie 20 als we indexeren van links naar rechts) en springen telkens drie posities achteruit naar het volgende karakter. Hierbij tellen we verder vanaf rechts als we tegen de rechterkant van de cryptische boodschap aanlopen. De startpositie en de eerste stap van de ontcijfering hebben we in het geel aangeduid.
Invoer:
y luaeb h o dtyo aoosgl
-3
-3
Uitvoer:
say hello to a good buy
Invoer:
say hello to a good buy
22
15
Uitvoer:
y luaeb h o dtyo aoosgl