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

Ejhle, PostScript! Kreslí krásnou pravidelnou čtvercovou mřížku. (Ne, heslo není mrizka ani nic podobného :))

Ale jak to dělá? Bližší inspekce odhalí, že se uvnitř definují jakési operátory "a", "b", "M" a "m". Ty se pak používají tak, že se nejdříve zavolá "a" nebo "b", pak se uvedou dvě čísla, a nakonec následuje "M" nebo "m". Když si vzpomenete na to, že PostScript je zásobníkový jazyk, dojde vám, že čísla jsou parametry pro "m" a "M".

Kdo zkusí "M" a "m" prohodit, objeví brzy, že jedno kreslí svislou a druhé vodorovnou čáru. Jednoduchý pokus se změnou čísel ukáže, že čísla udávají pozici čáry. Co ale dělají "a" a "b"? Na první pohled vypadají jejich definice různě, ovšem změna libovolného "a" na "b" nebo opačně se vůbec nijak neprojeví.

Nabízí se domněnka, že dělají úplně totéž, i když to dělat nemají. Co by tedy dělat měly? Volají "setgray", což je postscriptový operátor pro nastavení barvy ve stupních šedi. Stačí tedy parametry, se kterými se jeden ze setgrayů volá, trochu pozměnit, a vykoukne na nás heslo:

Komentář

Mnoho lidí si i přes zjevnou složitost programu myslelo, že úkolem programu opravdu je kreslit pravidelnou mřížku. Alespoň špatná hesla, která jsme dostávali, tomu nasvědčují: mrizka, tabulka, puzzle. Ale dostávali jsme také kousky zdrojáku: showpage, restore atd.

Úlohu spáchali Martin Mareš s Milanem Vančurou (a skutečně je pravda to, co říká DSC komentář na začátku, totiž "Creator: Vim 7.0"), ale až Anička vymyslela heslo, které v našich hranatých písmenkách vypadá pěkně čitelně.

Re: Po drátě 3: Řešení úlohy č. 8 d.petr (4. 12. 2008 - 9:20) Sbalit(1)
> Ale jak to dělá? Bližší inspekce odhalí, že se uvnitř definují jakési
> operátory "a", "b", "M" a "m". Ty se pak používají tak, že se nejdříve
> zavolá "a" nebo "b", pak se uvedou dvě čísla, a nakonec následuje "M"
> nebo "m". Když si vzpomenete na to, že PostScript je zásobníkový jazyk,
> dojde vám, že čísla jsou parametry pro "m" a "M".

Nevím, že PostScript je zásobníkový. Nevím, že v něm jsou operátory. Nejdřív jsem zkusil všechny (2) mé programy, zda něco neukážou třeba při změně různých parametrů. Neukázaly. Pak jsem vlezl dovnitř a medotou pokus-omyl vynechával příkazy (to nebyla dobrá cesta), prohazoval písmenka a měnil hodnoty. Těch pokusů bylo potřeba asi 10, možná 15.
(Je vůbec spravedlivé, že jsem se v soutěži dostal tak daleko?)