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.
"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... :-)
awk 'BEGIN { RS="[ \n]"; FS = "" }; { printf "%c", (($1 * 17) + index("123456789abcdefg", $2)) }'
(nedal jsem si ho)
Zkusil jsem to ruzne prerovnavat, aby adresace sedela (prodlouzit/zkratit radky), ale na tak jednoduchou vec jsem neprisel. :-(
Pouceni pro priste :-)