Autorské riešenie
[stiahni imp : py]

  • Počet riešiteľov: 20/23 = 87%

  • Úspešnosť riešenia: 1/3 = 33%

Pri pohľade na obrázok si v prvom rade treba uvedomiť že zdanlivá pyramída pozostáva z troch ramien. Na nakreslenie ramena si vytvoríme samostatnú procedúru. Pri riešení v Imagine, nemôžeme zabudnúť na to, že polygón v sebe nemá rád výpočty. Včetky hodnoty si preto musíme vypočítať vopred.

alternatívny text k obrázku

Hrúbku ramena si určíme ako 1/8 z pôvodnej veľkosti ramena. Rameno vykreslíme tak, ako je zobrazené na obrázku. Následne pomocou cyklu nakreslíme celkový útvar. Farby si uložíme do zoznamu (prípad python), alebo využijeme vnorené podmienky aby sme ich mohli v cykle postupne obmienať.

;Imagine logo
viem rameno :farba :dlzka
  urobTu "sirka :dlzka/8
  urobTu "dlzkaminussirka :dlzka-:sirka

  urobTu "dlzkaminus3sirka :dlzka-3*:sirka
  nechfv :farba
  polygon[
    do :dlzka
    vl 120
    do :dlzkaminussirka
    vl 120
    do :sirka
    vl 60
    do :dlzkaminus3sirka
    vp 120
    do :dlzkaminussirka
    vl 120
    do :sirka
    vl 60
  ]
koniec

viem pyramida :dlzka :farba1 :farba2 :farba3
  opakuj 3[
    ak2 pocitadlo = 1[
      rameno :farba1 :dlzka][
       ak2 pocitadlo=2 [
         rameno :farba2 :dlzka][
         rameno :farba3 :dlzka]]
     do :dlzka
     vl 60
     do :dlzka/8
     vl 60
  ]
koniec
import turtle

kor = turtle.Turtle()
plocha = turtle.Screen()

def pyramida (dlzka, farba1,farba2, farba3):
   farby= [farba1,farba2, farba3]
   for i in range(0,3):
       rameno(farby[i], dlzka)
       kor.forward(dlzka)
       kor.left(60)
       kor.forward(dlzka/8)
       kor.left(60)

def rameno(farba, dlzka):
    sirka = dlzka/8
    kor.pen(fillcolor=farba)
    kor.begin_fill()
    kor.forward(dlzka)
    kor.left(120)
    kor.forward(dlzka - sirka)
    kor.left(120)
    kor.forward(sirka)
    kor.left(60)

    kor.forward(dlzka - (3*sirka))

    kor.right(120)
    kor.forward(dlzka - sirka)
    kor.left(120)
    kor.forward(sirka)
    kor.left(60)

    kor.end_fill()


pyramida(100, "yellow", "blue", "green")
kor.getscreen()._root.mainloop()

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

Mnoho riešení bolo veľmi pekných, mali pridané tlačidlá na spúšťanie pocedúry a prehľadný kód. Veľmi častou chybou bolo to, že pyramída nebola vyfarbená.