Autorské riešenie
[stiahni]

Najprv si nakreslíme zástavu a vyznačíme v potrebné vzdialenosti - polomery kruhov, vzdialenosti kruhov od okrajov. Na základe uvedeného nákresu vieme vypočítať veľkosť polomeru kruhu (r = šírka/6) a výšku zástavy (r*(4+sqrt 3)).

obrazok zastavy s vyznacenymi vzdialenostami

Postupne vykreslíme obdĺžnik so zadanou šírkou a vypočítanou výškou. Ďalej budeme vykresľovať jednotlivé kruhy - najprv dolný, potom ľavý horný a napokon pravý horný. Výsledný príkaz kresli môže vyzerať nasledovne:

viem kresli :sirka
  ;výpočet polomeru kruhu a výšky zástavy
  urobTu "r :sirka/6
  urobTu "vyska :r*(4+sqrt 3)

  ;vykreslenie podkladu zástavy
  nechFv "belasa11
  polygon [
    opakuj 2 [
      do :vyska
      vp 90
      do :sirka
      vp 90
    ]
  ]

  ;vykreslenie spodného kruhu
  nechFp "belasa8
  ph
  vp 90
  do :sirka/2
  vl 90
  do 2*:r
  bod 2*:r

  ;vykreslenie ľavého horného kruhu
  vl 30
  do 2*:r
  bod 2*:r

  ;vykreslenie pravého horného kruhu
  vp 120
  do 2*:r
  bod 2*:r

  ;návrat korytnačky na začiatok kreslenia - do ľavého dolného rohu zástavy
  vp 120
  do 2*:r
  vl 30
  do 2*:r
  vp 90
  do :sirka/2
  vp 90
koniec

Pri vykresľovaní zástavy sa môže pri niektorých hodnotách šírky zástavy stať, že sa nebudú jednotlivé kruhy presne dotýkať. Aj keď je uvedený správny algoritmus, pri zobrazovaní bodov na obrazovke monitora môžu byť vďaka zaokrúhľovaniu čísel niektoré hodnoty pixelov iné ako by sme očakávali.

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

Najčastejšie nedostatky, ktorých ste sa dopustili vo svojich riešeniach:

  • Najčastejšie vaše chyby boli, že ste si nevypočítali výšku zástavy a tým pádom pozícia kruhov nemala rovnakú vzdialenosť od všetkých krajov zástavy ako to bolo uvedené v zadaní. Väčšina z vás vykresľovala zástavu ako štvorec.
    Najkrajšie riešenia mali Baša a Saša a Korytnacky. Gratulujeme!