Po drátě 4: Řešení úlohy č. 10

Interpret virtuálního stroje prochází čtvercovou mřížku, přičemž postupuje vždy v jednom z kolmých směrů (dolů, nahoru, doprava nebo doleva). Na každém políčku je jedna instrukce. Buď je to šedé políčko, které stroj prostě projde (tedy NOP), nebo šipka, která mění směr procházení, nebo některá z "barevných" instrukcí.

Stroj má pět registrů rozlišených barvami: modrý, zelený, žlutý, červený a fialový. Instrukce příslušné barvy operují nad registrem stejné bravy. Registr může nabývat pouze hodnot 0 až 26.

Instrukce ± zvětší nebo zmenší příslušný registr o 1, přičemž závisí na směru průchodu stroje: pokud stroj přes instrukci přechází zleva doprava nebo shora dolů, je daný registr zvětšen, pokud prochází přes instrukci zprava doleva nebo zdola nahoru, je registr zmenšen. Registr nikdy nemůže nabýt hodnoty menší než 0 (pokud by k tomu mělo dojít, je instrukce ignorována) nebo větší než 26.

Instrukce if způsobí, že následující instrukce (ve směru pohybu stroje) je vykonána jen tehdy, pokud je příslušný registr roven nule. Je-li nenulový, je následující instrukce považována za NOP.

Instrukce p způsobí vypsání obsahu daného registru, přičemž hodnota 1 je vypsána jako A, hodnota 2 jako B, atd. Hodnota 0 dá na výstupu prázdný řetězec. Úloha byla zkomplikována tím, že instrukce p je dostupná jen pro modrý registr.

Kód pro další úlohu byl uložen po písmenech v jednotlivých registrech, tj. v modrém registru první písmeno, v zeleném druhé písmeno, atd. Stačilo tedy přijít na způsob, jak postupně překopírovat obsah každého z registrů do modrého registru, jehož obsah jako jediný umíme vypsat.

Jedno z možných řešení naleznete zde.

Komentář

Virtuální blackboxová mašinka se objevila počínaje druhým ročníkem zatím v každém ročníku Po drátě, ani tento nebyl výjimkou. Letos byla inspirovaná programovacím jazykem Piet.

Velká část soutěžících zjišťovala zbaběle písmena hesla postupně po jednom. Svědčí o tom to, že se nachytali na heslo KAREN, schválně zvolené tak, aby bylo nutné zjistit všechna písmenka, a posílali nám karty, Karly a další havěť. Co si myslel soutěžící, který poslal heslo "vyhul", je nám však záhadou.

Autorem úlohy je Jirka Benc, kterému bylo řečeno, že už je s těma virtuálníma strojema trapnej, takže má v plánu na příští rok udělat něco ještě virtuálnějšího.