Simulació d'un ecosistema P34911


Statement
 

pdf   zip

thehtml

Considereu un tauler n × m on cada casella conté un individu d’una certa espècie amb una certa quantitat de vida (un natural). A cada torn, es modifiquen alhora les vides de tots els individus. Per a cadascun, la nova vida passa a ser la mitjana de vides d’aquest conjunt: el propi individu, més els individus que en siguin adjacents horitzontalment o verticalment i siguin d’una espècie diferent. Si la mitjana obtinguda no és un nombre natural, cal ignorar els decimals.

Per exemple, considereu l’home amb vida 10 del segon cas del sample. A sobre no té res, i a l’esquerra té un altre home. Té dos veïns d’una altra espècie: un gos amb vida 10 a la dreta, i un gat amb vida 9 a sota seu. Per tant, la vida de l’home després del primer torn passa a ser ⌊ (10 + 10 + 9)/3 ⌋ = ⌊ 9.667 ⌋ = 9.

Feu un programa que llegeixi la informació inicial d’un tauler, i que escrigui la seva evolució fins arribar a una situació estable (suposeu que sempre s’hi arriba).

El vostre codi ha d’incloure i usar aquesta definició:

struct Casella { string e; // especie int v; // vida };

Entrada

L’entrada consisteix en diversos casos, cadascun amb n i m, seguides de n línies, cadascuna amb l’espècie (una paraula no buida) i la vida inicial de m individus.

Sortida

Per a cada cas, escriviu la seva evolució fins arribar a una situació estable, seguint el format dels exemples: totes les columnes tenen 10 caràcters, hi ha una línia buida després de cada tauler, i una línia amb 40 asteriscs al final de cada cas. Suposeu que la combinació de la longitud del nom de l’espècie i la quantitat de vida sempre és prou petita com per poder seguir el format requerit.

Public test cases
  • Input

    1 2
    aa 1234567 b 1234568
    
    3 4
        home 7   home 10    gos 10    mona 8
        mona 6     gat 9     gos 0     gat 5
        mona 8   lleo 11   lleo 14   lleo 12
    
    1 1
    cthulhu 42
    
    1 4
         zzz 2      zz 3       z 0       z 9
    
    2 2
         a 987       a 7
           a 0      a 23
    

    Output

    aa 1234567 b 1234568
    
    aa 1234567 b 1234567
    
    ****************************************
        home 7   home 10    gos 10    mona 8
        mona 6     gat 9     gos 0     gat 5
        mona 8   lleo 11   lleo 14   lleo 12
    
        home 6    home 9     gos 9    mona 7
        mona 7     gat 7     gos 7     gat 6
        mona 9    lleo 9    lleo 7    lleo 8
    
        home 6    home 8     gos 8    mona 7
        mona 6     gat 7     gos 6     gat 7
        mona 9    lleo 8    lleo 7    lleo 7
    
        home 6    home 7     gos 7    mona 7
        mona 6     gat 7     gos 6     gat 6
        mona 8    lleo 8    lleo 6    lleo 7
    
        home 6    home 7     gos 7    mona 6
        mona 6     gat 6     gos 6     gat 6
        mona 8    lleo 7    lleo 6    lleo 6
    
        home 6    home 6     gos 6    mona 6
        mona 6     gat 6     gos 6     gat 6
        mona 7    lleo 7    lleo 6    lleo 6
    
        home 6    home 6     gos 6    mona 6
        mona 6     gat 6     gos 6     gat 6
        mona 7    lleo 6    lleo 6    lleo 6
    
        home 6    home 6     gos 6    mona 6
        mona 6     gat 6     gos 6     gat 6
        mona 6    lleo 6    lleo 6    lleo 6
    
    ****************************************
    cthulhu 42
    
    ****************************************
         zzz 2      zz 3       z 0       z 9
    
         zzz 2      zz 1       z 1       z 9
    
         zzz 1      zz 1       z 1       z 9
    
    ****************************************
         a 987       a 7
           a 0      a 23
    
    ****************************************
    
  • Information
    Author
    Salvador Roura
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++