Po drátě 3: Řešení vedlejší úlohy A

Rychlá vedlejší úloha s Linuxovou tématikou: celé zadání je v mailu, takže je jasné, že heslo není třeba hledat jinde. Úvodní text před "písničkou" poukazuje na známý základní nastroj v UNIXech: sed. Pokud slova písničky použijeme jako příkazy pro (GNU) sed a jako vstup použijeme ten vstupní nápis, vidíme, že opravdu vše funguje bez chyby. Akorát, že to nakonec nic nevypíše. První krok je tedy dobře, jde jen o to, jak dál.

Když už víme, že na slova písničky máme pohlížet jako na sedovské příkazy (mimochodem, např. editor vim je umí zobrazit krásně barevně pomocí syntax highlighting), tak si všimneme, že některé z příkazů pro nahrazení mají na konci tzv. flag, který příkaz modifikuje:

statisti       ->  s/a/is/i
svaly_v_hlave  ->  s/aly_/_hla/e

Flag 'i' je známý - ignore case - a flag 'e' dohledáme v info stránce: způsobuje, že se text spustí jako příkaz shellu místo aby se vypsal. Tak tedy koncové 'e' smažeme a máme výstup zpět na obrazovce: i_Rimane_hladili_damam_psy

Komentář

Celý nápad vznikl z debaty o pověstné (ne)čitelnosti skriptů v jazyce PERL. Zjistili jsme, že rozdíl mezi PERLem a sed-em je v tomto případě pouze v tom, že pokud je jako separátor v operátoru s/// použito místo lomítek písmeno, vyžaduje PERL mezi počátečním 's' a tím písmenem mezeru. Sed ji nejen že nevyžaduje, ale dokonce i zakazuje (a je tedy ještě méně čitelný). A tak začaly vznikat první nápady, jaká česká slova by mohla být zároveň i příkazy sedu...

Historka: po zveřejnění úlohy mezi další organizátory a testery byl jeden z nich nespokojen s výsledným heslem, protože psi mu připadali moc obyčejní k hlazení. Ale když jsme vyzkoušeli jiná zvířata, tak skoro na každé nás napadlo, jak by se to mohlo vykládat dvojsmyslně, tak jsme se raději vrátili k věrným psíkům...

Autorem úlohy je Milan Vančura.