Autorské riešenie
Podľa zadania máme vykresliť snehovú vločku so zadaným počtom ramien a zadanou vekosťou, pričom sa tieto ramená nemôžu prekrývať a ani dotýkať. Najprv si načrtnime obrázok s vločkou s konkrétnym počtom ramien (12) a konkrétnymi rozmermi jedného ramena (120 a 60) s hrubo vyznačeným jedným ramenom. Aby sme zohľadnili neprekrývania sa susedných ramien, načrtneme hraničnú situáciu, kedy sa jednotlivé ramená budú dotýkať (menej výraznou sivou farbou). Dotyk nastane, ak dĺžky vetiev na konci ramena budú rovnako veľké ako dĺžka ramena a dĺžky vetiev uprostred vetvy rovnako dlhé ako polovica dĺžky ramena. Ak tieto dĺžky proporcionálne skrátime (napr. na polovicu a štvrtinu dĺžky ramena) a rovnako dodržíme nastavenie správnych uhlov, tak ramená našej snehovej vloky by sa nemali prekrývať. Na tomto obrázku s kosoštvorcovou ružicou vidíme, že uhol medzi ramenami má veľkosť 360 / počet_ramien. Uhol vetiev (na konci aj uprostred ramena) od ramena by mal byť menší alebo rovný veľkosti 360 / počet_ramien.
Ak zohľadníme uvedené obmedzenia dĺžok a uhlov ramien vločky a jej vetiev, tak môžeme vytvoriť funkciu rameno na vykreslenie ramena so zadanou dĺžkou a uhlom vetiev od ramena a tiež funkciu vlocka so zadaným počtom a veľkosťou ramien. Výsledný program, ktorý môže vyzerať napríklad nasledovne: import turtle def rameno(dlzka, uhol): for i in range(1, 3): turtle.forward(dlzka / 2) turtle.left(uhol) turtle.forward(i * dlzka / 4) turtle.forward(-i * dlzka / 4) turtle.right(2 * uhol) turtle.forward(i * dlzka / 4) turtle.forward(-i * dlzka / 4) turtle.left(uhol) turtle.forward(-dlzka) def vlocka(pocet, dlzka): for i in range(pocet): rameno(dlzka, 360 / pocet) turtle.right(360 / pocet) vlocka(12, 120) turtle.mainloop() Táto úloha je zameraná na:
Vaše zaujímavé riešenia a najčastejšie chyby Do riešenia úlohy sa zapojilo 9 tímov z kategórie EXPERT. Plný počet bodov za svoje riešenie získalo až 6 tímov adolfov_squad, erikasasa_gl, karterura, neprogramatori, procrastinoters, a raketak, ktorým srdečne gratulujeme. Pri určovaní veľkosti ramena a vetiev súťažiaci pristupovali rôzne, niektorí za základnú veľkosť zozbrali dĺžku ramena, iní niektorú z vetiev. Ak riešenie zachovalo pomerné proporcie ramena a vetiev, tak sme ho uznali s plným počtom bodov 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 |