Autorské riešenie
[stiahni]

V tejto úlohe využijeme náhodu. Necháme počítač, aby sám vymýšľal aké veľké kruhy a kde nakreslí. Úlohu môžeme riešiť dvoma spôsobmi. 

  1. Necháme počítač, aby náhodne vymyslel priemer kruhu a miesto na obrazovke. Potom otestujeme, či sa takýto kruh vojde celý na obrazovku. Keď ich budeme mať 100, skončíme.
  2. Necháme počítač aby vymyslel priemer kruhu, ktorý sa určite vojde na obrazovku. Potom ho necháme vymyslieť súradnice kruhu na obrazovke tak, aby sa celý kruh vošiel na obrazovku. Keď ich bude 100, skončíme.

V prvom prípade by riešenie nebolo veľmi komplikované. Mohlo by sa však stať, že počítač by stále vymýšľal kruhy, ktoré sa na obrazovku nevojdú. Bolo by to príliš veľa zbytočnej práce.

V druhom prípade budeme musieť trochu porozmýšľať. Nebudeme však musieť žiadne vygenerované kruhy "zahodiť". Počítaču ušetríme množstvo zbytočnej roboty.

Na vymýšľanie náhodných čísel použijeme príkaz "náhodne". Procedúra náhodne vymýšľa náhodné nezáporné čísla a má jeden parameter, ktorý určuje, aké veľké majú byť vymyslené čísla. Napr. pomocou príkazu náhodne 10 počítač vymyslí náhodné číslo od 0 do 9. 

Rozmery stránky v prostredí Imagine (pokiaľ ich nezmeníme) sú 796x499. Najväčší kruh, ktorý sa vojde na obrazovku, môže mať priemer 499. Najmenší kruh, ktorý vieme zobraziť, má priemer 1. Ak použijeme "náhodne 499", naše kruhu budú mať priemer od 0 do 488. Upravíme preto generovanie priemerov nasledovne: urob "d 1+nahodne 499. Ku každému priemeru pripočítame teda ešte číslo 1. Výsledok priradíme do premennej d.

Ďalej potrebujeme vygenerovať umiestnenie kruhu tak, aby sa celý vošiel na obrazovku. Čim väčší kruh, tým menej možností kam ho umiestniť. 

Z celej šírky obrazovky (796) musíme odpočítať zľava aj sprava veľkosť polomeru kruhu (teda veľkosť priemeru). V tejto časti môže byť umiestnený náš kruh. Dostaneme teda nahodne (796-:d). Keďže stred (bod 0) je v strede stránky, musíme odpočítať polovicu šírky stránky. Pripočítame ešte polomer kruhu. Pre x-ovú súradnicu dostávame: nechXsur -398+:d/2+nahodne (796-:d).

Pre lepšie pochopenie to vysvetľuje nasledovný obrázok:

Podobne vygenerujeme aj y-ovú súradnicu. Celá procedúra potom vyzerá nasledovne:
 

viem setric
 opakuj 100
 [urob "d 1+nahodne 499
  nechXsur -398+:d/2+nahodne (796-:d)
  nechYsur -249+:d/2+nahodne (499-:d)
  nechFP ?
  nechhp :d
  bodka
 ]
koniec

 

Najčastejšie chyby

Najčastejšou chybou bolo, že vaše procedúry nikdy nevygenerovali niektoré z kruhov. V riešeniach niektorých z vás sa nikdy neobjavovali najväčšie kruhy. V iných riešeniach sa kruh nikdy nevygeneroval v rohoch stránky.