PROG0120 - Reading a pitch
Ordinarily, advertisers strive to make their messages as clear as possible. In fact, most are designed to get through to the village idiot. In 1972, publisher Addison-Welsey placed an advertisement with a different twist. On the back of the magazine The American Statistician, they led off an ad for three textbooks with the following cryptic remark.
David Silverman wrote in an article for the magazine Word Ways:
Care to try and figure out the hidden message? Although the slogan doesn't have the pizzazz of — say — "Let ESSO put a tiger in your tank", it can equally well be applied to the sale of shoes, ships or sealing wax (or, for that matter, floor wax).
Input
There are three lines of input. The first line contains a text fragment that hides a secret message. The message can be deciphered in the same way as the pitch line from the Addison-Welsey advertisement mentioned in the introduction. This is followed by another two lines that each contain an integer: a starting position $p$ in the slogan and a step size $s$, where $s \neq 0$.
Output
A line containing the secret message. The message can be deciphered by stepping through the pitch line starting from position $p$, and skipping $s$ characters forward (if $s > 0$) or backward (if $s < 0$) at a time through the string. Positions of the characters are indexed according to the Python indexing rules for strings (including negative indices). Cycle back to the beginning if you hit the end of the pitch line when skipping forward. Cycle back to the end if you hit the beginning of the pitch line when skipping backward.
Below we show an example of how to decipher the hidden slogan from the cryptic remark in the Addison-Welsey advertisement mentioned in the introduction. We start at position -3 (or position 20 if we index left to right) and keep on skipping three positions backward through the characters of the string, cycling back to the end as often as necessary. The starting position and the first step of the deciphering process are marked in yellow.
Example
Input:
y luaeb h o dtyo aoosgl -3 -3
Output:
say hello to a good buy
Example
Input:
say hello to a good buy 22 15
Output:
y luaeb h o dtyo aoosgl
Resources
Normaalgezien streven adverteerders ernaar 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 door te kunnen dringen tot de lokale dorpsidioot.
In 1972 liet de uitgeverij Addison-Welsey 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 erin 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 invoer bestaat uit drie regels. 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 regel 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. Hierbij worden de posities van de karakters geïndexeerd volgens de Python indexeringsregels voor strings (inclusief het gebruik van negatieve indices). Indien je bij het vooruitspringen tegen de rechterkant van de slogan loopt, dan tel je gewoon verder vanaf de linkerkant van de slogan. Indien je bij het achteruitspringen tegen de linkerkant van de slogan loopt, dan tel je gewoon verder vanaf de rechterkant van de slogan.
Hieronder zie je bijvoorbeeld hoe de slogan kan ontcijfers worden die verborgen zit 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
Added by: | Peter Dawyndt |
Date: | 2011-08-06 |
Time limit: | 10s-30s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | PY_NBC |
Resource: | None |