Autorské riešenie
Podľa zadania úlohy je systém upratovania taký, že sa opakuje nasadenie do práce jeden deň len jedného robota, ďalší deň len druhého robota, ďalší deň oboch robotov atď. Potom pri riešení úlohy môžeme uvažovať, koľko práce sa urobí za viacero kompletných trojdní a koľko za zvyšných 1 až 3 dní. Označme premennou d1 počet dní, za ktoré urobí celú prácu prvý robot a premennou d2 počet dní, za ktoré urobí celú prácu druhý robot. Potom za jeden deň prvý robot urobí 1 / d1 práce, druhý robot za ďalší deň urobí 1 / d2 práce a za ďalší deň oba roboty urobía 1 / d1 + 1 / d2 práce. Za trojicu nasledujúcich dní urobia roboty podľa uvedeného systému spolu 2 / d1 + 2 / d2 práce, čo označíme premennou praca_za_3dni. Počet kompletných trojdní, ktoré označíme premennou pocet_3dni, vypočítame ako celú časť prevrátenej hodnoty premennej praca_za_3dni. Množstvo práce vykonané za kompletné trojdní, ktoré označíme premennou mnozstvo_prace, vypočítame ako súčin praca_za_3dni * pocet_3dni.
Podľa vypočítaného množstva práce za kompletné trojdni môžeme uvažovať nasledovné prípady:
def pocet_dni(d1, d2): praca_za_3dni = (2 / d1 + 2 / d2) pocet_3dni = 1 // praca_za_3dni mnozstvo_prace = praca_za_3dni * pocet_3dni if mnozstvo_prace == 1: return 3 * pocet_3dni elif mnozstvo_prace + 1 / min(d1, d2) >= 1: return 3 * pocet_3dni * 3 + 1 elif mnozstvo_prace + 1 / d1 + 1 / d2 >= 1: return 3 * pocet_3dni + 2 else: return 3 * pocet_3dni + 3 print(pocet_dni(10, 3)) # 4.0 Táto úloha je zameraná na:
Vaše zaujímavé riešenia a najčastejšie chyby Do riešenia tejto úlohy sa zapojilo 14 tímov z kategórie EXPERT. Plný počet bodov neziskal žiaden tím. Vo väčšine riešení autori použili cyklus, a len v dvoch riešenia boli použité len príkazy vetvenia (podobne ako v autorskom riešení). V niektorých autorských riešeniach sa pri použití cyklu prejavili nepresnosti spôsobené špecifikami aritmetiky počítača, ktoré sme nepenalizovali stratou bodov. V riešeniach sme zaregistrovali nasledovné nedostatky, vychádzajúce najčastejšie z nedôslednej analýzy problému, tvorby menej efektívneho riešenia či z pretrvávajúcich programátorských zlozvykov:
|
|||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |