Autorské riešenie
Podľa zadania máme naprogramovať vyšívanie štvorcového motívu, zobrazeného na obrázkoch nižšie.
Je viacero spôsobov, ako riešiť túto úlohu. Dá sa to riešiť napríklad:
Na obrázku vyššie vidíme motívy výšivky otočené o 45°. Vidíme, že parameter určujúci počet štvorčekov v riadku, resp. stĺpci pre pôvodný motív, nám určuje počet obdĺžnikov pre otočený motív. Potrebujeme ešte dĺžky strán jednotlivých obdĺžnikov. Vykresľovanie začína obĺžnikom, kde dĺžka jednej strany je dĺžka strany štvorčeka a dĺžka druhej strany je počet štvorčekov na diagonále pôvodného motívu. Veľkosti strán obdĺžnika sa každou iteráciou menia - jedna sa zväčší, druhá zmenší o dvojnásobok dĺžky strany štvorčeka. Pri vykresľovaní nám stačí na začiatku nastaviť otočenie o 45°, čím dostaneme požadovaný motív. Otočenie motívu môžeme použiť v každom vyššie spomenutom spôsobe. Výsledný program môže vyzerať nasledovne: import turtle def obdlznik(strana_x,strana_y): for _ in range(2): pero.forward(strana_x) pero.left(90) pero.forward(strana_y) pero.left(90) def vysivaj(dlzka_strany, pocet_v_riadku): pero.right(45) strana_x = dlzka_strany * (pocet_v_riadku * 2 - 1) strana_y = dlzka_strany for i in range(pocet_v_riadku): obdlznik(strana_x, strana_y) strana_x = strana_x - 2 * dlzka_strany strana_y = strana_y + 2 * dlzka_strany pero.penup() pero.forward(dlzka_strany) pero.right(90) pero.forward(dlzka_strany) pero.left(90) pero.pendown() pero = turtle.Turtle() pero.speed(0) vysivaj(50, 3) plocha.mainloop() Táto úloha je zameraná na:
Vaše zaujímavé riešenia a najčastejšie chyby Do riešenia tejto úlohy sa zapojili 3 tímy z kategórie EXPERT. Všetky tímy získali za túto úlohu plný počet bodov. Srdečne gratulujeme! Všetky tímy pracovali s korytnačou grafikou. V riešeniach bolo krásne vidieť, ako rôzne členovia tímov rozmýšľajú. Každý z troch tímov mal jedinečné riešenie. Boli použité vyššie spomínané spôsoby, a to všetky okrem vykresľovania obdĺžnikov. V jednom z riešení bolo použité načítanie vstupov z konzoly. Zaujímavé bolo riešenie tímu takacpisko, ktorý použil až tri parametre, a to pre dĺžku strany jedného štvorčeka, výšku a šírku výšivky. Každý z tímov splnil všetky požadované kritériá. Niektoré kódy by sa pri optimalizácii dali zjednodušiť využitím vlastností štvorcového motívu. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |