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.

reclame
Fragment van een reclameslogan van Addison-Wesley op de achterflap van The American Statistician, jaargang 1972, volume 25, nummer 5. Met dank aan Marianne Borderé (faculteitsbibliotheek bio-ingenieurswetenschappen, UGent) voor het opduiken van de slogen uit de archieven.

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.

Invoer

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

Uitvoer

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.

slogan
De reclameslogan van Addison-Wesley kan ontcijferd worden als "say hello to a good buy". Start op positie -3 (of positie 20 als je telt vanaf links) en spring telkens 3 posities achteruit naar het volgende karakter. Tel verder vanaf rechts als je tegen de linkerkant van de cryptische boodschap aanloopt. De startpositie en de eerste stap van de ontcijfering hebben we in het geel aangeduid.

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.

Voorbeeld

Invoer:

y luaeb h o dtyo aoosgl
-3
-3

Uitvoer:

say hello to a good buy

Voorbeeld

Invoer:

say hello to a good buy
22
15

Uitvoer:

y luaeb h o dtyo aoosgl

Bronnen