Martin si chce postaviť dom na zelenej lúke v Hornej Strehovej. Martin je ale veľmi lenivý a ani by ho to nenapadlo robiť samého ručne. Radšej nechá, nech to zaňho postaví nejaký robot. Bohužiaľ ale robotovi treba povedať, čo má robiť, a dnešná umelá inteligencia zatiaľ nezvládne preložiť “postav dom” do niečoho, čomu by robot rozumel.
Robot sa vie hýbať po mriežke 9x9 a pokladať a brať tehly. Ty môžeš robotovi dať program, ktorý sa skladá z niekoľkých príkazov, a potom program spustiť, a robot tie príkazy vykoná.
Príkazy sú:
Krok (krok): robot sa pohne o jedno políčko dopredu. Ak je pred robotom tehla o jedno políčko vyššie ako to, kde robot práve stojí, tak robot vyskočí na tehlu. Podobne ak má robot ísť o jednu tehlu nižšie, tak zoskočí. Robot ale nevie vyskakovať ani zoskakovať výšku viac ako jednej tehly.
Doľava, doprava (dolava, doprava): robot sa otočí o 90 stupňov do príslušnej strany.
Polož (poloz): robot pred seba položí tehlu. Vie položiť tehlu iba vtedy, ak je políčko pred ním o jednu tehlu nižšie (teda tehlu pokladá pod nohy), rovnako vysoko (teda tehlu pokladá k nohám), alebo o jednu tehlu vyššie (teda tehlu pokladá pred hlavu). Inak robot nedočiahne tam, kde má tehlu položiť. Tehál má robot neobmedzene veľa v zásobe a preto môže položiť tehlu aj keď pretým žiadnu nezobral.
Zober (zober): robot zoberie z pred seba tehlu. Vie zobrať tehlu len odtiaľ, kde by ju vedel položiť (teda spred hlavy, spred nôh a ešte o jedno políčko nižšie).
Opakuj X (opakuj {pocet}): namiesto X má byť nejaké číslo. Robot si zoberie všetky ďalšie príkazy až do najbližšieho príkazu koniec, a túto postupnosť príkazov zopakuje X-krát za sebou.
Koniec (koniec): koniec opakovania.
Každý príkaz musí byť na samostatnom riadku. Okolo príkazov môžu byť medzery a tabulátory, môžu byť aj prázdne riadky, ktoré sa ignorujú. Na veľkých a malých písmenách ani diakritike nezáleží.
Okrem toho v programe môžu byť komentáre: ak riadok začína znakom #, tak sa celý ignoruje, takže si tam môžeš napísať napríklad nejakú poznámku pre seba.
Úloha sa skladá z niekoľkých podúloh. Každá z podúloh vyzerá tak, že dostaneš na obrázku zadané, čo má robot postaviť, a tvojou úlohou je napísať program, ktorý to postaví. Novinka toto kolo je, že tvoje riešenie už nemusíš odovzdávať ako popis! Stránka by mala automaticky ohodnotiť tvoje riešenie a dať ti body, ktoré neskôr vidíš vo výsledkovke. V prípade, že by si mal akékoľvek problémy, neváhaj sa nám ozvať na [email protected].
Úloha sa rieši na webstránke prask-interaktivky.ksp.sk/robot/1. Je možné riešiť ju anonymne, ale pre odovzdanie sa treba prihlásiť a otvoriť ju pomocou tlačidla v pravej časti zadania.
Súťaž PRASK zastrešuje občianske združenie Trojsten.
Trojsten, o.z.
FMFI UK, Mlynská dolina
842 48 Bratislava
Programátorská súťaž pre stredoškolákov
Tímová matematicko-fyzikálna súťaž pre základoškolákov
Materiály a úlohy na výučbu programovania