Po drátě 3: Řešení úlohy č. 6

Poměrně rychle si lze všimnout podivného symbolu 5g na třetím řádku. Co má co v hexadecimáním výpisu dělat "g"? Vzniká tedy podezření, že zápis nebude šestnáctkový. Spočítáme-li si počet symbolů na řádku a porovnáme ho s ofsety nalevo, podezření se nám potvrzuje: na každém řádku je 24 symbolů, ale ofsety nejsou 0, 18, 30, 48 (jak by byly šestnáctkově), ale 0, 17, 2e, 44. Ve které soustavě je 24 zapsáno jako "17", 48 jako "2e" a 72 jako "44"? V sedmnáctkové. Což vysvětluje i ono "g" na třetím řádku.

Po překódování do nějaké rozumnější soustavy a převodu na ASCII znaky dostáváme text:

Ano, kazdy znak tady pritomny byl zapsan s pouzitim sedmnactky jako zakladu. Kod pro dalsi ulohu zni "cislicko". Uzij si ji, a taky dalsi ulohy po ni.

Komentář

Aby bylo v celém textu skutečně jen jedno g, bylo potřeba se vyhnout znakům, které v sedmnáctkovém zápise g obsahují. Bohužel mezi takové znaky patří "e" a "v". Zkusili jste si už napsat nějaký smysluplný český text bez "e" a "v"? Pokud vám někdo bude tvrdit, že existuje nějaké české slovo, které neobsahuje ani jedno z nich, nevěřte mu. Každé obsahuje aspoň jedno. Fakt. Většina dokonce obě.

Na této úloze byla překvapivě vysoká zásekovost. Nepovažovali jsme ji za úplně lehkou, ale ani za kdovíjak obtížnou, ono g bilo do očí docela dost. Navíc testeři si s ní poradili hravě. Holt máme na ty šestky smůlu - viz Niel Ambrož z předchozího Po drátě.

Nakonec jsme však za ni byli rádi - ukázala se jako dobrý filtr, aby Po drátě 3 nedokončil úplně každý.

Úlohu vymyslel Michal Marek, dopilována byla na jedné z orgovských schůzek. Implementoval ji Jirka Benc.

Re: Po drátě 3: Řešení úlohy č. 6 Michal Kubeček (3. 12. 2008 - 20:31) Sbalit(2)
Kdo přehlédl "5g" (jako já), mohl si všimnout opakovaného výskytu "1f" a kdo si nevšiml ani toho (jako já), pořád měl ještě šanci poznat to podle těch adres.
Re: Po drátě 3: Řešení úlohy č. 6 Bilbo (3. 12. 2008 - 20:47) Sbalit(1)
Kdyz jsem videl casty vyskyt "1f", tak mne napadlo ze to bude mezera a nejspis nejaka cezarova sifra nebo substitucni sifra ... nakonec kdyz se ty kody vzaly jako hexa (misto "5g" jsem tam dal "60") a pricetlo se sest ke kazdemu znaku, tak vetsina toho textu vylezla - zbyle znaky jsem pak uz douhodnul :)
Re: Po drátě 3: Řešení úlohy č. 6 xmoris (3. 12. 2008 - 21:04) Sbalit(3)
No tak "g" som prehliadol a hoci offsety nie - nepomohlo. Prekladal som zo sestnactkovej do ascii znakov a posuval cely text o znaky dopredu a stale nic. Nakoniec som si vsimol "pritomn" v jednom posune a nasledne i "uloh" a "eblsi" z coho sa po istom case dal vydolovat zvysok :-). Tato uloha ma stala najviac casu ...
Re: Po drátě 3: Řešení úlohy č. 6 Michal Kubeček (3. 12. 2008 - 21:18) Sbalit(2)
Původně jsem si dokonce (pod dojmem mailu s další úlohou) myslel, že to
"5g" autorům uteklo omylem a říkal jsem si, jaká je škoda, že tu úlohu
tak zjednodušili tím, že buď nenapsali 17 číslicemi nebo nepoužili místo
sedmnáctkové soustavy patnáctkovou... :-)

Re: Po drátě 3: Řešení úlohy č. 6 Michal Marek (5. 12. 2008 - 10:56) Sbalit(1)
Původní plán právě byl použít patnáctkovou soustavu (a zakódovat něco vetšího, aby si člověk všimnul, že je tam málo F). Pak se ale rozhodlo, že se udělá sedmnáctkový dump s jedním G, aby to bylo jednodušší. A dobře tak, protože i na tomhle dost lidí skončilo.
Řešení úlohy č. 6 shichman (3. 12. 2008 - 21:23) Sbalit(4)
Moc pěkná úložka... Při prvním pohledu jsem se jal zkoumat "man 1 od" a "man 1 hexdump", jak provést reverzi. Teprve poté, co testy zhavarovaly na znaku "g", jsem konečně použil hlavu a úkol louskl onelinerem:
awk 'BEGIN { RS="[ \n]"; FS = "" }; { printf "%c", (($1 * 17) + index("123456789abcdefg", $2)) }'
Re: Řešení úlohy č. 6 Michal Kubeček (3. 12. 2008 - 21:26) Sbalit(2)
Já měl zase radost, že konečně jednou k něčemu využiju ten třetí
parametr strtoul() :-)

Re: Řešení úlohy č. 6 shichman (3. 12. 2008 - 23:52) Sbalit(1)
Můj comming out u úlohy č. 12 vysvětluje, proč jsem tuto funkci použít nemohl :).
Re: Řešení úlohy č. 6 Michal Marek (5. 12. 2008 - 10:59) Sbalit(1)
> printf "%c", (($1 * 17) ...

To se ti to dekódovalo, když to byly všechno ASCII znaky ;-).
Re: Po drátě 3: Řešení úlohy č. 6 d.petr (4. 12. 2008 - 9:07) Sbalit(1)
Tak já jsem si 5g všimnul hned při prvním prohlédnutí a řekl jsem si, "co to je za blbost, to by snad musela být 17ková nebo ještě vyšší soustava, nebo co" a dál jsem se tomu nevěnoval. Počítadlo jsem samozřejmě taky viděl, že nesedí, tak jsem uvažoval různé paritní bity, které asi nepočítali, apod. Ovšem to 5g - kvůli němu jsem mnohokrát zavrhnul, že se jedná o výpis (hexa)kódu, ale zkoušel jsem to považovat jen za klamavě opticky rozdělený souvislý "text", ..., až po mnoha hodinách mě napadlo, že i to počítadlo by odpovídalo 17kové soustavě ... a byl jsem zralý na panáka. :-)
(nedal jsem si ho)
Jsem lama Martin "Marble" Beránek (4. 12. 2008 - 9:28) Sbalit(1)
Ach jo, nesedícího číslování jsme si všiml, 'g' také, přemnožených 1f též ... a stejně mi to nedošlo. Ale každopádně luxusní úloha a asi bych měl být vděčný tomu, kdo vymyslel žolíky. :)
Tak jsem lama nejvetsi... Petr Janda (4. 12. 2008 - 11:28) Sbalit(1)
..., ze adresy nesedi, jsem si vsiml, na 5g jsem se dokonce preptal orgu (odpoved byla "bez komentare :-)" uz vim proc)
Zkusil jsem to ruzne prerovnavat, aby adresace sedela (prodlouzit/zkratit radky), ale na tak jednoduchou vec jsem neprisel. :-(
Pouceni pro priste :-)