Po drátě 3: Řešení úlohy č. 9
Pohledem do dodaného souboru s testovacím vstupem zjistíme, že obsahuje obyčejnou morseovku.
Po zkompilování programu a jeho puštění na testovací vstup vypíše program text:
pokud ctete tento text program pracuje spravne a neni treba ho nijak upravovat v tomto souboru ale heslo nenajdete
Program upravovat nemáme, v souboru s testovacím vstupem heslo není. Ve kterém souboru by mohlo být? Dostali jsme jen dva soubory. Pustíme tedy program na ten druhý, tedy na kod.c, tedy sám na sebe. Program vypíše heslo slama.
Samotný program je skutečně jen jednoduché dekódovadlo morseovky, které čte vstup po znacích a všechny znaky jiné než tečka, pomlčka a lomeno ignoruje.
Komentář
Tohle byla další "ambrožovina", podobná šesté úloze z předchozího Po drátě. Jen o něco lehčí, se zabudovanou nápovědou. Navíc komentář v zadání byl stejný jako minule: "Nezapomeň při kompilaci vypnout warningy." To už pro znalé předchozího Po drátě dávalo tušit zradu a nutnost aplikovat méně tradiční postupy.
Někteří účastníci se dali nachytat a zkoušeli hesla jako 10:morseovka, 10: etianmsurwdkgohvf?l?pjbxcyzq??, nebo, nevěříce v pravdivost testovacího vstupu, 10:nenajdete. Některé pokusy dávaly tušit, že jejich autoři sice očekávali ambrožovinu, ale vydali se špatným směrem: 10:segmentation fault nebo 10:tadynicneni.
Co nás trochu mrzelo, bylo to, že spousta lidí se nechala svést z cesty vtípkem z předchozí úlohy, kde tvořil haskellí komentář zcela zjevnou morseovku s textem "mama ma monadu mnam", a posílali nám různé variace na monády, mámy a mňamy. Nenapadlo nás, že by si někdo tyto dvě věci mohl spojit - takovou čuňárnu, aby se řešení úlohy ukrývalo v některé z předchozích úloh, nebo byl obsah předchozí úlohy vůbec k řešení potřeba, aniž bychom to explicitně uvedli, bychom neudělali. To bychom pak museli chodit kanaláma a nedívat se do zrcadla, jak bychom se za sebe styděli.
Většině lidí však úloha nedělala výraznější problémy a zvládli ji vyřešit celkem rychle.
Máme zprávy minimálně o jednom účastníkovi, který si program rozebral, okomentoval si, co dělá, a když ho pak konečně napadlo pustit jej sám na sebe, moc přesvědčivý výsledek nedostal.
Autorem úlohy je Niel Ambrož Jirka Benc. Drobné vylepšení provedl
matějčík.
Neco podobneho se mi stalo u ulohy s CSS, nejdrive jsem mrknul na nazvy souboru, prehledl jedno zmenene pismenko a zacal resit ulohu velice komplikovane tj. vypisovani pismenek jen mezi SPAN a dalsi zbytecne carovani. Kdyz jsem se dost vydovadel, radeji jsem jeste jednou kouknul na nazev souboru s kaskadovym stylem. ;-)
Vyzkoušel jsem hoooooodně všelijakých kombinací jako prohazování teček a pomlček, vstupní morseovkový 'text' zepředu, zezadu, jen některé značky (podle různých pravidel), zkoušel jsem i různé závislosti na formátování vstupu po řádcích, taky všelijaké změny dekódovacího řetězce a postupů dekódování, bádal jsem nad tím, proč jsou na konci dekódovacího řetězce "??", proč je v programu cyklus (pos > 30) a ne podmínka, ... ale na takový mozkový kotrmelec, abych do vstupu pustil program, to se tedy přiznám, na ten bych asi nepřišel nikdy.
Někdo mi v diskusi psal, že až uvidím řešení, vytrhám si všechny vlasy. Ne, nic takového se nestalo, jen ještě stále kroutím hlavou.
(Škoda, Kadlik v 10 by mě nejspíš bavil.)
Celkově to bylo pár tisíc řešení, počítač to počítal přes noc. Když mi spell-checker oznámil, že žáné z těch slov není ve slovníku, trhal jsem si vlasy.
Mělo to ale dobrý vliv na nové openSUSE 11.1. Jak? Ráno jsem šel hledat bugy.