« The long tail of programming languages | Main | En annoterad s.k. vits »

maj 01, 2005

Aprilpyssel - lösning, villospår och ledtrådar

Inledning
I Aprilpyssel frågades det var detta var och varför. "Detta" börjar så här för enkel referens (men utan färger):

skkhkahaaahanhakahakk rank9nhakn fhha7knaknk uhaakhkhnhakhnkknann uhhhk1nnnnhh8nnnajanh1annkkha1yaknakhanknk th7nh9hhnh9aahhkhann haaknkkqknkkkahhhkahha
nxaak5nknhhha1anhkh5hk7hwahn3hna vnkkkannn1hnhsnahhhjnahkahak snkannanaunnh bhnkkk paanh2knk0a7hhahkk0hanhhkn6hhha3hk4ht9anhakhkk dhnknanhan saahkakaghkaanhaahna jkkhnhkkkkanhnu7ah9hnhhhhknk0nnhahkahkaxh9 khhna1kaahhakaqhn6khhh nkankkanaahnknan jw0omkaahkanan bhkhjkhrhaa0ahhhkahnnk7nk
rh1ahnf shnhk

April har nu gått över till maj och aprilpysslet ska nu läggas upp i fullt solljus.


Svaret
Svaret är att det - naturligtvis - är en krypterad text. Dess klartext och tillika kodningens princip är:

this puzzle is solved by counting the number of letters - disregarding numbers - and replace the count with letters: 2=a, 3=b etc.


Vinnare
Det var en som kom på vad det stod. Och det är min två gånger före detta kollega Markus Borbely. Stort grattis Markus, jag bjuder dig på en öl eller glass nästa gång vi ses.

Det mest fantastiska i detta är nog att han använt Excel och Word för att lösa problemet (även om Excel enligt uppgift lurade honom några gånger). Det är jag riktigt imponerad av och gör att jag måste kolla in Excel och dess kloner lite mer. Själv skulle jag använt något helt annat verktyg för detta. Men jag borde inte vara förvånad: Han löste "googleproblemet" galant via Excel.

Hakke (tidigare här) meddelade att han hittat grundprincipen (invariansen) i att långa grundord gav längre kodtexter via detta program, men nådde inte riktigt längre fram. Markus hade redan kommit in med lösningen när Hakke skrev sin glada kommentar, men jag kommer i alla fall att bjuda Hakke på en öl/glass när vi träffas IRL (i alla fall första gången vi träffas IRL; jag hoppas att det blir många gånger).


Avkodningen
Avkodningen görs genom följande:

* ta bort alla siffror från texten

* räkna antalet tecken i respektive ord

* avkodar längden till en bokstav (se den fullständiga listan nedan)

Den något arbiträra kodningen (speciellt placeringen av siffrorna) är enligt följande lista där den n:te positionen i motsvarar en längd på n+1 tecken (dvs "a"=2, "b"=3 osv). <SPACE> betecknar mellanslagets position.

abcdefghijklmnopqrstuvwxyzåäéöàü.!,=<SPACE>0123456789:-{}/\$_;+()


Villospår
Det som tog längst tid att skapa och som var roligast var villospåren. Här beskrivs det som inte var relevanta utan fanns endast med för att göra det lite svårare.

* färgen på bokstäverna (dess HTML-kodning) var helt slumpade.

* radbrytningarna spelar ingen roll; de slumpades med en 19-procentig sannolikhet efter en sträng.

* bokstäverna som användes spelar ingen roll. De olika bokstäverna slumpades från en tabell där bokstäverna "h", "a", "k", samt "n" hade 100 gånger större chans att väljas än de övriga för att antyda att det var något med bokstäverna i "hakank" (som i alla fall i detta pyssel är ett villospår).

* första bokstaven i ordet har en annan fördelning än resten av ordet: alla bokstäver i intervallet a-z har samma sannolikhet att väljas som första bokstav. Detta gjordes för att antyda någon form av kodning där förstabokstaven skulle vara någon form av kod för resten av ordet. (Jämför med kodningen där första tecknet i en sträng anger dess längd.)

* siffrorna var helt redundanta, och var troligen det som förvillade mest eftersom de gjorde att längden på strängarna förändras för varje gång. En siffra lades till i strängen med 9% sannolikhet efter det att första tecknet valts.


Ledtrådarna
Några kommentarer om ledtrådarna som gavs fortlöpande i Aprilpyssel.

Ledtråd 4:
Dikten skulle antyda att det fanns något slumpmässigt men ändå beständigt i skapandet av texten. Markus verkade också haft nytta av denna antydan.

Finns det något som är beständigt?
Något som alltid ändras?
Är det det beständiga som är relevant eller
det som alltid förändras?
Är det hela handen som pekar,
eller pekfingret som gör själva peket och de
andra fingrarna håller endast med
genom sina ekon av pekfingrets monolog?

Den sista delen med "peket" var ett villospår för att antyda t.ex. en "förstabokstavskodning".

Ledtråd 5 och 6:
Programmet som avsågs i dessa ledtrådar var 5f.cgi och lades ut redan då (och länkades till fullt ut flera veckor senare). 5f var beteckningen på den skolklass när jag gick i femte klass.

Ledtråd 7
Denna ledtråd förvillade kanske mer än hjälpte. Det skulle dock antyda att det var något med längden. För den intresserade är klartexten följande Perl-snutt som är en del i den kod som räknar ut en klartext.

s/\d+//g;my$len=length($_)-1;my$c=$num_letter{$len};

Här med programkoden radbruten och med kommentarer (efter #-tecknet):


s/\d+//g; # ta bort siffrorna i texten
my $len = length($_)-1; # räkna ut längden av strängen, minska med 1
my $c = $num_letter{$len}; # slå upp tecknet i en hash-tabell


Originalidé
Just det, min första tanke var att aprilpysslet skulle vara detta men det verkar lite väl enkelt för att räcka en hel månad.


Slutord
Ja, det var väl det. Återigen ett stort grattis till Markus!

Posted by hakank at maj 1, 2005 12:04 EM Posted to Diverse

Comments

Ja, det var man inte i närheten av att lösa. Eller försöka orka lösa.
Eller ens försöka hitta ork att försöka orka lösa.
Shit.. Kom jag sist?

Posted by: Mats Andersson at maj 1, 2005 02:44 EM

Mats: Om jag räknar rätt så här i hastigheten så kom du på delad tredje plats.

Posted by: hakank [TypeKey Profile Page] at maj 1, 2005 02:56 EM

Wow, var det så enkelt! ;)

Jag är impad över din arbetsinsats med villospår. Har aldrig hållit på med krypto själv men jag anar att ett gott arbete med villospår kan vara väl så viktigt som ett bra krypto. Jag ska ärligt säga att jag inte har hunnit lägga särskilt mycket tid på att leta efter lösningen, men de minuter jag lagt har helt gått i fel riktning tack vare dina listigheter.

Men det kompenseras mer än väl av en öl vid lämpligt tillfälle!

Posted by: Håkan (hakke) at maj 1, 2005 11:50 EM

Jag har inte lagt ansträngningar på att lösa detta och jag är glad för det eftersom villospåren antroligen skulle lett mig allt längre och längre bort från lösningen. En oreflekterad reflexion är att det vore till stor hjälp att vara bekant med sinnelaget hos skaparen av de egenartade "ledtrådarna"
:-)
Tack för mycket rolig läsning ickedestomindre!

Posted by: Henrik Sundström at maj 2, 2005 10:21 FM

Hakke och Henrik: Tack för era snälla ord.

Hakke: Ja, det var så enkelt. :) Det lämpliga tillfället kanske är närmre än vi först trodde...

Det är egentligen inget bra krypto alls eftersom nu - när hemligheten med det är avslöjad - så är det enkelt att avkoda. För riktiga krypton krävs det att fast man vet principen ska det vara rackarns svårt att lista ut vad det står, t.ex. genom att matematiska tekniker såsom RSA-metoden.

(För övrigt är "rackarns svårt" inte en i kryptokretsar vedertagen beskrivning.)


Henrik: Din oreflekterade reflexion var den bästa omskrivningen jag någonsin läst för "du är inte riktigt klok, va?" :-)

Alla (eller nästan alla) ledtrådar till detta sinnelag finns på bloggen eller på den övriga sajten (http://www.hakank.org/ , alltså).

Möjligen kommer det en mer djuplodande beskrivning av sinnelaget inom den närmsta framtiden, där framtiden - som alltid - kan räknas i såväl timmar, dagar som i sömnlösa nätter då man inte har ätit en franskbrödbulle på kvällen.

Posted by: hakank [TypeKey Profile Page] at maj 2, 2005 10:59 FM

*S* :-) Nej, det var inte så jag menade, utan mer i riktning mot: "Undertecknad är för korkad för att klara av'et!"
För övrigt föredrar jag dina orientaliskt inspirerade talesätt emedan jag inte upplever att de utmanar mig att formulera lösningar eller svar.

Posted by: Henrik Sundström at maj 3, 2005 02:53 EM

Henrik: Jag tror inte att jag vill hålla med dig i din tolkning. :-)

I samband med din andra kommentar: Jag upptäckte häromdagen att vissa saker har legat tyst väldigt länge i mitt skrivande, så länge att det inte tagits upp på bloggen (men oförhappandes bubblat upp mellan raderna från tid till annan). Det kanske inte är "orientaliskt inspirerande talesätt", men om man lutar på skärmen tillräckligt mycket och kisar med ögonen skulle man kunna tolka dem som sådana. Kanske, jag skriver kanske, kommer detta att tas upp igen. Sa jag "kanske"?

/hemlig hakank

Posted by: Håkan Kjellerstrand at maj 3, 2005 06:28 EM