Autorské riešenie
Podľa zadania úlohy máme vytvoriť funkciu na vykreslenie polepu vznášadla šesťuholníkového tvaru, pričom každú vrstvu polepu tvoria kruhy s rovnakou farbou výplne. Táto funkcia by mala mať tri vstupné parametre: počet šesťuholníkových vrstiev, veľkosť kruhov (ich priemer) a zoznam striedajúcich sa farieb jednotlivých vrstiev.
Analýzou ilustračného obrázka vidíme, že prvá vrstva obsahuje 1 kruh, druhá 1*6, tretia 2*6 ... n-tá vrstva (n-1)*6 kruhov. Pozrime sa na jednu vrstvu. Na obrázku dole je zobrazená štvrtá vrstva. Na jej vykreslenie potrebujeme šesťkrát vykresliť tri kruhy v rade za sebou a otočiť sa vľavo o 60 stupňov.
Vo všeobecnosti na vykreslenie n-tej vrstvy potrebujeme šesťkrát vykresliť n - 1 kruhov v rade za sebou a otočiť sa vľavo o 60 stupňov. Funkcia kresli_vrstvu na vykreslenie jednej vrstvy môže vyzerať napr. nasledovne: def kresli_vrstvu(poradie_vrstvy, velkost, farba): for _ in range(6): for _ in range(poradie_vrstvy): turtle.forward(velkost) turtle.dot(velkost, farba) turtle.left(60) Výsledná funkcia kresli_navrh s tromi parametrami (počet vrstviev, priemer kruhu, zoznam farieb) spolu s pomocnými funkciami kresli_vrstvu a posun môže vyzerať napr. nasledovne: import turtle def kresli_vrstvu(poradie_vrstvy, velkost, farba): for _ in range(6): for _ in range(poradie_vrstvy): turtle.forward(velkost) turtle.dot(velkost, farba) turtle.left(60) def posun(velkost): turtle.left(60) turtle.forward(-velkost) turtle.right(60) def kresli_navrh(pocet_vrstiev, velkost, farby): turtle.dot(velkost, farby[0]) posun(velkost) for vrstva in range(1, pocet_vrstiev): farba = farby[vrstva % len(farby)] kresli_vrstvu(vrstva, velkost, farba) posun(velkost) turtle.penup() kresli_navrh(7, 50, ['pink', 'orchid', 'mediumpurple','cornflowerblue']) turtle.mainloop() Táto úloha je zameraná na:
Vaše zaujímavé riešenia a najčastejšie chyby Do riešenia úlohy sa zapojili 4 tímy z kategórie EXPERT. Plný počet bodov za svoje riešenie získali tímy kartetura, procrastinoters a raketak, ktorým srdečne gratulujeme. Chválime zmysluplné komentáre v riešeniach tímov procrastinoters a raketak. V riešeniach sme zaregistrovali nasledovné nedostatky, vychádzajúce najčastejšie z nedôslednej analýzy problému:
|
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |