Autorské riešenie
Jaskyniari namerali hodnoty dĺžok stalagmitov a stalagtitov, ktoré sú uložené v dvoch zoznamoch. Na to, aby sme vyriešili túto úlohu, potrebujeme nájsť najmenšiu medzeru medzi jednotlivými stalagmitmi a stalagtitmi. Z predchádzajúceho obrázka je zrejmé, že napríklad medzeru medzi prvou dvojicou vypočítame tak, že od výšky jaskyne odpočítame dĺžku prvého stalagmitu a prvého stalagtitu:
urobTu "prvaHodnota prvok 1 :dlzkaStalagmitov
urobTu "druhaHodnota prvok 1 :dlzkaStalagtitov urobTu "medzera (vyska - :prvaHodnota - :druhaHodnota) Takto postupne prejdeme každú dvojicu kvapľov (ich počet je uložený v globálnej premennej :n) a spomedzi všetkých medzier nájdeme tú najmenšiu:
urobTu "minimum 400
opakuj :n [ urobTu "prvaHodnota prvok pocitadlo :dlzkaStalagmitov urobTu "druhaHodnota prvok pocitadlo :dlzkaStalagtitov urobTu "medzera (vyska - :prvaHodnota - :druhaHodnota) ak (:medzera < :minimum) [ urobTu "minimum :medzera ] ] Netreba zabudnúť na to, že kvaple rastú proti sebe. Preto sa táto medzera skráti o 2 korytnačie kroky už za jeden rok. Počet rokov do prvého spojenia následne vypočítame a zapíšeme do textového poľa takýmto jednoduchým príkazom:
doba'nechHodnota :minimum/2
Na záver už len potrebujeme postupné narastanie dĺžky kvapľov aj graficky znázorniť. Ak využijeme príkazy, pomocou ktorých sa tieto kvaple pôvodne vykreslili, tak naprogramovaná animácia môže mať takúto podobu:
urobTu "aktualnyrok 0
opakuj doba [ urobtu "x -300 urobTu "y -200 ph nechXYsur :x :y pd urobTu "aktualnyrok :aktualnyrok + 1 rok'nechHodnota pocitadlo opakuj :n [ urobTu "hrubka prvok pocitadlo :hrubkaStalagmitov urobTu "dlzka prvok pocitadlo :dlzkaStalagmitov urobTu "dlzka :dlzka + :aktualnyrok cencul :x :y :hrubka :dlzka urobTu "x :x + (600/:n) ] urobtu "x -300 urobTu "y 200 vp 180 ph nechXYsur :x :y pd opakuj :n [ urobTu "hrubka prvok pocitadlo :hrubkaStalagtitov urobTu "dlzka prvok pocitadlo :dlzkaStalagtitov urobTu "dlzka :dlzka + :aktualnyrok cencul :x :y :hrubka :dlzka urobTu "x :x + (600/:n) ] vp 180 cakaj 500 ] Vaše zaujímavé riešenia: Úlohu riešili 3 tímy, prvý z nich vyriešil úlohu úplne (dokonca doplnil aj zaokrúhľovanie výsledného počtu rokov a riešenie detailne okomentoval). Druhý tím úlohu takisto vyriešil správne, avšak v riešení chýbalo postupné vykresľovanie narastania kvapľov v jednotlivých rokoch. Tretí tím svoje riešenie nestihol, avšak prvé príkazy naznačovali, že ich myšlienka hľadania veľkosti medzier smeruje na prehľadávanie celej plochy obrazovky. | ||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |