class automateDim1 { 



public static void main (String[] args) {

		// déclaration des variables
		int[] regle = new int[8];
		int[] etatActuel = new int[100];
		int[] etatSuivant = new int[100];
		int[] echange;
		int num;
		
		
		// Entrée de la règle 90
		
		
		regle[0] = 0;
		regle[1] = 1;
		regle[2] = 0;
		regle[3] = 1;
		regle[4] = 1;
		regle[5] = 0;
		regle[6] = 1;
		regle[7] = 0;
		
		//Entrée de la colonie à l'état initial
		etatActuel[50] = 1;
	
		
		
		//on visualise la colonie à l'état initial
		
		for(int i = 1;i <= 98;i = i+1){
								if(etatActuel[i] == 0){
									System.out.print(" ");
								}
								else{
									System.out.print("*");
								}		
					}
		System.out.println(" ");
		
		// On suit l'évolution de la colonie sur une vingtaine de générations
		// La variable num numérote le nombre de générations
		
		for(num = 1;num <= 20;num = num+1){
		
		// Hérédité: Construction de étatSuivant[i] à partir de étatActuel[i]  
		//on parcourt le tableau étatActuel du deuxième élément à l'avant dernier 
		//et on regarde pour chaque élément e = étatActuel[i] 
		//les voisins a = étatActuel[i-1] et b = étatActuel[i+1] de cet élément
		//aeb forme un nombre entier en binaire on convertit ce nombre en décimal d. 
		//Ce nombre d est l'indice dans le tableau règle de l'état suivant de la case repérée par i
		//étatSuivant[i] = règle[d]
					
					
					for(int i = 1;i <= 98;i = i+1){
								
								int d = 4*etatActuel[i-1]+2*etatActuel[i]+etatActuel[i+1];
								etatSuivant[i] = regle[d];
					}
		//A la sortie de la boucle étatSuivant a été construit 
		//Sortie graphique: On souhaite visualiser à l'écran étatSuivant
		
		
		
		
		
		for(int i = 1;i <= 99;i = i+1){
								
								
								if(etatSuivant[i] == 0){
									System.out.print(" ");
								}
								else{
									System.out.print("*");
								}	
		}
		
		//On saute une ligne entre deux générations
		
		System.out.println("");
		
		//On recommence le processus: etatSuivant joue le rôle d'etatActuel
		
		echange = etatActuel;
		etatActuel = etatSuivant;
		etatSuivant = echange;
		}
		
		
}
}

