Sunteți pe pagina 1din 3

Tema 1 PP - Conway's Game of Life

Termen: 2 sptmni 14.11.2016


Punctaj: 100 de puncte (maxim 120)

Game of life (Jocul vieii) presupune simularea evoluiei unor celule ntr-un
spaiu bidimensional. Jocul se desfoar ntr-un grid de dimensiuni N i M, avnd o
configuraie iniial de celule de la care pornete simularea. Evoluia are loc parcursul a
K etape, starea la pasul p depinznd exclusiv de starea la pasul p - 1.

Multiplicarea celulelor urmeaz cteva reguli:


orice celul cu mai puin de dou celule vecine moare de singurtate
orice celul cu mai mult de trei celule vecine moare din cauza supraaglomerrii
orice celul cu dou sau trei celule vecine supravieuiete
o celul nou este creat dac are exact trei celule vecine
Exemplu de evoluie:

Spaiul simulrii poate fi reprezentat fie ca un plan, fie ca un toroid. n cazul


reprezentrii planare, celulele marginale au 5, respectiv 3 vecini. n cazul reprezentrii
toroidale, toate celulele au 8 vecini, harta putnd fi parcurs circular.

1
3 2
2 3 4
1
5
Reprezentare
planar

4
6 5

8
7

2 3

Vecinii sunt numerota i n


sensul acelor de ceasornic.

Reprezentare
toroidal

Vei primi de la tastatur date de intrare n urmtorul format:

pe prima linie
un caracter, fie 'P', dac reprezentarea este de tip plan, fie 'T' dac
reprezentarea este toroidal
doi ntregi M i N, reprezentnd limea i nlimea hrii
un ntreg K, reprezentnd numrul de generaii de simulat
pe urmtoarele N linii, cte M bii
1, pentru a marca prezena unei celule
0, altfel
Va trebui s afiai N linii a cte M bii, reprezentnd rezultatul simulrii dup K

etape. Exemple de intrare i ieire:


P
0
1
0
0
0

5
0
0
1
0
0

5
1
1
1
0
0

4
0
0
0
0
0

0
0
0
0
0

0
0
1
0
0

0
0
0
1
0

0
1
1
1
0

0
0
0
0
0

P
0
1
0
0
0

5
0
0
1
0
0

5
1
1
1
0
0

10
0 0
0 0
0 0
0 0
0 0

0
0
0
0
0

0
0
0
0
0

0
0
0
0
0

0
0
0
0
1

0
0
0
1
1

T
0
1
0
0
0

5
0
0
1
0
0

5
1
1
1
0
0

10
0 0
0 0
0 0
0 0
0 0

0
0
0
1
1

0
0
0
0
0

0
0
0
0
0

0
0
0
0
1

0
0
1
0
1

T
0
1
0
0
0

5
0
0
1
0
0

5
1
1
1
0
0

11
0 0
0 0
0 0
0 0
0 0

0
0
0
1
1

0
0
0
0
0

0
0
0
0
0

0
0
0
1
0

1
0
0
0
1

0
0
0
0
0

BONUS: pentru un punctaj suplimentar de 20p, afiai pe o linie suplimentar,

dup output-ul menionat mai sus, gradul maxim de populare nregistrat pe parcursul
simulrii, n format procentual, cu 3 cifre dup virgul (hint: man printf). Exemplu:
P
1
1
1

4
1
0
0

3
1
0
0

3
0
0
0

1 1 0 0
1 1 0 0
0 0 0 0
41.667%

Tema voastr va consta ntr-un fiier C cu numele tema1.c. Citirea i scrierea se


vor face de la tastatur (scanf / printf). Va trebui s fii ateni i la coding style. Tema se
va prezenta laborantului de care aparinei. Acesta v va testa soluia i v va pune
ntrebri despre implementare. Pentru obinerea punctajului va trebui s cunoatei
codul n detaliu - deci nu v inspirai de la colegi ;)
Tema va fi incarcata pe: https://dropitto.me/<nr.grupa>tema1 / parola
<nr.grupa>Tema1 pana la data de 14.11.2016 ora 23:59.
<nr.grupa> - se inlocuieste cu numarul grupei voastre.

Spor la lucru!

Restricii:
1 M, N 1000
0 K 10000
Punctare:
80p - funcionare corect
20p - calitatea implementrii i coding-style (indentare, claritate, comentarii etc.)
20p - implementare BONUS
Resurse:
wikipedia: http://en.wikipedia.org/wiki/Conway's_Game_of_Life
coding-style: http://www.cs.swarthmore.edu/~newhall/unixhelp/c_codestyle.html

S-ar putea să vă placă și