상태를 수동으로 입력합니다. 다음 규칙에 따라 계산됩니다.
1 각 그리드에 차세대 살아있는 세포가 있는지 여부는 현재 그리드에 인접한 8 개 메시의 세포 생존에 따라 달라집니다.
살아있는 세포 주위에 2 ~ 3 개의 살아있는 세포가 있을 때, 그 세포는 다음 세대까지 살아남습니다. 또는 죽음.
그리드 주위에 세 개의 살아있는 세포가 있을 때, 다음 세대에서는 살아있는 세포가 그리드에 나타납니다.
*/
공용 클래스 CellLife {
/* *
* @param args
*/
공용 정적 void main(String[] args) {
// TODO 자동으로 생성된 메소드 스텁
//int [] [] arr = new int [5] [5]; //5*5 보드
Int[][] arr = {{0, 1, 0, 1, 0}, {1,/kloc.
Int [] [] brr = {{0,0,0,0,0}, {0,0,0}, {0,0,0}, {0,0,0,0}, { 을 눌러 섹션을 인쇄할 수도 있습니다 //상태 대기
Int x, y; //레코드 행 및 열
Intcnt = 0; //반복 횟수 기록
부울 플래그 = 참;
System.out.println ("초기 상태:");
For(int I = 0;; 나<5; I++) {
For(int j = 0;; J<5; J++)
System.out.print (arr [I] [j]+"");
System.out.println ();
}
Int [] nb = new int [8]; //이웃 8 명
While(flag) {
Cnt++;+;
For(int I = 0;; 나<5; I++) {
For(int j = 0;; J<5; J++) {
X = I-1;
Y = j-1;
((x>= 0)& amp;; 인 경우 & amp(y & gt=0))
Nb [0] = arr [x] [y];
기타
Nb [0] = 0;
X = I-1;
Y = j;;
If(x & gt;; =0)
Nb [1] = arr [x] [y];
기타
Nb [1] = 0;
X = I-1;
Y = j+1;
((x>= 0)& amp;; 인 경우 & amp(y & lt5))
Nb [2] = arr [x] [y];
기타
Nb [2] = 0;
X = I;;
Y = j-1;
(y & gt=0) 인 경우
Nb [3] = arr [x] [y];
기타
Nb [3] = 0;
X = I;;
Y = j+1;
If(y & lt;; 5) 을 참조하십시오
Nb [4] = arr [x] [y];
기타
Nb [4] = 0;
X = I+1;
Y = j-1;
((x & lt5)& amp;; 인 경우 & amp(y & gt=0))
Nb [5] = arr [x] [y];
기타
Nb [5] = 0;
X = I+1;
Y = j;;
If(x & lt;; 5) 을 참조하십시오
Nb [6] = arr [x] [y];
기타
Nb [6] = 0;
X = I+1;
Y = j+1;
((x & lt5)& amp;; 인 경우 & amp(y & lt5))
Nb [7] = arr [x] [y];
기타
Nb [7] = 0;
//차세대 상태 판단
Intsum = 0;
For(int n = 0;; N<8; N++)
Sum = sum+nb [n];
If(arr[i][j]== 1)// 살아있는 세포
If (합계 = = 2 | | 합계 = = 3)
Brr [I] [j] =1;
기타
Brr [I] [j] = 0;
엘시//죽은 세포
If (합계 = = 3)
Brr [I] [j] =1;
기타
Brr [I] [j] = 0;
}
}
Flag =! CellLife.same(arr, brr) :
// System.out.println ("차세대 상태:");
For(int I = 0;; 나<5; I++) {
For(int j = 0;; J<5; J++) {
Arr [I] [j] = brr [I] [j];
//system.out.print (arr [I] [j]+"");
}
//system.out.println ();
}
}
System.out.println ("최종 상태:");
For(int I = 0;; 나<5; I++) {
For(int j = 0;; J<5; J++)
System.out.print (arr [I] [j]+"");
System.out.println ();
}
System.out.println ("반복 횟수:"+CNT);
}
Public static booleansame (int [] [] a, int[][] b) {
For(int I = 0;; 나<5; I++)
For(int j = 0;; J<5; J++)
If(a[i][j]! =b[i][j])
False 를 반환합니다
True 를 반환합니다
}
}