Autorské riešenie
[stiahni imp : py]

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

  • Úspešnosť riešenia:  2 / 7 = 29 %

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:

odvodenie 

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.