Autorské riešenie
Máme naprogramovať stroj na rezanie pizze, ktorá podľa zadaných objednávok vypočíta, ako pizzu narezať. V zadaní boli tiež uvedené dva príklady. Na nasledujúcich obrázkoch sú zobrazené postupne Objednávky 1: 450, 900, 450, 1800 a Objednávky 2: 4500, 1350, 1350, 450, 900, 900, 900.
Vidíme, že Objednávky 1 majú v súčte menšiu plochu ako Objednávky 2, preto aj prvá pizza musí byť menšia ako druhá pizza. Teda pri vykresľovaní pizze si potrebujeme vypočítať jej polomer podľa zadaných objednávok. Ako prvé si spočítame všetky hodnoty objednávok, čo reprezentuje obsah kruhu (pizze). Pomocou obsahu kruhu si vypočítame jeho polomer. Ponúkajú sa nám dve cesty, ako vykreslíme narezanie pizze.
Výsledný program môže vyzerať napríklad takto: import turtle import math def narez_pizzu(objednavky): plocha = sum(objednavky) polomer = (plocha / math.pi) ** 0.5 if (len(objednavky) == 1): pero.circle(polomer) else: for objednavka in objednavky: pero.circle(polomer, objednavka / plocha * 360) pero.left(90) pero.forward(polomer) pero.backward(polomer) pero.right(90) tabula = turtle.Screen() pero = turtle.Turtle() objednavky = [600, 3600, 1200, 1200, 600] narez_pizzu(objednavky) tabula.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 4 tímy z kategórie EXPERT. Srdečne gratulujeme všetkým zúčastneným! Obzvášť blahoželáme tímu reketak za efektívne riešenie a najlepšie bodové skóre :)) 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 tímov mal jedinečné riešenie. Boli použité vyššie spomínané spôsoby. Jeden tím použil na vykreslenie obvodu kruhu dva kruhy, kde menší biely kruh prekrýval čierny tak, že sa nám vytvorila kružnica. V jednom z riešení bolo použité načítanie vstupov z konzoly. V rámci toho bola práca so vstupom omnoho komplikovanešia. Pri podobných úlohách odporúčame vytvoriť si testovacie dáta a nepoužívať načítanie vstupu z konzoly. Najčastejšie chyby, ktorých sa riešitelia dopúšťali:
|
|||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |