Autorské riešenie
V tejto úlohe máme vykresliť dvojfarebný náramok pre zadaný celkový počet guličiek a zadaný počet dievčat. Takýto náramok bude zložený z niekoľkých opakujúcich sa úsekov obsahujúcich jednu žltú guličku a sériu zelených guličiek, ktorých je rovnako ako zadaný počet dievčat. Dôležité je si uvedomiť, že pre rôzne vstupné hodnoty dostaneme rovnaké náramky priateľstva. Napríklad nižšie uvedený obrázok je vykreslený pre počet dievčat 5 a celkový počet guličeik 12. Ale rovnaký obrázok by sme dostali aj pre počet guličiek 17.
Riešenie mohlo vyzerať napríklad takto: Keďže v našom riešení vždy začneme žltou guličkou, vytvoríme si pomocnú premennú sucet, ktorá bude o jedna väčšia ako počet dievčat. Následne zistíme potrebný počet všetkých guličiek pre náš náramok tak, že od počtu všetkých guličiek vo vrecúšku odrátame jeho zvyšok po delení premennou sucet. Potom už pomocou podmienky kontrolujeme začiatok ďalšieho úseku (číslo poradia guličky dáva zvyšok 0 po delení premennou sucet). Tento spôsob je efektívnejší ako určovanie počtu žltých a zelených guličiek, ich iterácia a vykresľovanie v dvoch for-cykloch. Funkcia kresli_naramok na vykreslenie dvojfarebného náramku pre zadaný počet guličiek a zadaný počet dievčat môže vyzerať nasledovne: import turtle def kresli_naramok(pocet_guliciek, pocet_dievcat): sucet = 1 + pocet_dievcat novy_pocet_guliciek = pocet_guliciek - pocet_guliciek % sucet for i in range(novy_pocet_guliciek): turtle.forward(50) turtle.left(360 / novy_pocet_guliciek) if i % sucet == 0: turtle.dot(20, 'yellow') else: turtle.dot(20, 'green') kresli_naramok(15, 5) turtle.mainloop() Vaše zaujímavé riešenia a najčastejšie chyby Do riešenia sa zapojilo 9 tímov z kategórie EXPERT. Plný počet bodov získali dva tímy Bweh a Karborura, ktorým gratulujeme. Traja riešitelia kontrolovali poradie vykreslenej guličky, ale väčšina riešiteľov sa snažila úlohu riešiť druhým spôsobom. Pri oboch spôsoboch riešenia bola najčastejšia chyba nevykreslenie náramku, ktorý sa skladal z jedného úseku zelených guličiek a jednej žltej guličky. |
||||||||||
|
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |
||||||||||