Autorské riešenie
Vieme, že po zastavení prísunu potravy prežije každých 20 minút len 75% buniek. Poznáme pôvodný a aktuálny počet buniek. Úlohu môžeme vyriešiť rôznymi spôsobmi s ohľadom na presnosť riešenia. Ak by bol postačujúci interval, v ktorom bol zastavený príjem potravy, úlohu vieme vyriešiť pomocou cyklu, ktorý testuje, či počet buniek po niektorom z 20 minútových intervalov už presiahol aktuálny počet buniek.
;Imagine logo
viem pocitaj :povodnyPocet :aktualnyPocet urobTu "doba 0 urobTu "pocetBuniek :povodnyPocet ; najdenie intervalu kym [:pocetBuniek > :aktualnyPocet] [ urobTu "doba :doba + 20 urobTu "staryPocet :pocetBuniek urobTu "pocetBuniek 3 * (podiel :pocetBuniek 4) ] (pis "|Interval: | :doba-20 :doba ) koniec
#python
doba = 0 pocetBuniek = povodnyPocet while (pocetBuniek>aktualnyPocet): doba = doba + 20 staryPocet = pocetBuniek pocetBuniek = 3 * (pocetBuniek / 4) return doba-20,doba Na odhad správnej doby zastavenia prísunu potravy v poslednej iterácii cyklu môžem použiť lineárnu aproximáciu. Zistím, aká časť buniek už odumrela v porovnaní s počtom buniek, ktoré by odumreli za celých 20 minút.
;Imagine logo
urobTu "posledneObdobie (:aktualnyPocet - :pocetBuniek) / (:staryPocet - :pocetBuniek) urobTu "dobaLin :doba - 20*:posledneObdobie
#python
posledneObdobie = (aktualnyPocet-pocetBuniek)/(staryPocet-pocetBuniek) dobaLin = doba - 20*posledneObdobie Ostáva nám určiť presné riešenie. Na jeho výpočet môžeme použiť nasledujúce vzťahy: Zápis posledného vzťahu v programovacom jazyku Imagine a Python vyzerá nasledovne:
;Imagine logo
urobTu "dobaLog 20 * podiel (ln (:aktualnyPocet/:povodnyPocet)) (ln 0.75)
#python
import math dobaLog = 20* (math.log(aktualnyPocet/povodnyPocet))/math.log(0.75) Vaše zaujímavé riešenia a najčastejšie chyby Úlohu riešili dva tímy, jeden v Imagine a jeden v Pythone. Úspešnejšie riešenie obsahovalo cyklus, v ktorom sa hľadal počet dvadsaťminútových intervalov. Druhé riešenie bolo založené na nesprávne odvodenom vzorci lineárneho typu bez použitia logaritmu. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |