Problem Set 2: Pekný výhľad

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

Ak ste tak ešte nespravili, 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.

Problém

Karel sa nachádza v miestnosti, ktorá má zopár okien. Cez každé okno preniká do miestnosti svetlo, pričom jeho intenzita je vyjadrená hodnotou umiestnenou v danom okne. Pomôžte Karlovi nájsť okno, cez ktoré preniká do miestnosti najviac svetla.

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

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

Počiatočná situácia

Karel sa môže nachádzať na ľubovoľnej pozícii vnútri miestnosti.

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

Koncová situácia

Karel bude pozerať von oknom, cez ktoré prechádza najviac svetla do miestnosti. Na počte značiek v jeho batohu nezáleží. Na počte značiek na iných pozíciách nezáleží.

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

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ášho programu použite vo funkcii turnOn() názov mapy ps2.kw.

Odovzdávanie projektu

Zadanie odovzdajte do 05.11.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.

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

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

.
├── ps2
│   └── ps2.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
  • /ps2/ps2.c - Zdrojový kód riešenia úlohy.

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. 10 bodov. 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!

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