Autorské riešenie
[stiahni py]                                       

  • Počet riešiteľov: 6 / 6 = 100  %                       

  • Úspešnosť riešenia:  4.7 / 5 = 93 %                   

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á']
poradie_vyroby_diod = pocet_kompletnych_semaforov * farby

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).