Na řešení máte alespoň 50 minut. Práci si průběžně ukládejte/zálohujte. Po konci testu odevzdejte zdrojový kód (jeden soubor s příponou ".c", nic jiného) do připravené odevzdávárny v IS.
Pište čitelně (zahrnuje i vhodné používání komentářů).
Program by měl kontrolovat vstupy a nepovolit např. zadání záporného čísla v situaci, kdy to nedává smysl. Ideálně by v takovém případě měl uživatele upozornit na chybu a dotaz zopakovat. Zadání nesmyslně vysokých nebo neceločíselných hodnot v této písemce ošetřovat nemusíte.
Program bude simulovat vývoj buněčné populace řídící se danými pravidly. Simulace bude probíhat po jednotlivých generacích, které bude program ukazovat uživateli.
Populací zde rozumíme řádku vedle sebe ležících buněk, z nichž každá může
být v dané generaci buď živá ("#
", mřížka), nebo mrtvá
("
", mezera). Toto je příklad populace v jedné generaci
(tři buňky živé, čtyři mrtvé):
# | # | # |
(jediné) pravidlo: Buňka j bude v generaci i + 1 živá právě tehdy, když měla v generaci i právě jednoho živého souseda (pozn.: vnitřní buňky mají vždy dva sousedy, krajní buňky jednoho). Generace z výše uvedeného příkladu se tedy (po jednom kroku) vyvine v toto:
# | # | # | # |
Na začátku si program od uživatele vyžádá počet buněk N, s nimiž má pracovat (ve výše uvedeném příkladu platí N = 7), a počet generací M, který má celkem zobrazit (včetně počáteční generace).
Následně program připraví první generaci: všechny buňky budou mrtvé, jen buňka na pozici N / 2 bude živá.
Poté program postupně vypíše všechny generace od 1. do M., každou
na jeden řádek. Živé buňky vypisujte jako "#
", mrtvé jako
"
". Žádné mezery navíc nepište.
Příklad výstupu pro N = 7, M = 4:
# # # # # # # # #
Nakonec program upravte tak, aby první generaci nepřipravoval sám (danou část ale nemažte, jen zakomentujte), ale aby ji načetl od uživatele poté, co se dozví požadovaný počet buněk a generací. Uživatel zadá sekvenci N znaků, kde mezery budou odpovídat mrtvým buňkám a mřížky živým. Smíte předpokládat, že uživatel je slušný a bude zadávat pouze mřížky a mezery, a celkem jich bude N.)