셀룰러 오토마타는 정말 매력적입니다. 일반적으로 이야기되는 것은 이진, 즉 숫자로 표현할 수있는 것입니다. 그러나 제 생각에는 그것들이 죽었습니다. 3 차 CA는 더 흥미롭지 만 모든 ASCII를 고려해야합니다! 얼마나 재밌 겠어요!
각 캐릭터에 대한 규칙 집합을 결정하는 대신 곧 이야기 할 간단한 결정 규칙을 사용합니다. 다음 세대를 결정하기 위해, 우리는 셀룰러 오토마타처럼 세 개의 "최상위"셀을 살펴 봅니다. 예를 살펴보십시오.
QWERTY
X Y Z
'상단은 "의이 Y
인 WER
상기 및 오른쪽, 위, 및 상기 좌우되는 세포. Y는 내가 정의하려는 함수의 결과이며, 이는 3 문자 문자열의 함수입니다. 은 "최고"의 X
이다 QW
, 또는 존재하지 않는 / 실종 셀의 공간 충전 .
이제 재미있는 기능을 위해 ! 이유를 위해이 시퀀스를 XOROR 시퀀스라고합니다. A
왼쪽 B
위 셀 문자 코드, 위 셀 문자 코드 및 C
오른쪽 위 셀 문자 코드를 보자 . 그런 다음 결과 셀은 문자가 (A XOR B) OR C
, 즉 인 문자입니다 (A^B)|C
. 결과 값이 126보다 크면 값이로 설정됩니다 (CHARCODE % 127) + 32
. 값이 32보다 작 으면 아무 것도 수행되지 않습니다. 다음은 시드의 예입니다 Hello, World!
.
S: Hello, World!
0: mmmo/c_ z}~)e
m = ( )^(H)|(e) = (32^72)|101 = 104|101 = 109 (m)
m = (H)^(e)|(l) = (72^101)|108 = 45|108 = 109 (m)
etc.
1: mmo/c_< +wl
2: mo/c_<c< + |;
3: o/c_<c ?+ g
4: oc_<c c??4+gg
5: 0_<c c 4+ o
6: _<c ccc4??ooo
7: c ccc4 ?o o
8: ccccc4w? pooo
9: cccc4w h o
A: ccc4wc hh ooo
B: cc4wc4kh ooo
C: c4wc4 #ooo o
D: wwc4w4#ooo oo
E: wc4wwc oo oo
F: w4wwc4oo oo o
G: wwwc4 oo oo
H: wwc4w4 oo oo
I: w4wwc4oooo oo
J: wwwc4 oo oo
K: wwc4w4oo oo o
L: wc4wwo oo oo
M: w4wwo8ooo oo
N: wwwo8 o oo o
O: wwo8w8oooo oo
그리고 우리는 잠시 후에 계속할 수 있습니다. 이 문자열 수정을 XOROR 시퀀스라고합니다.
목적 다음 작업 중 하나를 수행하는 프로그램이나 기능을 작성해야합니다.
- 문자열이 주어
s
와 숫자n >= 0
, 출력n
시드와 XOROR 번째 시퀀스에 문자열을s
가진n = 0
스트링의 변형 인 제. - 문자열이 주어지면
s
seed를 사용하여 XOROR 시퀀스의 무한 스트림을 출력 (프로그램) 또는 생성 (함수 / 생성기)하십시오s
. 시퀀스가 반복되면 중지하도록 선택할 수 있지만 반드시 그럴 필요는 없습니다.
s
공백에서 물결표 + 탭 (줄 바꿈 없음)에 이르기까지 항상 인쇄 가능한 ASCII 문자로만 구성됩니다.
이것은 code-golf 이므로 바이트 단위의 가장 짧은 프로그램이 승리합니다.
127%127+32==32
. 이후는 공백 (32)으로 바꿀 수 있습니다 .
n=0
원래 문자열 이 아닌 이유는 무엇 입니까?
(d^!)|(space)
. 두 번째 질문 은 XOROR이 수행 된 (CHAR%127)+32
후에 수행합니다.