소개
이 도전에서, 우리는 매우 나쁜 의사 난수를 사용하여 특정 확률 적 세포 오토 마톤 을 시뮬레이션 할 것 입니다. 셀룰러 오토 마톤은 다음 로컬 규칙에 따라 이진 문자열에 정의됩니다. 셀의 왼쪽 이웃과 셀 자체에 상태 a
와 가 있다고 가정합니다 b
.
- 인 경우
min(a,b) == 0
새로운 상태는b
입니다max(a,b)
. - 인 경우
min(a,b) == 1
의 새로운 상태b
가에서 임의로 선택됩니다{0,1}
.
다음 그림은 하나의 가능한 10 단계 진화를 보여줍니다 1
.
1
11
101
1111
11001
101011
1111111
10001001
110011011
1010111101
인접한 두 방법 주 1
의는 때때로 진화 1
하고, 때때로 0
, 국경 가장 비트는 항상1
s입니다. 당신의 임무는이 형태의 세포 자동 진화를 생산하는 것입니다.
입력
입력은 양의 정수로 n
, 표시 할 행 수와 비어 있지 않은 비트 목록을 L
나타내며 무작위 소스로 사용됩니다.
산출
출력에서 하나의 진화를 묘사리스트 또는 비트의 2 차원 배열의 목록 1
을 위해 n
상기 도면에서와 같이, 시간 단계. 원하는 경우 출력을 0
s로 채워 길이가 같은 행을 얻을 수 있지만 선행 0
s 가 없어야합니다 .
셀룰러 오토 마톤의 무작위 선택은 목록 L
에서 가져와야하고 소진되면 처음으로 되돌아 가야합니다. 보다 명확하게, 출력이 위에서 아래로, 왼쪽에서 오른쪽으로 한 행씩 순회하는 경우, 연속적인 무작위 선택 L
은 필요한만큼 반복 하여 목록을 형성해야 합니다.
예
입력이 n = 7
and 라고 가정합니다 L = [0,1,0]
. 그런 다음 셀룰러 오토 마톤은 7 단계에서 다음과 같이 진화 v
합니다.
[1]
[1,1]
v
[1,0,1]
[1,1,1,1]
v v v
[1,1,0,0,1]
v
[1,1,1,0,1,1]
v v v
[1,0,0,1,1,1,1]
우리가 표시된 모든 비트를 읽어 보면 v
, 우리가 얻을 01001001
,하는 L
2.66 회 반복. 다음 임의의 비트는입니다 0
.
규칙과 채점
전체 프로그램 또는 함수를 작성할 수 있습니다. 가장 낮은 바이트 수가 이기고 표준 허점은 허용되지 않습니다. 입력 및 출력의 정확한 형식은 중요하지 않습니다 (이유 내에서).
테스트 사례
결정적 버전, 모든 임의의 비트는 0
다음과 같습니다.
Inputs: 10 [0]
Output:
1
11
101
1111
10001
110011
1010101
11111111
100000001
1100000011
모든 임의의 비트는 1
다음과 같습니다.
Inputs: 6 [1,1]
Output:
1
11
111
1111
11111
111111
의사 난수 버전 :
Inputs: 10 [0,0,1]
Output:
1
11
101
1111
10101
111111
1010011
11110101
101011111
1111101001
Inputs: 10 [1,0,0,1]
Output:
1
11
111
1001
11011
111111
1001101
11010111
111111101
1011001111
Inputs: 15 [1,1,1,0,0,0]
Output:
1
11
111
1111
10001
110011
1110111
11011001
111111011
1100011111
11100100011
111101100101
1001111101111
11011000111111
101101001011101
min(a,b)
와a+b>1
와max(a,b)
함께a+b
? 나는 당신이 아마의 가장 첫 번째 경우 처리하기 위해 뭔가를해야 할 것 실현1
> -11
(나는 당신이 할 수 있다고 생각L=[1]+f()...
, 또는의 앞에 1을 삽입 할 수있는 방법 찾을L
것을 항상 두 번째 라인 1을 나타 때문에)를