Autorské riešenie
Cieľom v tejto úlohe bolo vytvoriť náhodné poradie výroby 3 farebných diód tak, aby z nich bolo možné skombinovať čo najviac farebných semaforov. Inými slovami, na konci výroby sa počty jednotlivých vyrobených farieb musia líšiť maximálne o jednotku. Vstupným parametrom pre riešenie tejto úlohy je celkový počet vyrobených farebných diód (pocet_diod). Na základe tejto hodnoty vieme vypočítať, koľko kompletných farebných semaforov budeme vedieť vyrobiť. Vypočítame to nasledujúcim vzťahom: pocet_kompletnych_semaforov = pocet_diod // 3 Podobne vieme vypočítať, koľko diód sa nám zvýši: pocet_nevyuzitych_diod = pocet_diod % 3 Ak poznáme tieto dve hodnoty, môžeme sa pustiť do vytvorenia zoznamu všetkých vyrobených diód (poradie_vyroby_diod). Najprv si vytvoríme zoznam diód pre kompletné semafory:
farby = ['zelená', 'žltá', 'červená'] Potom si náhodne vyberieme farby diód, ktoré sa zvýšia. Môže nám pri tom pomôcť príkaz random.sample, ktorý vyberie náhodne zo zadaného zoznamu farieb stanovený počet prvkov tak, aby sa neopakovali: poradie_vyroby_diod += random.sample(farby, pocet_nevyuzitych_diod) Na záver nám už len postačí prvky zoznamu náhodne zamiešať pomocou príkazu shuffle: random.shuffle(poradie_vyroby_diod) Nasleduje možný zdrojový kód v jazyku Python: # zelena_vlna.py import random def poradie_farieb(pocet_diod): pocet_kompletnych_semaforov = pocet_diod // 3 pocet_nevyuzitych_diod = pocet_diod % 3 farby = ['zelená', 'žltá', 'červená'] poradie_vyroby_diod = pocet_kompletnych_semaforov * farby poradie_vyroby_diod += random.sample(farby, pocet_nevyuzitych_diod) random.shuffle(poradie_vyroby_diod) return poradie_vyroby_diod Vaše zaujímavé riešenia a najčastejšie chyby Úlohu riešilo 6 tímov. 4 tímy vyriešili úlohu kompletne. Použili buď podobný postup ako v autorskom riešení, alebo testovali, či počet diód danej farby neprekročil maximálny počet. V dvoch riešeniach boli len malé nedostatky, ktoré spočívali v nesprávnom nastavení podmienky (napríkald použitie hodnoty i+1 namiesto i).
|
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |