Problem Set 1: Karel

Ciele

  • Ukázať, ako ste si osvojili algoritmické zmýšľanie a prácu s robotom Karlom.
  • Naučiť sa systematicky vytvárať návrh programu, program a komentáre.
  • Osvojiť si prácu so systémom na správu verzií git.

Git

Predtým, než začnete pracovať na zadaní, zoznámte sa so systémom Git, pomocou ktorého prebehne odovzdanie tohto zadania (a neskôr aj odovzdanie ďalších zadaní). K dispozícii máte krátke cvičenie, v rámci ktorého nastavíte systém Git: Version Control.

Úloha 1: Orientačný beh

Robot Karel sa rozhodol zúčastniť ďalšej disciplíny na olympiáde. Aj tentokrát pobeží cez prekážky, ktoré sú rôzne vysoké, rôzne široké a rôzne od seba vzdialené. Avšak keď nájde značku, zodvihne ju a cez prekážky sa vráti naspäť na svoju východziu pozíciu.

Nezabudnite, že v rámci celého tohto zadania nie je povolené používať premenné.

Pri odovzdaní Vášho programu použite vo funkcii turnOn() názov mapy task_1.kw.

Počiatočná situácia

Na začiatku sa robot Karel nachádza niekde na prekážkovej trati, otočený smerom na východ.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (1, 1)   EAST       1         0
ST.+---------------------------------------+
 6 | .   .   .   .   .   .   .   .   .   . |
   |                   +                   |
 5 | .   .   .   .   . | .   .   .   .   . |
   |                   |   +-------+       |
 4 | .   .   .   .   . | . | .   . | .   . |
   |                   |   |       |       |
 3 | .   .   .   .   . | . | .   . | .   . |
   |   +-----------+   |   |       |   +   |
 2 | . | .   .   . | . | . | .   . | . | . |
   |   |           |   |   |       |   |   |
 1 | > | .   .   . | . | . | .   . | 1 | . |
   +---------------------------------------+
     1   2   3   4   5   6   7   8   9   10  AVE.

Koncová situácia

Na konci sa robot Karel nachádza na svojej pôvodnej pozícii, avšak tentokrát je otočený smerom na západ. V batohu má značku, pre ktorú utekal, t.j. v batohu má o jednu značku viac, než na začiatku programu.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (1, 1)   WEST       2         0
ST.+---------------------------------------+
 6 | .   .   .   .   .   .   .   .   .   . |
   |                   +                   |
 5 | .   .   .   .   . | .   .   .   .   . |
   |                   |   +-------+       |
 4 | .   .   .   .   . | . | .   . | .   . |
   |                   |   |       |       |
 3 | .   .   .   .   . | . | .   . | .   . |
   |   +-----------+   |   |       |   +   |
 2 | . | .   .   . | . | . | .   . | . | . |
   |   |           |   |   |       |   |   |
 1 | < | .   .   . | . | . | .   . | . | . |
   +---------------------------------------+
     1   2   3   4   5   6   7   8   9   10  AVE.

Hodnotenie

Táto úloha je za max. 1 bod. Jej riešenie teda nie je komplexné, ale kladie dôraz na úplne iné záležitosti:

  • Aby ste si osvojili prácu so systémom na správu verzií git.
  • Aby ste si otestovali rozličné podoby počiatočnej a koncovej situácie pri odovzdávaní zadania.

Upozornenie

Pri hodnotení sa ráta každá jedna značka, pozícia aj smer robota.

Upozornenie

Pri odovzdaní Vášho programu použite vo funkcii turnOn() názov mapy task_1.kw.

Úloha 2: Problém

Od Vášho cvičiaceho dostanete číslo problému vo svete robota Karla.

Navrhnite program na riešenie popísaného problému. Nezabudnite, že nie je povolené používať premenné. Zadanie odovzdajte do systému git do 28.10.2018. Presný spôsob odovzdania je uvedený nižšie.

Pri odovzdaní Vášho programu použite vo funkcii turnOn() názov mapy task_2.kw.

Zoznam problémov nájdete na konci tejto stránky.

Hodnotenie

Táto úloha je za max. 7 bodov.

Upozornenie

Pri hodnotení sa ráta každá jedna značka, pozícia aj smer robota, pokiaľ nie je priamo v zadaní problému uvedené inak.

Upozornenie

Pri odovzdaní Vášho programu použite vo funkcii turnOn() názov mapy task_2.kw.

Požiadavky pre úspešné odovzdanie zadania

  • Projekt musí byť odovzdaný včas v git repozitári na adrese git.kpi.fei.tuke.sk (viď nižšie).
  • Počas prekladu nemôže dôjsť ku žiadnej chybe! Projekt sa bude prekladať prekladačom gcc pomocou nasledovných prepínačov:
gcc -std=c11 -Werror -Wall -lkarel -lcurses
  • Vo výslednej implementácii sa nemôže nachádzať žiadna premenná.
  • Pri odovzdaní Vášich programov použite vo funkcii turnOn() názov mapy task_1.kw resp. task_2.kw.

Odovzdávanie projektu

Zadanie odovzdajte do 28.10.2018. Posledné testovanie prebehne v tento deň o polnoci.

Zadanie sa odovzdáva prostredníctvom systému na správu verzií Git na serveri git.kpi.fei.tuke.sk. Predtým, než začnete pracovať na zadaní, zoznámte sa so systémom Git, pomocou ktorého prebehne odovzdanie tohto zadania. K dispozícii máte krátke cvičenie, v rámci ktorého nastavíte systém Git: Version Control.

Názov Vášho projektu musí byť v tvare: zap-2018.

Projekt musí mať nasledujúcu štruktúru priečinkov a súborov:

.
├── ps1
│   ├── README
│   └── task_1.c
│   └── task_2.c
└── README

Význam jednotlivých súborov je nasledovný:

  • README resp. README.md - Súbor, v ktorom bude uvedená Vaša skupina, ktorú navštevujete na cvičeniach:
GROUP : C1
  • /ps1/README resp. /ps1/README.md - Súbor, v ktorom bude uvedené číslo problému k úlohe č. 2, ktoré Vám pridelil Váš cvičiaci:
PROBLEM : 3
  • /ps1/task_1.c - Zdrojový kód riešenia prvej úlohy - Orientačný beh.
  • /ps1/task_2.c - Zdrojový kód riešenia druhej úlohy (jej číslo Vám pridelil Váš cvičiaci).

Upozornenie

Je dôležité, aby Vaše súbory zachovali uvedenú štruktúru. Ak sa niektorý zo súborov síce v repozitári nachádza, ale v inom priečinku, bude to považované za chybu a takýto projekt nebude považovaný za správny.

Poznámka

Ak sa vo Vašom projekte budú nachádzať ďalšie súbory okrem požadovaných, ich existencia nebude považovaná za chybu.

Upozornenie

Pri názvoch priečinkov, súborov a obsahu súboru README resp. README.md záleží na veľkosti písmen!

Poznámka

Názov súboru s číslom skupiny a problému môže byť README alebo README.md. Avšak v jednom adresári sa musí nachádzať len jeden!

Hodnotenie a testovanie

Za zadanie môžete získať max. 8 bodov, z toho max. 1 bod za prvú úlohu, max. 7 bodov za druhú úlohu. Počet získaných bodov sa bude odrážať od výsledku testov, ktorými Vaše zadanie úspešne prejde. Overovať sa bude:

  • Štruktúra Vášho projektu (či sa v ňom nachádzajú všetky potrebné súbory).
  • Funkčnosť Vašej implementácie.

Váš kód sa bude prekladať prekladačom gcc s nasledovnými prepínačmi:

gcc -std=c11 -Werror -Wall -lkarel -lcurses

Za chybu sa bude považovať:

  • Ak vo Vašej implementácii použijete premennú.
  • Ak počas prekladu dôjde ku chybe (upozornenia sú priamo konvertované na chyby).
  • Ak Vaša implementácia neprejde niektorým z testov.

Testovanie Vašich riešení sa bude vykonávať automaticky každé 3 hodiny a to konkrétne o 0300, 0600, 0900, 1200, 1500, 1800, 2100 a 2400.

Vaše riešenia prejdú kontrolou originality. Preto sa pri práci na Vašom zadaní správajte podľa pravidiel etického kódexu! V prípade, že odovzdáte zadanie, ktoré nie je Vaše, môžete byť vylúčení z predmetu!

Zoznam problémov

01: Triedenie 1

Vašou úlohou je naučiť robota Karla triediť rady vytvorené zo značiek zostupne (od najvyššieho po najnižší). Každý rad sa začína na najspodnejšom riadku sveta a je zložený zo značiek nachádzajúcich sa v rovnakom stĺpci. Ak je teda rad vysoký 7 značiek, znamená to, že v jednom stĺpci sa nachádza 7 po sebe idúcich značiek. Vo svete sa nenachádzajú žiadne ďalšie steny.

Nezabudnite, že nie je povolené používať premenné.

Počiatočná situácia

Karel sa na začiatku môže nachádzať na ľubovoľnej pozícii a v batohu môže mať ľubovoľný počet značiek.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (4, 3)   NORTH      3         1
ST.+-----------------------------------+
 7 | .   .   .   .   .   .   .   .   . |
   |                                   |
 6 | .   .   .   .   .   .   .   .   . |
   |                                   |
 5 | .   .   .   .   .   .   1   .   . |
   |                                   |
 4 | .   .   .   1   .   .   1   .   . |
   |                                   |
 3 | .   1   .   ^   .   .   1   .   . |
   |                                   |
 2 | .   1   1   1   .   1   1   .   . |
   |                                   |
 1 | .   1   1   1   .   1   1   1   . |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.
Koncová situácia

Karel sa na konci nachádza v pravom hornom rohu sveta otočený smerom na sever. V batohu má rovnaký počet značiek ako na začiatku. Všetky rady sú zotriedené od najvyššieho po najnižší, pričom najvyšší rad je najzápadnejší.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (9, 7)   NORTH      3         0
ST.+-----------------------------------+
 7 | .   .   .   .   .   .   .   .   ^ |
   |                                   |
 6 | .   .   .   .   .   .   .   .   . |
   |                                   |
 5 | 1   .   .   .   .   .   .   .   . |
   |                                   |
 4 | 1   1   .   .   .   .   .   .   . |
   |                                   |
 3 | 1   1   1   .   .   .   .   .   . |
   |                                   |
 2 | 1   1   1   1   1   .   .   .   . |
   |                                   |
 1 | 1   1   1   1   1   1   .   .   . |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.

02: Arianina niť

Karel zablúdil v noci v lese. Keďže túto možnosť predpokladal, nakoľko ho čínski výrobcovia nevybavili modulom GPS, využil overenú fintu pod názvom Arianina niť: Pri vstupe do lesa začal Karel pri každom svojom kroku odhadzovať jednu kovovú súčiastku (značku). Občas prišiel na miesto, kde sa už súčiastka nachádzala (už tadiaľ prešiel), a preto tam už ďalšiu súčiastku neodhodil (aby ju ušetril). Keďže sa však Karlovi súčiastky minuli, nemôže postupovať v lese ďalej. Musí sa teda vrátiť späť na východziu pozíciu, kde vstupoval do lesa.

Vytvorte pre robota Karla program, pomocou ktorého mu pomôžete vrátiť sa z lesa naspäť. Počas cesty budete zbierať všetky súčiastky, ktoré Karel cestou porozhadzoval.

Nezabudnite, že nie je povolené používať premenné.

Počiatočná situácia

Karel sa na začiatku nachádza na pozícii, kde položil poslednú súčiastku a v batohu už žiadne nemá. Karel je na začiatku otočený na pôvodný smer jeho cesty (potrebuje sa otočiť naspäť).

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (5, 6)   NORTH      0         1
ST.+-----------------------------------+
 6 | .   .   .   .   ^   .   1   1   1 |
   |                                   |
 5 | .   1   1   .   1   .   1   .   1 |
   |                                   |
 4 | .   .   1   .   1   .   1   .   1 |
   |                                   |
 3 | .   1   1   .   1   1   1   1   1 |
   |                                   |
 2 | .   1   .   .   .   .   1   .   . |
   |                                   |
 1 | .   1   1   1   1   1   1   .   . |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.
Koncová situácia

Karel sa na konci nachádza na pozícii, kde bola položená prvá odhodená súčiastka a v batohu bude má všetky odhodené súčiastky, ktoré cestou pozbieral. Karel je na konci otočený tak, ako keby mal pokračovať v ceste ďalej.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (2, 5)   WEST      28         0
ST.+-----------------------------------+
 6 | .   .   .   .   .   .   .   .   . |
   |                                   |
 5 | .   <   .   .   .   .   .   .   . |
   |                                   |
 4 | .   .   .   .   .   .   .   .   . |
   |                                   |
 3 | .   .   .   .   .   .   .   .   . |
   |                                   |
 2 | .   .   .   .   .   .   .   .   . |
   |                                   |
 1 | .   .   .   .   .   .   .   .   . |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.

03: Búrka

V jeden krásny slnečný deň sa robot Karel rozhodol, že dá do poriadku svoju záhradku a trošku vyčistí jednotlivé riadky a stĺpce od zbytočných značiek. Avšak začalo pršať. Karel si spomenul, že okná na svojom dome zabudol zatvoriť, a tak sa rozbehol dovnútra. Vo dverách domu sa však zastavil, pretože si nevedel rýchlo zostaviť algoritmus, ako so zatváraním okien začať.

Vašou úlohou je vytvoriť program pre robota Karla, pomocou ktorého pozatvára všetky okná.

Nezabudnite, že nie je povolené používať premenné.

Počiatočná situácia

Karel sa nachádza vo dverách svojho domu, pričom je otočený smerom dovnútra domu. Karlov dom však nemusí byť vždy reprezentovaný len ako obdĺžnik. Okno je reprezentované dierou v stene a jeho zatvorenie predstavuje vloženie značky do steny.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (9, 3)   WEST      99         0
ST.+-----------------------------------+
 6 | .   .   .   .   .   .   .   .   . |
   |   +   +   +---+   +-------+       |
 5 | . | . | . | .   .   .   . | .   . |
   |   |   +---+               +---+   |
 4 | . | .   .   .   .   .   .   . | . |
   |   +                           +   |
 3 | .   .   .   .   .   .   .   .   < |
   |   +                       +---+   |
 2 | . | .   .   .   .   .   . | .   . |
   |   +---+   +-------+   +---+       |
 1 | .   .   .   .   .   .   .   .   . |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.
Koncová situácia

Karel sa po zatvorení všetkých okien opäť nachádza vo dverách svojho domu. Tentokrát je však otočený smerom von, aby sa mohol spokojne na dážď pozerať.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (8, 3)   EAST      94         0
ST.+-----------------------------------+
 6 | .   .   .   .   .   .   .   .   . |
   |   +   +   +---+   +-------+       |
 5 | . | 1 | . | .   1   .   . | .   . |
   |   |   +---+               +---+   |
 4 | . | .   .   .   .   .   .   . | . |
   |   +                           +   |
 3 | .   1   .   .   .   .   .   >   . |
   |   +                       +---+   |
 2 | . | .   1   .   .   1   . | .   . |
   |   +---+   +-------+   +---+       |
 1 | .   .   .   .   .   .   .   .   . |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.

04: Pyramída

Vytvorte program, pomocou ktorého robot Karel postaví vo svojom meste zo značiek pyramídu. Pyramída bude vytvárať Pascalov trojuholník, čo znamená, že počet značiek na danej pozícii bude predstavovať súčet značiek ľavého a pravého horného suseda danej značky. Aby bol zachovaný tvar pyramídy a aby bolo možné jednoznačne identifikovať ľavého a pravého horného suseda, budú dve značky v jednom riadku od seba oddelené prázdnou pozíciou. Ľavý dolný roh pyramídy sa bude nachádzať v ľavom dolnom rohu sveta.

Nezabudnite, že nie je povolené používať premenné.

Počiatočná situácia

Karel sa môže nachádzať na ľubovoľnej pozícii sveta. V batohu má dostatočný počet značiek na vytvorenie pyramídy.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (9, 4)   NORTH     999         0
ST.+-------------------------------------------+
 7 | .   .   .   .   .   .   .   .   .   .   . |
   |                                           |
 6 | .   .   .   .   .   .   .   .   .   .   . |
   |                                           |
 5 | .   .   .   .   .   .   .   .   .   .   . |
   |                                           |
 4 | .   .   .   .   .   .   .   .   ^   .   . |
   |                                           |
 3 | .   .   .   .   .   .   .   .   .   .   . |
   |                                           |
 2 | .   .   .   .   .   .   .   .   .   .   . |
   |                                           |
 1 | .   .   .   .   .   .   .   .   .   .   . |
   +-------------------------------------------+
     1   2   3   4   5   6   7   8   9   10  11  AVE.
Koncová situácia

Karel sa nachádza v ľavom hornom rohu otočený smerom na východ.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (1, 7)   EAST      936         0
ST.+-------------------------------------------+
 7 | >   .   .   .   .   .   .   .   .   .   . |
   |                                           |
 6 | .   .   .   .   .   1   .   .   .   .   . |
   |                                           |
 5 | .   .   .   .   1   .   1   .   .   .   . |
   |                                           |
 4 | .   .   .   1   .   2   .   1   .   .   . |
   |                                           |
 3 | .   .   1   .   3   .   3   .   1   .   . |
   |                                           |
 2 | .   1   .   4   .   6   .   4   .   1   . |
   |                                           |
 1 | 1   .   5   .   10  .   10  .   5   .   1 |
   +-------------------------------------------+
     1   2   3   4   5   6   7   8   9   10  11  AVE.

05: Schody

Vytvorte program, pomocou ktorého si robot Karel postaví zo značiek schody. Stavebné "bloky" sú s každým ďalším schodom postavené z počtu značiek o 1 väčšieho ako predchádzajúci schod, pričom prvý schod je postavený zo stavebného bloku s jednou značkou (viď koncová situácia). Stavanie schodov sa končí, ak Karel narazí na severnú alebo východnú hranicu sveta.

Nezabudnite, že nie je povolené používať premenné.

Počiatočná situácia

Karel sa nachádza v ľavom dolnom rohu otočený smerom na východ.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (1, 1)   EAST      999         0
ST.+-----------------------------------+
 6 | .   .   .   .   .   .   .   .   . |
   |                                   |
 5 | .   .   .   .   .   .   .   .   . |
   |                                   |
 4 | .   .   .   .   .   .   .   .   . |
   |                                   |
 3 | .   .   .   .   .   .   .   .   . |
   |                                   |
 2 | .   .   .   .   .   .   .   .   . |
   |                                   |
 1 | >   .   .   .   .   .   .   .   . |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.
Koncová situácia

Karel sa nachádza v pravom dolnom rohu otočený smerom na východ.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (9, 1)   EAST       908        0
ST.+-----------------------------------+
 6 | .   .   .   .   .   6   .   .   . |
   |                                   |
 5 | .   .   .   .   5   6   .   .   . |
   |                                   |
 4 | .   .   .   4   5   6   .   .   . |
   |                                   |
 3 | .   .   3   4   5   6   .   .   . |
   |                                   |
 2 | .   2   3   4   5   6   .   .   . |
   |                                   |
 1 | 1   2   3   4   5   6   .   .   > |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.

06: Písmeno A

Karel dostal za úlohu naučiť sa písať písmeno A, pretože rohy jeho sveta budú použité ako body veľkoplošnej čierno/bielej obrazovky pre Majstrovstvá sveta v hokeji 2018. Prázdne pozície sveta predstavujú bielu farbu (prázdna pozícia) a značky (s počtom 8) čiernu farbu. Písmeno musí byť vykresliteľné na ľubovoľnú obrazovku, ktorej rozmery sú minimálne 5x5. To znamená, že písmeno je potrebné pre rozličné rozmery sveta vhodne zväčšiť/zmenšiť, pričom vypísať ho je potrebné cez všetky riadky sveta a zachovať jeden voľný stĺpec pred písmenom a jeden za ním.

Prostredná čiara písmena A sa vždy nachádza v strede sveta, t.j. pod čiarou bude väčšia polovica prázdnych rohov sveta a nad čiarou bude menšia polovica prázdnych rohov sveta.

Nezabudnite, že nie je povolené používať premenné.

Počiatočná situácia

Karel sa môže nachádzať na ľubovoľnom rohu sveta a môže byť otočený ľubovoľným smerom. Karel má v batohu 999 značiek. Svet na výšku obsahuje nepárny počet rohov sveta.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (2, 5)   EAST      999        0
ST.+-----------------------------------+
 5 | .   >   .   .   .   .   .   .   . |
   |                                   |
 4 | .   .   .   .   .   .   .   .   . |
   |                                   |
 3 | .   .   .   .   .   .   .   .   . |
   |                                   |
 2 | .   .   .   .   .   .   .   .   . |
   |                                   |
 1 | .   .   .   .   .   .   .   .   . |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.
Koncová situácia

Karel sa po vykreslení písmena nachádza v pravom dolnom rohu otočený na východ.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (9, 1)   EAST      855        0
ST.+-----------------------------------+
 5 | .   .   8   8   8   8   8   .   . |
   |                                   |
 4 | .   8   .   .   .   .   .   8   . |
   |                                   |
 3 | .   8   8   8   8   8   8   8   . |
   |                                   |
 2 | .   8   .   .   .   .   .   8   . |
   |                                   |
 1 | .   8   .   .   .   .   .   8   > |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.

07: Písmeno B

Karel dostal za úlohu naučiť sa písať písmeno B, pretože rohy jeho sveta budú použité ako body veľkoplošnej čierno/bielej obrazovky pre Majstrovstvá sveta v hokeji 2018. Prázdne pozície sveta predstavujú bielu farbu (prázdna pozícia) a značky (s počtom 8) čiernu farbu. Písmeno musí byť vykresliteľné na ľubovoľnú obrazovku, ktorej rozmery sú minimálne 6x6. To znamená, že písmeno je potrebné pre rozličné rozmery sveta vhodne zväčšiť/zmenšiť, pričom vypísať ho je potrebné cez všetky riadky sveta a zachovať jeden voľný stĺpec pred písmenom a jeden za ním.

Prostredná čiara písmena B sa vždy nachádza o riadok vyššie, ako je stred sveta, t.j. pod čiarou bude väčšia polovica prázdnych rohov sveta a nad čiarou bude menšia polovica prázdnych rohov sveta.

Nezabudnite, že nie je povolené používať premenné.

Počiatočná situácia

Karel sa môže nachádzať na ľubovoľnom rohu sveta a môže byť otočený ľubovoľným smerom. Karel má v batohu 999 značiek. Svet na výšku obsahuje párny počet rohov sveta.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (2, 5)   EAST      999        0
ST.+-----------------------------------+
 6 | .   .   .   .   .   .   .   .   . |
   |                                   |
 5 | .   >   .   .   .   .   .   .   . |
   |                                   |
 4 | .   .   .   .   .   .   .   .   . |
   |                                   |
 3 | .   .   .   .   .   .   .   .   . |
   |                                   |
 2 | .   .   .   .   .   .   .   .   . |
   |                                   |
 1 | .   .   .   .   .   .   .   .   . |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.
Koncová situácia

Karel sa po vykreslení písmena nachádza v pravom dolnom rohu otočený na východ.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (9, 1)   EAST      807        0
ST.+-----------------------------------+
 6 | .   8   8   8   8   8   8   .   . |
   |                                   |
 5 | .   8   .   .   .   .   .   8   . |
   |                                   |
 4 | .   8   8   8   8   8   8   .   . |
   |                                   |
 3 | .   8   .   .   .   .   .   8   . |
   |                                   |
 2 | .   8   .   .   .   .   .   8   . |
   |                                   |
 1 | .   8   8   8   8   8   8   .   > |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.

08: Písmeno G

Karel dostal za úlohu naučiť sa písať písmeno G, pretože rohy jeho sveta budú použité ako body veľkoplošnej čierno/bielej obrazovky pre Majstrovstvá sveta v hokeji 2018. Prázdne pozície sveta predstavujú bielu farbu (prázdna pozícia) a značky (s počtom 8) čiernu farbu. Písmeno musí byť vykresliteľné na ľubovoľnú obrazovku, ktorej rozmery sú minimálne 6x6. To znamená, že písmeno je potrebné pre rozličné rozmery sveta vhodne zväčšiť/zmenšiť, pričom vypísať ho je potrebné cez všetky riadky sveta a zachovať jeden voľný stĺpec pred písmenom a jeden za ním.

Prostredná čiara písmena G sa vždy nachádza o riadok nižšie, ako je stred sveta, t.j. pod čiarou bude menšia polovica prázdnych rohov sveta a nad čiarou bude väčšia polovica prázdnych rohov sveta.

Nezabudnite, že nie je povolené používať premenné.

Počiatočná situácia

Karel sa môže nachádzať na ľubovoľnom rohu sveta a môže byť otočený ľubovoľným smerom. Karel má v batohu 999 značiek. Svet na výšku obsahuje párny počet rohov sveta.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (2, 5)   EAST      999        0
ST.+-----------------------------------+
 6 | .   .   .   .   .   .   .   .   . |
   |                                   |
 5 | .   >   .   .   .   .   .   .   . |
   |                                   |
 4 | .   .   .   .   .   .   .   .   . |
   |                                   |
 3 | .   .   .   .   .   .   .   .   . |
   |                                   |
 2 | .   .   .   .   .   .   .   .   . |
   |                                   |
 1 | .   .   .   .   .   .   .   .   . |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.
Koncová situácia

Karel sa po vykreslení písmena nachádza v pravom dolnom rohu otočený na východ.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (9, 1)   EAST      831        0
ST.+-----------------------------------+
 6 | .   .   8   8   8   8   8   .   . |
   |                                   |
 5 | .   8   .   .   .   .   .   8   . |
   |                                   |
 4 | .   8   .   .   .   .   .   .   . |
   |                                   |
 3 | .   8   .   8   8   8   8   8   . |
   |                                   |
 2 | .   8   .   .   .   .   .   8   . |
   |                                   |
 1 | .   .   8   8   8   8   8   .   > |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.

09: Skladisko

Karel začal brigádovať v skladisku. Na začiatok dostal pomerne jednoduchú úlohu - preskúmať staré priestory skladiska a rozhodnúť, ktoré z nich je možné ešte stále použiť na skladovanie. Skladisko je totiž veľké a obsahuje mnoho starých priestorov. Za bezpečný priestor sa považuje taký objekt, ktorý má len jeden vchod a celý je ohraničený pevnou stenou. Ak sa v objekte nachádzajú aj ďalšie potenciálne vchody, je potrebné daný priestor označiť pre budúce zabezpečenie, pretože aktuálne nie je považovaný za bezpečný. Vytvorte program, pomocou ktorého robot Karel overí dostupné priestory skladiska.

Nezabudnite, že nie je povolené používať premenné.

Počiatočná situácia

Karel sa nachádza na pozícii vľavo dole na začiatku chodby, ktorú treba preskúmať, otočený smerom na východ. Chodba je rovná a vedie od západnej steny po východnú. Na sever od chodby sa nachádzajú skladové priestory, ktoré je potrebné preskúmať. Tieto priestory nemusia mať vždy obdĺžnikový tvar. Karel má dostatočný počet značiek na označenie priestorov skladiska.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (1, 1)   EAST      99         0
ST.+-----------------------------------+
 5 | .   .   . | .   .   . | . | .   . |
   |       |   +---+   +---+   |   |   |
 4 | .   . | .   . | . | .   . | . | . |
   |   +---+       |   |       |   |   |
 3 | . | .   .   . | . | .   . | .   . |
   |   |           |   |       |   |   |
 2 | . | . | . | . | . | . | . | . | . |
   |   +---+   +---+   +---+   |   |   |
 1 | >   .   .   .   .   .   .   .   . |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.
Koncová situácia

Karel sa nachádza na konci chodby otočený smerom na východ. Všetky skladiskové priestory sú overené a tie, ktoré nie sú považované za bezpečné, sú označkované značkou vo dverách (prekážkou).

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (9, 1)   EAST      95         0
ST.+-----------------------------------+
 5 | .   .   . | .   .   . | . | .   . |
   |       |   +---+   +---+   |   |   |
 4 | .   . | .   . | . | .   . | . | . |
   |   +---+       |   |       |   |   |
 3 | . | .   .   . | . | .   . | .   . |
   |   |           |   |       |   |   |
 2 | 1 | . | 1 | . | . | . | . | 1 | 1 |
   |   +---+   +---+   +---+   |   |   |
 1 | .   .   .   .   .   .   .   .   > |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.

10: Knižnica

Robot Karel sa nachádza v knižnici, ktorá pozostáva z aspoň jedného regálu (podľa rozmerov sveta). Každý regál má rovnakú šírku - 2 pozície, a od predošlého regálu je rovnako vzdialený smerom na východ - o 1 prázdnu pozíciu (viď počiatočná a koncová situácia). Zároveň každý regál má rovnakú výšku ako ostatné regále, ktorá je zavislá od rozmerov sveta - 1 prázdna pozícia na severe a 1 prázdna pozícia na juhu. Počet políc v jednotlivých regáloch je však rôzny. Knihy na policiach v regáloch knižnice reprezentujú znacky.

Úlohou robota je usporiadať knihy (značky) v jednotlivých regáloch zo severu na juh.

Nezabudnite, že nie je povolené používať premenné.

Počiatočná situácia

Robot Karel sa na začiatku nachádza na juhozápade.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (1, 1)   EAST      30         0
ST.+-----------------------------------+
 8 | .   .   .   .   .   .   .   .   . |
   |---+----   +---+----   +---+----   |
 7 | . | 1   . | . | 1   . | . | 1   . |
   |---+----   +---+----   +---+       |
 6 | . | 1   . | . | 1   . | . | .   . |
   |---+----   +---+----   +---+       |
 5 | . | 1   . | . | .   . | . | .   . |
   |---+       +---+----   +---+       |
 4 | . | 1   . | . | 1   . | . | .   . |
   |---+----   +---+----   +---+       |
 3 | . | 1   . | . | 1   . | . | .   . |
   |---+----   +---+----   +---+       |
 2 | . | 1   . | . | 1   . | . | 1   . |
   |---+----   +---+----   +---+----   |
 1 | >   .   .   .   .   .   .   .   . |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.
Koncová situácia

Robot Karel sa na konci nachádza na juhovýchode.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (9, 1)   EAST      30         0
ST.+-----------------------------------+
 8 | .   .   .   .   .   .   .   .   . |
   |---+----   +---+----   +---+----   |
 7 | . | 1   . | . | 1   . | . | 1   . |
   |---+----   +---+----   +---+       |
 6 | . | 1   . | . | 1   . | . | 1   . |
   |---+----   +---+----   +---+       |
 5 | . | 1   . | . | 1   . | . | .   . |
   |---+       +---+----   +---+       |
 4 | . | 1   . | . | 1   . | . | .   . |
   |---+----   +---+----   +---+       |
 3 | . | 1   . | . | 1   . | . | .   . |
   |---+----   +---+----   +---+       |
 2 | . | 1   . | . | .   . | . | .   . |
   |---+----   +---+----   +---+----   |
 1 | .   .   .   .   .   .   .   .   > |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.

11: Triedenie 2

Vašou úlohou je naučiť robota Karla triediť rady vytvorené zo značiek vzostupne (od najnižšieho po najvyšší). Každý rad sa začína na najspodnejšom riadku sveta a je zložený zo značiek nachádzajúcich sa v rovnakom stĺpci. Ak je teda rad vysoký 7 značiek, znamená to, že v jednom stĺpci sa nachádza 7 po sebe idúcich značiek. Vo svete sa nenachádzajú žiadne ďalšie steny.

Nezabudnite, že nie je povolené používať premenné.

Počiatočná situácia

Karel sa na začiatku môže nachádzať na ľubovoľnej pozícii a v batohu nemá žiadne značky.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (4, 3)   NORTH      0         1
ST.+-----------------------------------+
 7 | .   .   .   .   .   .   .   .   . |
   |                                   |
 6 | .   .   .   .   .   .   .   .   . |
   |                                   |
 5 | .   .   .   .   .   .   1   .   . |
   |                                   |
 4 | .   .   .   1   .   .   1   .   . |
   |                                   |
 3 | .   1   .   ^   .   .   1   .   . |
   |                                   |
 2 | .   1   1   1   .   1   1   .   . |
   |                                   |
 1 | .   1   1   1   .   1   1   1   . |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.
Koncová situácia

Karel sa na konci nachádza v pravom dolnom rohu sveta otočený smerom na východ. Všetky rady sú zotriedené od najnižšieho po najvyšší, pričom najvyšší rad je najvýchodnejší.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (9, 1)   EAST       0         0
ST.+-----------------------------------+
 7 | .   .   .   .   .   .   .   .   . |
   |                                   |
 6 | .   .   .   .   .   .   .   .   . |
   |                                   |
 5 | .   .   .   .   .   .   1   .   . |
   |                                   |
 4 | .   .   .   .   .   1   1   .   . |
   |                                   |
 3 | .   .   .   .   1   1   1   .   . |
   |                                   |
 2 | .   .   1   1   1   1   1   .   . |
   |                                   |
 1 | .   1   1   1   1   1   1   .   > |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.

12: Upratovanie v šatníku

Karel bol upozornený svojou manželkou, aby si spravil poriadok v šatníku. V stĺpcoch mapy visia kusy oblečenia, ktoré sú zavesené na vešiaku. Karel má za úlohu urovnať si veci v šatníku tak, aby viseli od najdlhších po najkratšie v smere sprava doľava. Veci môžu visieť iba na vešiaku, pričom šatník môže obsahovať deliace priečky, ktoré môžu vešiak rozdeliť na viac častí. Karel sa po úspešnom prataní vracia na svoju pôvodnú pozíciu.

Nezabudnite, že nie je povolené používať premenné.

Počiatočná situácia

Karel sa na začiatku nachádza na začiatku toho riadku, na ktorom visia značky a v batohu nemá žiadne značky.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (1, 6)   EAST       0         0
ST.+-----------------------------------+
 7 | .   .   .   .   .   .   .   .   . |
   |   +-------+   +-----------+   +---|
 6 | >   .   1   .   1   1   1   .   1 |
   |                                   |
 5 | .   .   1   .   1   1   1   .   1 |
   |                                   |
 4 | .   .   1   .   .   .   1   .   1 |
   |                                   |
 3 | .   .   1   .   .   .   1   .   . |
   |                                   |
 2 | .   .   .   .   .   .   1   .   . |
   |                                   |
 1 | .   .   .   .   .   .   .   .   . |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.
Koncová situácia

Po poupratovaní sa Karel presunie späť na svoju východziu pozíciu.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (1, 6)   EAST       0         0
ST.+-----------------------------------+
 7 | .   .   .   .   .   .   .   .   . |
   |   +-------+   +-----------+   +---+
 6 | >   .   1   .   1   1   1   .   1 |
   |                                   |
 5 | .   .   1   .   1   1   1   .   1 |
   |                                   |
 4 | .   .   .   .   .   1   1   .   1 |
   |                                   |
 3 | .   .   .   .   .   .   1   .   1 |
   |                                   |
 2 | .   .   .   .   .   .   .   .   1 |
   |                                   |
 1 | .   .   .   .   .   .   .   .   . |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.

13: Zlý pes

Karel si kúpil psa. Keď sa vrátil po nákupe domov, nielenže poroznášal topánky, ale niektoré aj rozkúsal. Poškodené topánky sú označené počtom značiek vačším ako 1 (na základe počtu rozkusnutých častí). Topánku vcelku označuje 1 položená značka. Karel má miesto pre topánky pri severnej stene. Topánky sú poukladané v pároch od pravého horného rohu a medzi nimi je vždy práve 1 medzera. Karlovou úlohou je poukladať topánky na ich miesto, avšak poškodené PÁRY ku stene neodkladá, ale berie si ich do vaku a musí ich neskôr odniesť do opravy.

Nezabudnite, že nie je povolené používať premenné.

Počiatočná situácia

Karel môže začínať upratovať izbu z ľubovoľnej pozície.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (4, 2)   EAST       0         0
ST.+-----------------------------------+
 6 | .   .   .   .   1   .   .   .   1 |
   |                                   |
 5 | .   1   .   .   .   .   .   .   . |
   |                                   |
 4 | .   .   2   .   .   1   .   1   . |
   |                                   |
 3 | .   .   1   .   .   .   .   .   . |
   |                                   |
 2 | .   1   .   >   .   1   .   .   . |
   |                                   |
 1 | .   .   .   .   .   .   .   .   1 |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.
Koncová situácia

Všetky páry topánok sú poukladné pri severnej stene. Ak sa nezmestia do riadku, Karel ich ukladá ďalej na ďalšom riadku. Vždy však musia byť pri sebe dve topánky tvoriace jeden pár. Karel stojí na začiatku POSLEDNÉHO radu s topánkami a pozerá sa, ako sa mu ich podarilo pekne poukladať. Napr. ak Váš posledný rad začína na pozícii 8, tak Karel stojí na pozícii 7.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (7, 5)   EAST       3         0
ST.+-----------------------------------+
 6 | .   1   1   .   1   1   .   1   1 |
   |                                   |
 5 | .   .   .   .   .   .   >   1   1 |
   |                                   |
 4 | .   .   .   .   .   .   .   .   . |
   |                                   |
 3 | .   .   .   .   .   .   .   .   . |
   |                                   |
 2 | .   .   .   .   .   .   .   .   . |
   |                                   |
 1 | .   .   .   .   .   .   .   .   . |
   +-----------------------------------+
     1   2   3   4   5   6   7   8   9   AVE.

14: Oprava Krásnej Hôrky

Karel bol najatý, aby pomohol opraviť škody spôsobené na hrade Krásna Hôrka. Karel má teda opraviť sadu kamenných pilierov (samozrejme reprezentovaných značkami), v ktorých niektoré kamene chýbajú. Po skončení opráv budú všetky chýbajúce diery v stĺpoch opäť zaplnené. Stĺpy sú rôzne vysoké a sú od seba rôzne vzdialené.

Nezabudnite, že nie je povolené používať premenné.

Počiatočná situácia

Karel začína v juhozápadnom rohu sveta otočený smerom na východ.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (1, 1)   EAST      99         1
ST.+-------------------------------------------+
 8 | .   .   .   .   .   .   .   .   .   .   . |
   |       +---+                       +---+   |
 7 | .   . | . | .   .   .   .   .   . | . | . |
   |   +---+   +---+   +-------+   +---+   +---|
 6 | . | .   .   . | . | .   . | . | .   .   1 |
   |---+           +---+       +---+           |
 5 | 1   .   .   .   .   .   .   1   .   .   1 |
   |                                           |
 4 | .   .   .   .   1   .   .   .   .   .   . |
   |                                           |
 3 | .   .   .   .   .   .   .   1   .   .   1 |
   |                                           |
 2 | .   .   .   .   1   .   .   .   .   .   . |
   |                                           |
 1 | >   .   .   .   1   .   .   .   .   .   1 |
   +-------------------------------------------+
     1   2   3   4   5   6   7   8   9   10  11  AVE.
Koncová situácia

Karel končí v juhovýchodnom rohu sveta otočený smerom na východ.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (11, 1)  EAST      88         1
ST.+-------------------------------------------+
 8 | .   .   .   .   .   .   .   .   .   .   . |
   |       +---+                       +---+   |
 7 | .   . | . | .   .   .   .   .   . | . | . |
   |   +---+   +---+   +-------+   +---+   +---|
 6 | . | .   .   . | . | .   . | . | .   .   1 |
   |---+           +---+       +---+           |
 5 | 1   .   .   .   1   .   .   1   .   .   1 |
   |                                           |
 4 | 1   .   .   .   1   .   .   1   .   .   1 |
   |                                           |
 3 | 1   .   .   .   1   .   .   1   .   .   1 |
   |                                           |
 2 | 1   .   .   .   1   .   .   1   .   .   1 |
   |                                           |
 1 | 1   .   .   .   1   .   .   1   .   .   > |
   +-------------------------------------------+
     1   2   3   4   5   6   7   8   9   10  11  AVE.

15: Vianočný stromček

Robot Karel sa pripravuje na Vianoce. Napíšte program, pomocou ktorého pomôžete Karlovi ozdobiť vianočný strom, ak strom je už postavený. Ozdoby (značky) nech sa nachádzajú na kraji vetiev stromu a vrchol stromu nech zdobí dvojnásobná značka. Platí, že spodná vetva stromu môže byť umiestnená ľubovoľne vysoko a jednotlivé vetvy stromu môžu byť od seba (vertikálne) ľubovoľne vzdialené.

Nezabudnite, že nie je povolené používať premenné.

Počiatočná situácia

Karel začína v juhozápadnom rohu sveta otočený na východ. V batohu má dostatočný počet značiek.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (1, 1)   EAST      99         0
ST.+-----------------------------------------------+
 7 | .   .   .   .   .   .   .   .   .   .   .   . |
   |                                               |
 6 | .   .   .   .   .   .   .   .   .   .   .   . |
   |                   |   |                       |
 5 | .   .   .   .   . | . | .   .   .   .   .   . |
   |               ----+   +----                   |
 4 | .   .   .   .   . | . | .   .   .   .   .   . |
   |           --------+   +--------               |
 3 | .   .   .   .   . | . | .   .   .   .   .   . |
   |       ------------+   +------------           |
 2 | .   .   .   .   . | . | .   .   .   .   .   . |
   |   ----------------+   +----------------       |
 1 | >   .   .   .   . | . | .   .   .   .   .   . |
   +-----------------------------------------------+
     1   2   3   4   5   6   7   8   9   10  11  12  AVE.
Koncová situácia

Karel končí v juhovýchodnom rohu sveta otočený na východ.

 CORNER  FACING  BEEP-BAG  BEEP-CORNER
 (12, 1)  EAST      89         0
ST.+-----------------------------------------------+
 7 | .   .   .   .   .   .   .   .   .   .   .   . |
   |                                               |
 6 | .   .   .   .   .   2   .   .   .   .   .   . |
   |                   |   |                       |
 5 | .   .   .   .   1 | . | 1   .   .   .   .   . |
   |               ----+   +----                   |
 4 | .   .   .   1   . | . | .   1   .   .   .   . |
   |           --------+   +--------               |
 3 | .   .   1   .   . | . | .   .   1   .   .   . |
   |       ------------+   +------------           |
 2 | .   1   .   .   . | . | .   .   .   1   .   . |
   |   ----------------+   +----------------       |
 1 | .   .   .   .   . | . | .   .   .   .   .   > |
   +-----------------------------------------------+
     1   2   3   4   5   6   7   8   9   10  11  12  AVE.

Doplňujúce zdroje

  1. Karel Language Reference
  2. Version Control
  3. Tu nájdete knižnicu robota Karla, vrátane návodu na inštaláciu knižnice