Autorské riešenie Kamene na chodníkoch majú rovnakú dĺžku a chodník sa môže zalomiť len medzi dvom kameňmi. Mohlo by sa nám teda zdať, že korytnačka môže chodiť krokmi dĺžky 20 (rovnako ako dĺžka kameňov). To však nie je správna úvaha. Stačí, ak sa pozriete na obrázok vpravo. Ak by sa chodník takto prudko zatáčal, korytnačka by mohla nechtiac vyrobiť skratku. Korytnačka by teda mala chodiť menším krokom. Krok by však mal mať takú dĺžku, aby jej na koniec kameňa vždy vyšiel celý krok. Zároveň to musí byt taká dĺžka, aby bola deliteľom čísla 100, pretože každých 100 bodov korytnačka kreslí značku. Najdlhší krok, ktorým sa korytnačka takto môže pohybovať má dĺžku 10. Chodník budeme značkovať pomocou modrého bodu veľkosti 10 - vykreslíme ho pomocou procedúry
značka. viem znacka
pd nechfp "modrá bod 10 ph koniec Prvý krát vykreslí korytnačka značku hneď na začiatku trasy. Počítadlo krokov, premennú vzdialenost si nastaví na 0. Pri ďalšom postupe potrebuje korytnačka zistiť, ktorým smerom bude pokračovať - priamo (teda bude pokračovať v doterajšom smere), vľavo alebo doprava. Korytnačka spraví krok dopredu. Ak je možné pokračovať týmto smerom (farbabodu="biela), upravíme prejdenú vzdialenosť (urobtu "vzdialenost :vzdialenost+10). Otestujeme, či to bol stý krok. Ak áno, korytnačka urobí značku a počítadlo vzdialenosti nastaví na 0. Ak sa nedá pokračovať rovnakým smerom, korytnačka sa vráti a urobí značku (chodník sa tu určite zalamuje, vpravo alebo vľavo). Teraz korytnačka skúsi, či chodník nepokračuje vľavo. Otočí sa vľavo a spraví krok. Ak chodník nepokračuje týmto smerom (farbabodu<>"biela), vráti sa spraví krok opačným smerom (tento musí byť už určite správny, pretože iný už neexistuje). Či už vpravo, alebo vľavo, korytnačka spravila krok. Upraví teda ešte hodnotu premennej vzdialenost (urobtu "vzdialenost 10). Tento postup opakuje korytnačka dovtedy, kým nepríde na druhú stranu (kym [xsur < 400]). Nesmie však zabudnúť spraviť poslednú značku na konci cesty. Celé riešenie môže vyzerať
takto:
viem znackuj
ph urobtu "vzdialenost 0 znacka kym [xsur < 400] [do 10 ak2 farbabodu="biela [urobtu "vzdialenost :vzdialenost+10 ak :vzdialenost=100 [znacka urobtu "vzdialenost 0] ] [vz 10 znacka vl 90 do 10 ak farbabodu<>"biela [vz 10 vp 180 do 10 ] urobtu "vzdialenost 10 ] ] znacka koniec Najčastejšie chyby, komentár k vašim riešeniam Pri čítaní zadania úlohy si väčšina z vás nevšimla, že po označení miesta na chodníku, kde sa mení smer cesty (doľava alebo doprava) postupuje značkár podľa pravidla číslo 2. Teda, začína znovu rátať počet krokov. Z tejto nepozornosti vyplynulo nesprávne značkovanie chodníka. Pre ukončenie značkovania ste používali rôzne postupy (nie vždy funkčné) - najjednoduchším bolo testovanie x-ovej súradnice korytnačky. Výsledkom bola zmätene pobehujúca korytnačka alebo koncová značka mimo turistického chodníka. A na záver - niektoré tímy boli také natešené, že korytnačka správne značkuje cestu, že zabudli označiť koniec chodníka. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Koąiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |