terça-feira, 23 de junho de 2015

Exercício 23: Jogo da vida - Parte III

O código a seguir é mais uma modificação do jogo da vida, aqui adicionamos um código que calcula a média de células vivas em todas as gerações, e calcula o desvio padrão.

O desvio padrão é calculado seguindo a formula sqrt((pow(x[0]-media,2) + pow(x[1]-media,2) + ...)/x.length-1);

Código-Fonte:

float vendaAn;

int NumeroGeracao=1;
int[] escheme = {};
  int[] Mundoatual = {0,1,1,0,1,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,1,0,1,0,1,0,1};
  int[] MundoNovo = new int[32];
void setup(){
 
 
  size(1280,720);
  frameRate(1);
  background(0);
 
 
 
  //Mostramundo();
 

}

int CruzaCelulas(int Posicao){
  int NumeroCelulas = Mundoatual[Posicao-1] + Mundoatual[Posicao] + Mundoatual[Posicao+1];
  return NumeroCelulas;

}

void Mostramundo(){
  for(int i=0;i<Mundoatual.length;i++){
    if(Mundoatual[i]==1){
      ellipse(i*20,NumeroGeracao *30,20,20);
    }
  }

}

void estatisticas(){
  int aux=0;
  println(escheme.length);
  if(escheme.length==0 || escheme[escheme.length-1]!=0){
  for(int cont=0;cont<Mundoatual.length;cont++){
    aux += Mundoatual[cont];
  }
  escheme = append(escheme,aux);
  }else{
  float media=0;
  float desvio=0;
  float max=0;
  for(int cont=0;cont<escheme.length;cont++){
    stroke(255);
    //point((cont+1)*150-6,(height - escheme[cont]*50-6));
    if(cont<escheme.length-1){
     if(escheme[cont]>=max){max=escheme[cont];}
    media += float(escheme[cont]);

 
    }else{
      media = media/escheme.length;
      for(int i=0;i<escheme.length;i++){
      desvio += pow((escheme[i]-media),2);
      }
      desvio = sqrt(desvio/escheme.length-1);
      println("media de células vivas: "+media);
      println("desvio padrão de células vivas: "+desvio);
  
    }
  }
  }
  /*
  for(int cont=0;cont<escheme.length;cont++){
      println((cont+1)+"ª Geração: "+escheme[cont]);
     if(escheme[cont]==0){
       noLoop();
     }
  }
  */

}


void draw(){
    int NumeroCelulas = 0;
   // Mostramundo();
   // if(escheme.length>0 && escheme[escheme.length-1]>0){
    estatisticas();
    //}
   //println("Tamanho atual: "+Mundoatual.length);
    for(int o=1;o<Mundoatual.length-1;o++){
      NumeroCelulas = CruzaCelulas(o);
      if(NumeroCelulas==2){
        MundoNovo[o]=1;
      }else{
         MundoNovo[o]=0;
      }
    }
    arrayCopy(MundoNovo,Mundoatual,32);
    NumeroGeracao++;
}

Nenhum comentário:

Postar um comentário