Autorské riešenie
[stiahni]

Riešenie tejto úlohy je pomerne jednoduché. Musíme si však veľmi dobre rozmyslieť ako budeme obrázok hôr analyzovať. Najlepším riešením bude, ak ho budeme analyzovať po stĺpcoch šírky 1 z zľava do doprava. Pozrite sa na obrázok jedného zo stĺpcov zobrazeného pod týmto textom. Pri každom stĺpiku budeme postupovať takto: prechádzam korytnačkou po jednom kroku zdola nahor cez hnedú a bielu farbu. Samozrejme nezabúdajme počítať počet krokov, aby sme vedeli o koľko krokov máme cúvnuť späť. Ak už na týchto farbách nebudeme, znamená to, že sme na modrej a to je zbytočné testovať, keďže sme už biely sneh odmerali. Odmerali sme ho testom takto: Ak stojím na bielej farbe tak premennú vyskaSnehu zvýšim(inkrementujem) o 1. Procedúra vyskaStlpca nám reprezentuje jeden stĺpik a výstupom tejto procedúry je výška snehu.

Postup riešenia procedúry vyskaStlpca je už popísaný vyššie. Tu vám len chcem dať do pozornosti dôvod prečo cyklus opakuj opakujeme 369 krát. Viete? No je to preto, že výška obrázka je 369. Vieme si to zisti?, ak v Imagine klikneme pravým tlačidlom na stránku a zistíme jej vzhľad. Čiže, ak cyklus zopakujeme 369, máme zaručené, že sme prešli celú výšku obrázka.

viem vyskaStlpca
   urobTu "vyskaSnehu 0
   urobTu "pocetKrokov 0
   kym [alebo farbaBodu = "hneda farbaBodu = "biela] [
       do 1
      urobTu "pocetKrokov :pocetKrokov+1
      ak farbaBodu = "biela [
         urobTu "vyskaSnehu :vyskaSnehu+1
      ]
   ]
   vzad :pocetKrokov
   vysledok :vyskaSnehu
koniec  

Pokračujeme ďalej. :) Už máme funkčnú procedúru výskaStlpca. Na úvod novej procedúry snehoveSpravy si inicializujeme dve premenne: min a max. Minimum na 400 a maximum na 0. Ďalej prechádzame celý obrázok z zľava doprava po stĺpcoch v cykle 800 krát, lebo šírka obrázka je 800. Pýtame sa: Je výška snehu zo stĺpca väčšia ako naše max? Ak áno do maxima priradím tuto hodnotu. Je výška snehu zo stĺpca menšia ako naše min? Ak áno do minima priradím tuto hodnotu. Po prejdení celého obrázka máme v min najmenšiu hodnotu a v max najväčšiu hodnotu. U? ich iba vypíšme a je to :)"

viem snehoveSpravy
   urobTu "min 400
   urobTu "max 0

   opakuj 800 [
       vp 90
       do 1
       vl 90
       urobTu "aktualnaVyska vyskaStlpca

       ak :aktualnaVyska < :min [
          urobTu "min :aktualnaVyska
      ]
       ak :aktualnaVyska > :max [
          urobTu "max :aktualnaVyska
       ]

   ]
   vl 90
    do 800
    vp 90
   pis "|Minimálna vý?ka snehu je |
   pis :min
   pis "|Minimálna vý?ka snehu je |
    pis :max
koniec

Vaše zaujímavé riešenia a najčastejšie chyby

...