Autorské riešenie Pokúsime sa využiť len tie príkazy, ktoré konštruktéri do systému zabudovali. Prejsť celú miestnosť je možné niekoľkými spôsobmi. Vybrať by sme mali však taký, aby spotreba energie bola čo najmenšia. Prejazd po rovnakých miestach obmedzíme čo najviac. Využijeme to, že aj vysávač aj miestnosť majú tvar osemuholníka s rovnakými uhlami vo vrcholoch. Dáme pozor na to, že miestnosť nie je pravidelný osemuholník. Vysávač môže prejsť miestnosťou napr. takto:
Najskôr bude prechádzať po vodorovných pásoch sprava doľava a naopak. Pri stene sa otočí, posunie popri stene o šírku pása (tá je 31, rovnako ako šírka vysávača) a pokračuje k druhej stene. Keďže pri stenách, tam kde sa otáčal, ostanú nepovysávané časti, nakoniec ešte obíde celu miestnosť po obvode. Do ktorej steny vysávač narazil a ako sa má otočiť aby mohol pokračovať ďalej zistíme podľa toho, ktoré zo senzorov sa aktivovali. Pri náraze do steny sa vysávač bude snažiť posunúť popri stene tak, aby pri ceste na druhú stranu izby nešiel už po povysávanej časti. Musí sa teda posunúť smerom hore (podľa obrázka) o 31 krokov. Pri každom náraze sa vynuluje premenná trasa a kým počet krokov nie je 31, vysávač bude pokračovať popri stene. Ak vysávač povysáva celé vnútro prejde ešte po obvode miestnosti. To, že už je celé vnútro povysávané zistí vysávať podľa toho, že po náraze už nemá kam pokračovať. viem vysavaj Najčastejšie chyby, komentár k vašim riešeniam Najväčší problém ste mali s tým, ako naplánovať vysávanie izby. Niektorí zvolili stratégiu pohybu po špirále z približného stredu miestnosti. Nápad to nie je zlý, ale ak je miestnosť pretiahnutá, tak popri stenách na dlhšej strane prejde vysávač zbytočne veľa krát. Navyše nevieme odhadnúť koľko krát sa má vysávač otočiť. Pri opačnej stratégii, špirále smerom dovnútra, sa vám stalo, že v strede ostala časť miestnosti nepovysávaná. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |