Autorské riešenie Úloha je zjednodušená tým, že stred taniera má súradnice [0,0]. Hľadanie stredu taniera teda v tejto úlohe odpadáva. Aby ste úlohu vyriešili, museli ste sa zamyslieť nad najdôležitejšou časťou tejto úlohy. Konkrétne, ako prehľadať celú plochu taniera a v prípade narazenia na farebné body vymyslieť správnu stratégiu spočítania zrniečok a ich roztriedenia do troch nádob. Začnime teda prehľadaním plochy taniera. Už v 2. kole v 4. úlohe o heliporte sme sa naučili, že korytnačka sa nemôže pohybovať pri prechádzaní plochy taniera ľubovoľne, ale len v smere zvislom alebo vodorovnom. Inak by hrozilo, že korytnačka sa dostane cez hranicu taniera a utečie mimo neho. Jeden z možných jej pohybov, aby však na tanieri nevynechala ani jeden bod, je znázornený na nasledujúcom obrázku. Pohyb je znázornený len symbolicky, korytnačka bude prehľadávať tanier bod po bode. Najprv teda presunieme korytnačku na začiatok prehľadávania, zároveň si pamätáme počet krokov, ktoré korytnačka vykoná zo stredu na okraj kružnice v premennej pocitadlo, v našom prípade napríklad takto:
vl 90 Zastavíme na hranici taniera a postupne prehľadáme všetky body v zvislom smere:
vp 90 Ak počas prehľadávanie natrafíme na farebný bod, našou úlohou je:
Čo však, ak sa do jedného radu zrniečka v niektorej z nádob nezmestia? V prípade keď je celý rad plný, začneme ukladať zrniečka do nového radu, inak sa len posunieme vyššie:
ak farbaBodu="zelena [ Celá procedúra prehladaj potom môže vyzerať nasledovne:
viem prehladaj Zaujímavé riešenia: Úlohu riešilo 8 tímov v kategórii expert a 4 tímy v kategórii profík. Niektorí z Vás použili zoznamy na reprezentáciu zrniečok v nádobách. Zrniečka ste do nádoby presúvali väčšinou pomocou jednej korytnačky, čo síce bolo ťažšie ako cez viac korytnačiek vytvorených osobitne pre každú nádobu, ale riešenia boli aj takto správne. Často ste navrhli prehľadávanie pomocou korytnačky, ktorá sa určitý čas pohybovala aj mimo plochy taniera, no výsledné riešenie bolo správne a keďže v zadaní nebolo presne určené, že korytnačka nesmie prehľadávať mimo taniera, body sme pridelili aj za takýto pohyb. Väčšinou ste riešili úlohu tak, že ste si najprv zistili polomer taniera a následne ste pomocou cyklu opakuj spustili prehľadávanie taniera 2*:polomer -1 krát. Jedno z riešení prehľadávalo plochu taniera pohybmi postupne od stredu taniera k okrajom taniera, čo vieme zapísať takýmto spôsobom:
opakuj 3600 [ Treba si však uvedomiť, že započítané zrniečka pri takomto pohybe o 0.1° vpravo musíme hneď vymazať, aby sa pri tomto pohybe nestalo, že korytnačka ich započíta viackrát. Najčastejšie chyby:
| ||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |