Autorské riešenie
[stiahni]

Základom riešenia problému je vykreslenie cukríka pomocou procedury kresli_cukrik.

viem kresli_cukrik
  ;vykreslenie papierika
  nechHp 5
  nechFp "fialová
  pd
  do 50
  do -50
  ;vykreslenie náplne cukríka
  nechHp 50
  nechFp "belasá
  ph
  do 25
  bod 25
  do -25
koniec

Pravidelné usporiadanie ľubovoľného počtu cukríkov dosiahneme, ak zopakujeme vykreslenie jedného cukríka s posunutím, či natočením korytnačky. Z nesmierného množstva riešení vyberáme riešenia s obrázkami typu "slnečné lúče" a "rad stromov" .

kruh1

viem usporiadaj1 :pocet
  opakuj :pocet [
    do 50
    kresli_cukrik
    do -50
    vp 360/:pocet
  ]
koniec

vodorovne1

viem usporiadaj2 :pocet
  opakuj :pocet [
    kresli_cukrik
    vp 90
    do 25
    vl 90
  ]
koniec

kruh2

viem usporiadaj3 :pocet
  opakuj :pocet [
    kresli_cukrik
    do 75
    vp 360/:pocet
  ]
koniec

vodorovne2

viem usporiadaj4 :pocet
  opakuj :pocet [
    kresli_cukrik
    do 75
    vl 90*(1-2*(zvysok pocitadlo 2))
  ]
koniec

Pre zobrazenie pestrofarebných cukríkov môžeme použiť náhodnú farbu pomocou príkazu nechFp ?.

Ak chceme meniť dlžku cukríka, šírku jeho papierika, priemer kruhu cukríka a tiež jeho farby, mali by sme v procedúrach zaviesť viaceré parametre.

viem kresli_cukrik :dlzka :hrubka1 :hrubka2 :farba1 :farba2
  ;vykreslenie papierika
  nechHp :hrubka1
  nechFp :farba1
  pd
  do :dlzka
  do -:dlzka
  ;vykreslenie náplne cukríka
  nechHp :hrubka2
  nechFp :farba2
  ph
  do :dlzka/2
  bod :hrubka2
  do -:dlzka/2
koniec

viem usporiadaj1 :pocet :dlzka :hrubka1 :hrubka2 :farba1 :farba2
  opakuj :pocet [
    do :dlzka
    kresli_cukrik :dlzka :hrubka1 :hrubka2 :farba1 :farba2
    do -:dlzka
    vp 360/:pocet
  ]
koniec

Podľa zobrazených cukríkov sa nedá s istotou povedať, koľko má mamka korytnačka detí. Jedným dôvodom môže byť prekrývanie cukríkov. Ďalším dôvodom nespravodlivé rozdelenie cukríkov. Ak sa však cukríky neprekrývajú a mamka dá každému dieťaťu rovnaký počet cukríkov, tak počet detí musí byť deliteľom počtu cukríkov. V našom prípade, keď máme 12 cukríkov, detí môže byť 1, 2, 3, 4, 6 alebo 12.

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

Do riešenia tejto úlohy sa pustilo 11 tímov. Zaujali nás vaše rozmanité riešenia - cukríky ste rozmiestňovali priamočiaro vodorovne, aj šikmo, niektorí do obdlžníkového usporiadania. Nikto zo súťažiacich nerozmiestňoval cukríky do kruhu. Obrázky z vašich riešení môžete nájsť v galérii. Pri tejto úlohe bolo prirodzené vytvoriť procedúru na vykreslenie cukríka, čo väčšina súťažiacich aj urobila.

Najčastejšie nedostatky, ktorých ste sa dopustili vo svojich riešeniach a naše odporúčania:

  • niektorí nepochopili zadanie, že rozmiestnenie cukríkov musí byť pravidelné a v riešení používali náhodné posuny a otočenia,
  • niektorí vyriešili úlohu pre konkrétny počet cukríkov, nie pre ľubovoľný zadaný počet cukríkov,
  • niektorí nepoužili procedúru s parametrom a počet cukríkov generovali náhodne, čo neumožňuje používateľovi zadať počet cukríkov,
  • pre zvýšenie prehľadnosti zápisov procedúr odporúčame zapisovať jednotlivé príkazy do samostatných riadkov s rovnakým odsadením od okraja,
  • pri výpočtoch ste používali globálne premenné namiesto lokálnych t.j. použili ste príkaz urob namiesto príkazu urobTu,
  • pri zdôvodňovaní, či sa dá určiť počet detí, ste zabudli na to, že cukríky sa môžu prekrývať,
  • len niektorí uviedli, že pri spravodlivom rozdelení cukríkov bude počet detí deliteľom počtu cukríkov,
  • niektorí uviedli len odpoveď bez zdôvodnenia alebo napísali gramaticky nesprávnu a nepochopiteľnú vetu.