Fişierul intrare/ieşire:gol3d.in, gol3d.outSursăad-hoc
AutorEliana-Dina Tirsa, Mugurel Ionut AndreicaAdăugată desilviugSilviu-Ionut Ganceanu silviug
Timp execuţie pe test0.4 secLimită de memorie20480 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Gol3d

Gigel a inventat un nou joc: game of life 3d. Sa vedem care sunt regulile: jocul se desfasoară in interiorul unui cub impartit in celule cubice, de volum unitar, de dimensiune NxNxN (in total N3 celule). In fiecare celula exista un organism viu sau mort. Jocul consta din urmarirea evolutiei organismelor pentru mai multe generatii. In fiecare generatie unele organisme evolueaza dupa regulile urmatoare:

  • vecinii unei celule aflate la coordonatele (i,j,k) (0 ≤ i, j, k ≤ n-1) sunt acele celule (i',j',k') diferite de (i,j,k), aflate la o distanta mai mica sau egala cu d = [(i + j + k) / 5] + 1 de celula (i,j,k) (se considera parte intreaga inferioara la impartirea la 5)
  • distanta dintre 2 celule (a1,b1,c1) si (a2,b2,c2) se defineste ca fiind max{|a1-a2|, |b1-b2|, |c1-c2|}
  • daca o celula are strict mai putin de 25% vecini vii, ea va muri de singuratate in generatia urmatoare (in caz ca era vie)
  • daca o celula are strict mai mult de 75% vecini vii, ea va muri sufocata in generatia urmatoare (in caz ca era vie)
  • daca o celula are intre 45% si 55% (interval deschis) vecini vii, ea isi va schimba starea (va invia daca era moarta / va muri daca era vie)
  • daca procentul de vecini vii nu se incadreaza in regulile de mai sus, atunci celula va fi vie in generatia urmatoare indiferent de starea ei in generatia anterioara
  • toate nasterile si mortile dintr-o generatie au loc simultan (altfel spus, modificarea unei celule intr-o generatie nu poate afecta evolutia, in aceeasi generatie, a niciunei alte celule)

Stiind numarul de generatii al jocului, Gigel va roaga sa calculati pentru fiecare generatie numarul de organisme vii.

Date de intrare

Fisierul de intrare gol3d.in va contine pe prima linie doua numere naturale: N si G reprezentand dimensiunea cubului si numarul de generatii al jocului (incluzand-o si pe prima). Apoi, pentru fiecare i de la 0 la N-1 se dau cate N linii cu cate N elemente fiecare - elementul (j,k) din matrice va reprezenta starea organismului din celula (i,j,k) in prima generatie. Dupa fiecare matrice, mai putin ultima, va fi o linie goala. Se va folosi urmatoarea codificare: 0 - organism mort, 1 - organism viu.

Date de ieşire

In fisierul de iesire gol3d.out va contine pe o singura linie G numere reprezentand numarul de organisme vii dupa fiecare generatie.

Restrictii

  • 2 ≤ N ≤ 64
  • 1 ≤ G ≤ 100

Exemplu

gol3d.ingol3d.out
2 2
0 1
0 0
 
0 0
0 1
2 6

Explicatie

Prima generatie este chiar cea initiala unde avem numai 2 organisme vii. Urmatoarea generatie va fi:

1 0
1 1

1 1
1 0

Toate celulele sunt vecine una cu alta (deoarece d-ul calculat dupa formula din enunt da 1 intotdeauna). Organismele din celulele (1,1,1) si (0,0,1) au cate un vecin viu din 7 (deci mai putin de 25%) si mor de singuratate. Celelalte celule au 2 vecini vii din 7, deci ~28% si vor fi vii conform penultimei reguli a jocului.

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?

remote content