Autorské riešenie
Začnime riešiť túto úlohu v jednoduchšej verzii - predstavme si, že každý človek, ktorý už ovláda základy programovania bude ihneď po dokončení svojej výučby učiť jedného iného človeka. V takomto prípade na úspešné vyriešenie potrebujeme vedieť počet ľudí v meste (parameter) a správne nastaviť počiatočné hodnoty (jedna programátorka Noemi, zatiaľ prešlo 0 mesiacov). Náš program by v takomto prípade mohol vyzerať napríklad takto: def simulacia_vyucby(pocet_obyvatelov): pocet_programatorov = 1 pocet_mesiacov = 0 while pocet_programatorov < pocet_obyvatelov: pocet_programatorov = pocet_programatorov + pocet_programatorov pocet_mesiacov += 1 return pocet_mesiacov Pozrime sa bližšie na jednotlivé časti kódu:
Každý z programátorov má však rôzne povinnosti. Každý z nich si teda v daný mesiac vyberá, či vezme jedného, dvoch alebo troch nových "žiakov". Upravme náš kód tak, aby zodpovedal tejto skutočnosti. from random import randint def simulacia_vyucby(pocet_obyvatelov): pocet_programatorov = 1 pocet_mesiacov = 0 while pocet_programatorov < pocet_obyvatelov: novi_za_mesiac = 0 for i in range(pocet_programatorov): novi_za_mesiac += randint(1, 3) pocet_programatorov = pocet_programatorov + novi_za_mesiac pocet_mesiacov += 1 return pocet_mesiacov Keďže si každý z už naučených programátorov osobitne vyberá počet "žiakov", každý mesiac si budeme zaznamenávať koľko nových programátorov za daný mesiac pribudne. Každý mesiac toto číslo závisí od počtu už existujúcich programátorov, pričom každý z nich za mesiac naučí jedného, dvoch alebo troch nových. Následne tento počet nových programátorov pripočítame k už naučeným programátorom, zvýšime o jeden hodnotu premennej pocet_mesiacov a pokračujeme v simulácií. Samotné rozhodnutie, či si programátor vezme jedného, dvoch alebo troch sme v simulácií nechali na náhodu s rovnakou pravdepodobnosťou pre všetky možnosti. Vaše zaujímavé riešenia a najčastejšie chyby
Konkrétne chyby, ktoré riešenie tejto úlohy sprevádzali u viacerých:
|
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |