Autorské riešenie Úlohu budeme riešiť pomocou zoznamov. V jednom zozname máme zachytenú momentálnu situáciu zo života kolónie korybaktérií. Číslom 1 zakódujeme živú korybaktériu, číslom 0 neživú. Napr. situáciu na obrázku môžme zachytiť zoznamom [0 1 1 0 0 1 1 0 1 0 1 1] podľa pravidla otáčania sa hodinovej ručičky. Postupne budeme prechádzať týmto zoznamom. Pre každé políčko určíme jeho ľavého a pravého suseda. Podľa jeho stavu a stavu jeho dvoch susedov vypočítame jeho stav o hodinu. Zapíšeme ho do nového zoznamu. Pri určovaní susedov ľavého a pravého krajného políčka si musíme dať pozor. Susedmi políčka 1 sú políčka 12 a 2. Susedmi políčka 12 sú políčka 11 a 1. Vo všeobecnosti susedov políčka 1 vypočítame podľa: ak pocitadlo=1 a susedov krajného pravého políčka vypočítame podľa: ak pocitadlo=:kolko Vypočet stavu prazdného políčka po hodine urobíme podľa podmienky: ak2 zaroven prvok :lavy :z = 1 prvok :pravy :z = 1 Vidíme, že nová korybaktéria sa narodí len vtedy, ak sú susedné políčka obsadené. Výpočet stavu živého políčka po hodine urobíme podľa podmienky: ak2 prvok :lavy :z <> prvok :pravy :z V prípade, že korybaktéria na políčku nemá žiadného suseda, umiera na samotu. Ak má dvoch susedov umiera na nedostatok živín. Korybaktéria prežíva, ak má na susednom políčku práve jedného suseda. Výsledný príkaz zobraz vyzerá nasledovne: viem zobraz :z Vaše zaujímavé riešenia a najčastejšie chyby Najčastejšie nedostatky, ktorých ste sa dopustili vo svojich riešeniach:
|
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |