Är frekvensanalys svaret på livets gåta?

En bekant delade följande utmaning http://www.infomaker.se/utmaningen/ från hans företag på Facebook idag och självklart fastnade jag.

Screen Shot 2013-12-28 at 16.54.40
Utmaningen är till för att locka utvecklare och genom upplägget sållar man bort en del redan i första steget. Smart och kul grej som vi sett en del andra bolag göra tidigare (se t.ex. hur jag knäckte VG’s gåta för 2 år sedan – http://davidsson.co/heisann-du-har-du-lyst-til-a-jobbe-i-vg-multimedia/).

Utmaningen går ut på att man skall hitta en mening, ett ord eller tal och ser ut på följande sätt:

Screen Shot 2013-12-28 at 16.41.02Inga fler ledtrådar. I vanlig ordning började jag leta i den råa header informationen på webbsidan. Ett ställe man kan gömma information och ett ställe bara en utvecklare tittar. Men där hittade jag inget så fick börja se på detta med X.

X delen ser ut som en regular expression med en funktion i slutet (JS). Prövade köra den genom ett par olika regex motorer med rot_X värdena utan att få ut något. Detta gav inget, kanske något i regex som är fel men jag är allt för dålig på det så gav upp.

Hakade upp mig på detta med rot_X. Varför rot_X när funktionen .test ville ha bara X? Står rot för rotation, dvs. loppa värdena på något sätt, det är ju uppenbarligen en array. Kanske rot står för just rot. Men det ger reella tal som inte går att konvertera till ascii tecken utan avrundning.  Dead end för min del.

Var nära att ge upp. Tittade igenom talraden igen och gjorde en enkel frekvensanalys. Ett uppenbart tal som stack ut var 43. Min tanke var att då 43 kom med jämna mellanrum så tyder det på att det inte är en väldigt avancerad nyckel. I de flesta fall brukar man börja med att testa om det vanligaste tecknet är E. Detta av den enkla anledningen att E är den vanligaste bokstaven i många västerländsk språk. Men det gav inget uppenbart. Men tittar man på talserien igen och ersätter 43 med mellanslag (dvs. ett tomt tecken) så kan man kanske se att serien ser ut som en mening.

Min son och jag talade om caesarchiffer för ett par dagar sedan och tänkte jag kunde testa att använda tekniken på texten. I Ascii tabellen ligger mellanslag 11 tecken från 43. Om jag då använder rullning av samtliga tecken med elva steg och konverterar varje heltal i serien till dess Ascii värde får jag följande text:

what is the answer to life the universe and everything

Detta ser onekligen ut att hänga samman. Googlar man meningen får man talet 42. Förstår ni inte den referensen har ni missat en av de galnaste och roligaste böckerna jag läst.

Självklart är detta svaret. Men jag är inte helt nöjd med min lösning då jag gick rätt på talserien och använde mig inte av regex delen. Vad missar jag där?

1 comment
  1. Intressant läsning och lösning! Men hade nog underlättat en del för dig om du från början fokuserat på regex-delen, som du själv säger i slutet. Regex-delen matchar endast ett tal (så som jag kom fram till) vilket blir 1011, binärt för talet 11, som du sedan använder som rotationen.

Comments are closed.