Autorské riešenie
[stiahni]

Úlohu vyriešime tak, že budeme vežu postupne vykresľovať vrstvu po vrstve. Na každej vrstve nakreslíme oranžový obdĺžnik. Na jeho hornom okraji vľavo a vpravo nakreslíme červené rovnostranné trojuholníky.

obrazok veže

Strana rovnostranného trojuholníka je rovnaká ako výška obdĺžnika. Jediné, čo potrebujeme určiť, je šírka obdlžníka na každej vrstve n-poschodovej veže. Ak označíme výšku obdĺžnika a, tak jeho šírka na n-tej vrstve bude (2n-1)a. Teraz už môžme vytvoriť príkaz stena na vykreslenie obdlžníka na n-tej vrestve, ktorý vyzerá nasledovne:

viem stena :n :a
  nechFv "oranzova
  urobTu "sirka (2*:n-1)*:a
  polygon [
    opakuj 2 [
    do :a
    vp 90
    do :sirka
    vp 90
    ]
  ]
koniec

Vykreslenie červenej strechy v tvare rovnostranného trojuholníka s dĺžkou a je veľmi jednoduché. Príkaz strecha na jej vykreslenie vyzerá nasledovne:

viem strecha :a
  nechFv "cervena
  polygon [
    opakuj 3 [do :a vp 120]
  ]
koniec

Keďže už máme vytvorené základné "stavebné kamene", použijeme ich pri vykreslení celej veže s n vrstvami. Výsledný príkaz kresli v cykle vykresľuje vežu vrstvu po vrstve:

viem kresli :n :a
  opakuj :n [
    stena :n+1-pocitadlo :a
    do :a
    vp 30
    strecha :a
    vp 60
    do (2*(:n+1-pocitadlo)-2)*:a
    vl 60
    strecha :a
    vp 60
    vz (2*(:n+1-pocitadlo)-3)*:a
    vl 90
  ]
koniec

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

Úlohu riešilo 6 tímov. Väčšina tímov riešila úlohu tak, že vežu vykresľovala zdola t.j. od najširšieho obdlžníka po najužší. Jeden tím vykresľoval vežu zhora nadol.

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

  • pri riešení ste používali globálne premenné namiesto lokálnych, t.j. v priradení ste použili príkaz urob namiesto príkazu urobTu,
  • v niektorých riešeniach sa vyskytli pomocné príkazy, ktoré nesúviseli s riešením, preto odporúčame aby ste nabudúce nepotrebné príkazy vymazali z projektu.