배경
예, 비트 스트링 물리학은 실제입니다 . 아이디어는 확률 론적 규칙이나 다른 것 아래에서 진화하는 비트 열만 사용하여 새로운 물리 이론을 구성하는 것입니다. 그것에 관한 몇 가지 논문을 읽었음에도 불구하고 여전히 혼란 스럽습니다. 그러나 비트 스트링 유니버스는 멋진 코드 골프를 만듭니다.
프로그램 우주
비트 스트링 물리학은 소위 프로그램 세계에서 발생 합니다. 우주 진화의 각 단계 에는 두 개의 요소 목록 where로 시작하여 L
길이 가 한정된 유한 한 비트 열 k
목록 [10,11]
이 k = 2
있습니다. 한 단계는 다음과 같이 처리됩니다 (Python 계열 유사 코드).
A := random element of L
B := random element of L
if A == B:
for each C in L:
append a random bit to C
else:
append the bitwise XOR of A and B to L
모든 무작위 선택은 균일하게 무작위이며 서로 독립적입니다.
예
4 단계의 진화 예는 다음과 같습니다. 초기 목록으로 시작하십시오 L
.
10
11
우리는 무작위로 선택 A := 10
하고 B := 10
우리가 각각의 문자열을 확장 할 필요가 의미 같은 행,있는, L
임의의 비트 :
101
110
다음으로,를 선택 A := 101
하고 B := 110
같지 않기 때문에 XOR을 L
다음에 추가합니다 .
101
110
011
그런 다음 A := 011
and 를 선택 하고 B := 110
XOR을 다시 추가하십시오.
101
110
011
101
마지막으로 A := 101
(마지막 행)과 B := 101
(첫 번째 행) 을 선택 하여 임의의 비트로 확장합니다.
1010
1100
0111
1010
작업
당신의 임무는 음수가 아닌 정수 t
를 입력 으로 취하고, t
시간 간격을 위해 프로그램 유니버스를 시뮬레이션하고 , 결과 목록을 반환하거나 인쇄하는 것 L
입니다. 참고 t = 0
초기 목록에서 결과를 [10,11]
. L
정수 목록, 부울 값 목록 또는 문자열 목록으로 출력 할 수 있습니다 . 출력이 STDOUT으로 이동하면 비트 스트링을 한 줄에 하나씩 적당한 형식으로 인쇄 할 수도 있습니다. 비트 스트링의 순서는 중요합니다. 특히, 초기 목록이 될 수 없습니다 [11,10]
, [01,11]
또는 같은 것을. 기능과 전체 프로그램이 모두 허용되고 표준 허점이 허용되지 않으며 가장 적은 바이트 수가 승리합니다.