실제와 같은 셀룰러 오토 마톤 은 Conway의 Game of Life와 유사한 셀룰러 오토 마톤입니다. 각 셀마다 정확히 8 개의 이웃이 있으며 2 개의 상태 중 하나 인 살아남은 죽은 (이론적으로) 무한히 큰 정사각형 그리드에서 작동한다는 점에서 .
그러나 이러한 Like-like 버전은 중요한 방식으로 다릅니다. 주어진 셀의 규칙이 살아 나고 주어진 셀의 규칙이 다음 세대에도 살아남는 것입니다.
예를 들어, 고전적인 Game of Life는 규칙을 사용합니다 B3/S23
. 즉, 3 개의 살아있는 세포가 새로운 세포를 탄생시키고 2 또는 3 명의 살아있는 이웃이 생존해야합니다. 이 과제를 위해, 이웃은 자신을 포함하지 않는다고 가정하므로 각 셀에는 정확히 8 개의 이웃이 있습니다.
당신의 작업은 시작 구성, 출생 규칙, 생존 규칙 및 양의 정수 (실행 할 세대 수)가 주어지면 가능한 가장 짧은 코드로 주어진 세대 수에 대한 규칙을 사용하여 실제와 같은 자동 장치를 시뮬레이션합니다 . 시작 구성은 정사각 행렬 / 2 차원 배열 또는 여러 줄 문자열입니다. 다른 것들은 합리적인 형식과 방법으로 주어질 수 있습니다.
예를 들어 출생 규칙이 12345678
(살아있는 이웃이라면) 생존 규칙이었고 2357
시작 구성은
0 0 0 0 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
다음 두 세대는
Generation 1: Generation 2:
0 0 0 0 0 1 1 1 1 1
0 1 1 1 0 1 1 0 1 1
0 1 0 1 0 1 0 1 0 1
0 1 1 1 0 1 1 0 1 1
0 0 0 0 0 1 1 1 1 1
주어진 세대의 수가 10이라면, 출력은
0 1 1 1 0
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
0 1 1 1 0
입력 행렬이 제공 한 범위를 벗어난 변경 내용을 처리 할 필요는 없지만 행렬 외부의 모든 셀이 죽기 시작합니다. 따라서 입력 매트릭스는 언어가 지원할 수있는 최대 값까지 모든 크기가 될 수 있습니다. 세대간에 보드를 출력 할 필요는 없습니다.
이것은 코드 골프 이므로 가장 짧은 코드가 승리합니다.
테스트 사례
이들은 B/S
표기법을 사용하여 사용 된 규칙을 나타냅니다.
B2/S2
, generations = 100
구성 :
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
산출:
0 0 0 0 0 0 0 0
0 1 0 0 0 0 1 0
1 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
B1357/S2468
, generations = 12
구성 :
1 0 1 0 1 0
0 1 1 0 1 0
1 0 0 0 0 0
0 0 0 0 0 1
1 1 1 1 1 0
0 1 1 0 0 1
산출:
0 1 0 0 0 0
0 1 1 1 1 0
0 1 0 1 1 0
1 1 1 0 0 0
0 0 1 1 1 0
0 1 1 0 0 0
더 많은 테스트 사례를 생성해야하는 경우이 훌륭한 시뮬레이터를 사용할 수 있습니다 . 보드 크기를 제한하십시오