Autorské riešenie
[stiahni]

Každý z nás vie nakresliť špirálu ceruzkou na papier. V prostredí Imagine je to veľmi podobné. Je potrebné si uvedomiť, že každá hrana špirály je od predchádzajúcej o niečo dlhšia. Napríklad o 10. To znamená, že prvá hrana má dĺžku 10, druhá 20, tretia 30 atď.

Dĺžku hrany, ktorú korytnačka kreslí, si môžeme uložiť do premennej dlzka. Po nakreslení jednej hrany hodnotu premennej zvýšime o 10.
 

urob "dlzka 10
urob "dlzka :dlzka+10
....
urob "dlzka :dlzka+10
  

Tieto príkazy použijeme pri vykreslení špirály. Kreslíme "hranatú" špirálu, pri ktorej použijeme takúto postupnosť príkazov:
 

do :dlzka
vl 90
urob "dlzka : dlzka +10

V zadaní úlohy nie je presne povedané, koľko hrán má táto špirála mať. Kreslenie hrany špirály budeme opakovať v cykle. Keďže pozadie sa stále mení, nevieme presne koľko hrán bude špirála mať. Kreslenie hrany budeme opakovať dovtedy, pokiaľ sa špirála vojde do nakresleného útvaru. To znamená, že korytnačka bude na bielom pozadí. Ak korytnačka vkročí na fialovú farbu ("modra11), tak sa vykresľovanie ukončí. Prvé riešenie by teda mohlo vyzerať takto:
 

viem spirala
 urob "dlzka 10
 kym [farbaBodu<>"modrá11]
 [ do :dlzka
   vl 90
   urob "dlzka :dlzka+10
 ]
koniec

Ak by sme túto procedúru prepísali do prostredia Imagine, veľmi rýchlo by sme zistili, že nefunguje správne. Ak procedúru spustíme, sama od seba neskončí. Musíme ju ukončiť my. Dôvod je jednoduchý - ak korytnačka nakreslí čiaru, tak na nej zostane stáť. Farba čiary je čierna. Preto podmienka farbaBodu<>"modrá11 by bola vždy splnená.

Preto naše riešenie vylepšíme tak, že korytnačka sa pôjde pozrieť, či sa hrana dá nakresliť. Zdvihne pero, prejde o dĺžku hrany dopredu a zistí, na akej farbe stojí. Ak je splnená podmienka, vráti sa späť, položí pero dole a hranu nakreslí. Ak stojí na modrej, ostane stáť, podmienka v cykle nebude platiť a kreslenie špirály sa ukončí.
 

viem spirala
 nechFp "cierna
 urob "dlzka 1
 pd
 kym [farbaBodu<>"modrá11]
  [ph
   do :dlzka
   ak farbaBodu<>"modrá11
    [vz :dlzka
     pd
     do :dlzka
     vl 90
     urob "dlzka :dlzka+10
    ]
  ]
koniec

 

Vaše zaujímavé riešenia

Najlepšie riešenie tejto úlohy nám poslal tím Expert MoonLight.

 

Najčastejšie chyby

Najviac chýb ste spravili v tom, že posledná hrana špirály zasahuje do modrej farby pozadia. Skončili ste s vykresľovaním vtedy, keď ste sa dostali na modrú farbu. Správne ste však s vykresľovaním mali skončiť už pri predchádzajúcej hrane.