1. 개요
Langton's Ant.
이곳[1]나 이곳[2]에서 직접 해볼 수 있다.
컴퓨터과학자 크리스토퍼 랭턴(Christopher Langton)[3]이 1986년에 제안한 세포 자동자. 또다른 세포 자동자인 콘웨이의 생명 게임보다는 덜 유명하지만 간단한 규칙으로 복잡한 변화를 보여준다는 공통점이 있다. 보편 튜링 머신임이 2000년에 증명됐다.
랭턴의 개미가 이동하는 규칙은 다음과 같다.
- 개미가 흰색 칸에 위치: 현재 위치한 칸을 검은색으로 바꿈, 왼쪽으로 90도 회전, 한 칸 전진
- 개미가 검은색 칸에 위치: 현재 위치한 칸을 흰색으로 바꿈, 오른쪽으로 90도 회전, 한 칸 전진
만약 랭턴의 개미 한 마리가 모든 칸이 흰색인 사각형 격자에서 움직이기 시작한다면, 개미는 약 10000번 동안 마구잡이로 이동하다가 갑자기 104번 주기로 같은 움직임을 반복하며 한 방향으로 무한히 나아간다.
랭턴의 개미를 일반화하여, 흰색과 검은색 대신 여러 개의 색을 사용할 수 있다. 첫 번째 색의 개미는 이동하면서 두 번째 색으로 바꾸고, 두 번째 색의 개미는 이동하면서 세 번째 색으로 바꾸고, 이런 식으로 쭉 이어지다가 마지막 색의 개미는 이동하면서 첫 번째 색으로 바꾸게 하면 된다. 개미의 이동방향에 관한 규칙을 알파벳만으로 간단히 나타낼 수 있다.[4]
사각형 격자를 사용하는 대신, 육각형 격자나 펜로즈 타일 등 다양한 타일을 사용할 수도 있다. 3차원 격자도 가능하다.
2. Turmite
이동 규칙에 따라 칸의 상태 뿐만이 아니라 개미의 상태도 변화[5]하면 turmite[6]라고 한다. turmite는 칸의 상태 종류 갯수에 개미의 상태 종류 갯수를 곱한 만큼 이동 규칙이 필요하므로 훨씬 다양한 움직임 패턴을 나타낼 수 있다.개미가 향하는 방향을 기준으로 개미를 회전시키면 relative turmite, 변하지 않는 방위(동서남북)를 기준으로 개미를 회전시키면 absolute turmite라고 한다. absolute turmite는 사실상 테이프가 2차원인 튜링 머신이다.
3. 목록
- 시작 상태는 개미 한 마리가 사각형 칸 (0, 0)에서 (0, 1)을 향하고 있을 때 기준
- 이동 규칙에서 L은 좌회전, R은 우회전, U는 U턴, N은 직진을 의미
- 이동 규칙에서 X는 L/R/U/N 중 아무거나 들어가도 결과가 바뀌지 않음을 의미
- 이동 규칙에서 모든 L과 R을 서로 바꾸면, 바꾸기 전과 좌우대칭인 같은 움직임을 보여준다. 표에서는 괄호가 아닌 쪽의 좌표만 기재
- 반복 간격에서 n은 n번째 구간을 의미
turmite까지 포함한 좀더 자세한 목록은 링크 참조[7]. 만약 칸의 상태가 n개일 때 반복 구간이 가장 늦게 나타나는 경우의 이동 횟수로 함수를 만든다면, 이는 정의가 비슷한 Maximum shifts function처럼 매우 빠르게 증가하여 정확한 값을 계산하는 것은 불가능하다.
===# 칸의 상태가 2개 #===
- 반복 구간 후에 좌표 변화가 있음: 7개 3종류
<rowcolor=#FFFFFF> 이동 규칙 | 반복 구간 최초 등장 직전 이동 횟수 | 반복 간격 | 반복 구간 최초 등장 직전 좌표 | 반복 구간 1번 후 좌표 변화 | 반복 구간 이동 속도 [8] |
LR (RL) | 9977 | 104 | 15, 10 | 2, -2 | 0.0272 |
UN | 0 | 3 | 0, 0 | 0, 1 | 0.3333 |
NX | 0 | 1 | 0, 0 | 0, 1 | 1 |
- 반복 구간 후에 좌표 변화가 없음: 7개 4종류
- 반복 간격 24: LU (RU), UL (UR)
- 반복 간격 8: LL (RR)
- 반복 간격 4: UU
- 반복 구간은 없지만 좌표 변화가 예측 가능함: 2개 1종류
- 2방향 확장: LN (RN)
- 반복 구간 후에 좌표 변화가 있음: 34개 11종류
<rowcolor=#FFFFFF> 이동 규칙 | 반복 구간 최초 등장 직전 이동 횟수 | 반복 간격 | 반복 구간 최초 등장 직전 좌표 | 반복 구간 1번 후 좌표 변화 | 반복 구간 이동 속도 |
LNU (RNU) | 6762만 43 | 92 | 218, -341 | 2, 0 | 0.0217 |
LUR (RUL) | 267만 85 | 378 | 18, 3 | 2, -2 | 0.0075 |
LLU (RRU) | 90 | 25 | 0, 0 | 0, 1 | 0.04 |
LUL (RUR) | 46 | 15 | 0, 0 | 0, 1 | 0.0667 |
LLR (RRL) | 39 | 18 | 2, -1 | -1, -1 | 0.0786 |
LUN (RUN) | 36 | 15 | -1, 1 | -1, 0 | 0.0667 |
UNU | 2 | 3 | 0, 0 | 0, 1 | 0.3333 |
LRN (RLN) | 0 | 18 | 0, 0 | 0, 2 | 0.1111 |
ULL (URR) | 0 | 5 | 0, 0 | 0, 1 | 0.2 |
UUN | 0 | 5 | 0, 0 | 0, 1 | 0.2 |
NXX | 0 | 1 | 0, 0 | 0, 1 | 1 |
- 반복 구간 후에 좌표 변화가 없음: 13개 7종류
- 반복 간격 276: LRU (RLU), ULR (URL)
- 반복 간격 36: LUU (RUU), ULU (URU), UUL (UUR)
- 반복 간격 12: LLL (RRR)
- 반복 간격 6: UUU
- 반복 구간은 없지만 좌표 변화가 예측 가능함: 7개 4종류
- 2방향 확장: LLN (RRN), LNL (RNR), LNN (RNN), UNN
- 반복 구간이 존재하는지 아직 밝혀내지 못함[9]: 10개 5종류
- LRL (RLR): 이동 횟수 약 616억
- LRR (RLL): 이동 횟수 약 1527억
- LNR (RNL): 이동 횟수 약 1255억
- ULN (URN): 이동 횟수 약 2815억
- UNL (UNR): 이동 횟수 약 2270억
- 반복 구간 후에 좌표 변화가 있음: 139개 39종류
<rowcolor=#FFFFFF> 이동 규칙 | 반복 구간 최초 등장 직전 이동 횟수 | 반복 간격 | 반복 구간 최초 등장 직전 좌표 | 반복 구간 1번 후 좌표 변화 | 반복 구간 이동 속도 |
UNLU (UNRU) | 965억 5714만 5085 | 174 | -3290, 1 | 0, -2 | 0.0115 |
ULRR (URLL) | 66억 5020만 9468 | 280 | -1118, 136 | -4, 0 | 0.0143 |
LUUR (RUUL) | 15억 8910만 6747 | 1136 | 18, 3 | 2, -2 | 0.0025 |
ULRL (URLR) | 14억 6870만 9636 | 638 | -503, 515 | 0, 2 | 0.0031 |
LULN (RURN) | 11억 6745만 4221 | 132 | -563, -710 | 0, -2 | 0.0152 |
UUNL (UUNR) | 6억 7427만 3232 | 79 | 395, 267 | 1, 0 | 0.0127 |
LLUR (RRUL) | 2억 5506만 2383 | 18만 5236 | -458, -805 | -105, 69 | 0.0007 |
LLUU (RRUU) | 1억 4855만 5690 | 32만 7776 | -1007, 389 | -37, 91 | 0.0003 |
LLNU (RRNU) | 1억 1317만 1947 | 1204 | 224, -427 | 1, -9 | 0.0075 |
ULNU (URNU) | 549만 9574 | 166 | -107, 71 | -3, -1 | 0.0190 |
LLRL (RRLR) | 25만 6241 | 384 | -47, 48 | 4, 4 | 0.0147 |
LUNN (RUNN) | 24만 3061 | 67 | -32, 15 | -2, 1 | 0.0334 |
LURL (RULR) | 4만 3564 | 339 | 23, 23 | 5, 0 | 0.0147 |
ULUR (URUL) | 2만 869 | 220 | 16, 9 | 2, -2 | 0.0129 |
LURU (RULU) | 1만 9449 | 196 | 16, 9 | 2, -2 | 0.0144 |
LRLR (RLRL) | 1만 77 | 104 | 15, 8 | 2, -2 | 0.0272 |
LNNU (RNNU) | 1656 | 57 | 2, 12 | 2, 1 | 0.0392 |
ULLL (URRR) | 1019 | 52n+239 | 3, -4 | 2, -1 -2, -1 -2, 1 2, 1 | - |
LUNL (RUNR) | 605 | 34 | 5, 4 | 0, 2 | 0.0588 |
LLUL (RRUR) | 429 | 162 | -1, 0 | -2, 0 | 0.0123 |
LLRU (RRLU) | 271 | 9 | 1, 4 | 0, 1 | 0.1111 |
LLRN (RRLN) | 135 | 28 | -3, -2 | -2, 0 | 0.0714 |
LLLR (RRRL) | 79 | 52 | 2, -1 | -2, -2 | 0.0544 |
LLLU (RRRU) | 70 | 23 | 0, 0 | 0, 1 | 0.0435 |
LUUN (RUUN) | 48 | 40 | -1, 1 | -2, 0 | 0.05 |
LRUN (RLUN) | 47 | 24 | 1, 0 | 2, 0 | 0.0833 |
UNNN | 8 | 5 | 0, 0 | 0, 1 | 0.2 |
UUNU | 4 | 5 | 0, 0 | 0, 1 | 0.2 |
LULL (RURR) | 3 | 9 | 0, -1 | 0, 1 | 0.1111 |
ULLU (URRU) | 2 | 5 | 0, 0 | 0, 1 | 0.2 |
UNLR (UNRL) | 2 | 5 | 0, 0 | 0, 1 | 0.2 |
UNUX | 2 | 3 | 0, 0 | 0, 1 | 0.3333 |
LRUR (RLUL) | 0 | 30 | 0, 0 | 0, 2 | 0.0667 |
LURR (RULL) | 0 | 18 | 0, 0 | 0, 2 | 0.1111 |
ULRN (URLN) | 0 | 9 | 0, 0 | 0, 1 | 0.1111 |
ULNR (URNL) | 0 | 7 | 0, 0 | 0, 1 | 0.1429 |
UULL (UURR) | 0 | 7 | 0, 0 | 0, 1 | 0.1429 |
UUUN | 0 | 7 | 0, 0 | 0, 1 | 0.1429 |
NXXX | 0 | 1 | 0, 0 | 0, 1 | 1 |
- 반복 구간 후에 좌표 변화가 없음: 21개 11종류
- 반복 간격 1216: LRUU (RLUU), ULRU (URLU), UULR (UURL)
- 반복 간격 48: LULU (RURU), LUUU (RUUU), ULUL (URUR), ULUU (URUU), UULU (UURU), UUUL (UUUR)
- 반복 간격 16: LLLL (RRRR)
- 반복 간격 8: UUUU
- 반복 구간은 없지만 좌표 변화가 예측 가능함: 20개 11종류
- 2방향 확장: LLLN (RRRN), LLNL (RRNR), LLNN (RRNN), LUNU (RUNU), LNLL (RNRR), LNLN (RNRN), LNNL (RNNR), LNNN (RNNN), ULUN (URUN), UUNN, UNNU
- 반복 구간이 존재하는지 아직 밝혀내지 못함[10]: 76개 38종류
- LLRR (RRLL): 이동 횟수 약 4조 9438억[상하대칭]
- LLUN (RRUN): 이동 횟수 약 642억
- LLNR (RRNL): 이동 횟수 약 2273억
- LRLL (RLRR): 이동 횟수 약 1610억
- LRLU (RLRU): 이동 횟수 약 737억
- LRLN (RLRN): 이동 횟수 약 720억
- LRRL (RLLR): 이동 횟수 약 103억[상하대칭]
- LRRR (RLLL): 이동 횟수 약 2363억
- LRRU (RLLU): 이동 횟수 약 1206억
- LRRN (RLLN): 이동 횟수 약 1400억
- LRUL (RLUR): 이동 횟수 약 2436억
- LRNL (RLNR): 이동 횟수 약 630억
- LRNR (RLNL): 이동 횟수 약 1388억
- LRNU (RLNU): 이동 횟수 약 863억
- LRNN (RLNN): 이동 횟수 약 1239억
- LULR (RURL): 이동 횟수 약 2139억
- LURN (RULN): 이동 횟수 약 1478억
- LUUL (RUUR): 이동 횟수 약 3429억
- LUNR (RUNL): 이동 횟수 약 1921억
- LNLR (RNRL): 이동 횟수 약 993억
- LNLU (RNRU): 이동 횟수 약 1355억
- LNRL (RNLR): 이동 횟수 약 903억
- LNRR (RNLL): 이동 횟수 약 1430억
- LNRU (RNLU): 이동 횟수 약 1779억
- LNRN (RNLN): 이동 횟수 약 1284억
- LNUL (RNUR): 이동 횟수 약 183억
- LNUR (RNUL): 이동 횟수 약 1827억
- LNUU (RNUU): 이동 횟수 약 2023억
- LNUN (RNUN): 이동 횟수 약 1184억
- LNNR (RNNL): 이동 횟수 약 1207억
- ULLR (URRL): 이동 횟수 약 3376억
- ULLN (URRN): 이동 횟수 약 4232억
- ULNL (URNR): 이동 횟수 약 3473억
- ULNN (URNN): 이동 횟수 약 4788억
- UULN (UURN): 이동 횟수 약 7275억
- UNLL (UNRR): 이동 횟수 약 2780억
- UNLN (UNRN): 이동 횟수 약 829억
- UNNL (UNNR): 이동 횟수 약 4718억
{{{#!folding [ 목록 펼치기 · 접기 ]
}}}
- 반복 구간 후에 좌표 변화가 있음: 538개 132종류
<rowcolor=#FFFFFF> 이동 규칙 | 반복 구간 최초 등장 직전 이동 횟수 | 반복 간격 | 반복 구간 최초 등장 직전 좌표 | 반복 구간 1번 후 좌표 변화 | 반복 구간 이동 속도 |
LUUUR (RUUUL) | 2177억 9137만 6193 | 2810 | 18, 3 | 2, -2 | 0.0010 |
LULUN (RURUN) | 1417억 4674만 4401 | 166 | 385, 4128 | 0, 2 | 0.0120 |
ULNRN (URNLN) | 691억 5463만 4995 | 47 | 3062, -475 | 1, 0 | 0.0213 |
UNNLN (UNNRN) | 413억 3188만 2915 | 138 | -2425, -600 | -2, 0 | 0.0074 |
LUNLU (RUNRU) | 385억 2541만 2648 | 205 | -1958, -3906 | -3, 0 | 0.0146 |
UNNLU (UNNRU) | 341억 2811만 7730 | 272 | 1314, -1384 | 0, -2 | 0.0074 |
LRRUR (RLLUL) | 224억 8177만 6988 | 347 | -533, 3667 | -2, 1 | 0.0064 |
LNULL (RNURR) | 137억 6970만 9086 | 639 | 1693, -1319 | 0, -5 | 0.0078 |
LURLL (RULRR) | 97억 3152만 9411 | 179 | -693, 2206 | 1, 2 | 0.0125 |
LLLRL (RRRLR) | 88억 1770만 4078 | 332 | 1079, -1437 | 2, -2 | 0.0085 |
LLLNR (RRRNL) | 70억 7182만 1517 | 1519 | 1296, 395 | 13, 6 | 0.0094 |
LRLUU (RLRUU) | 48억 8215만 4969 | 32만 2274 | -1955, -2736 | 9, -107 | 0.0003 |
ULNNR (URNNL) | 31억 3020만 6318 | 94 | 844, -676 | 2, 0 | 0.0213 |
LLNRN (RRNLN) | 14억 4154만 5729 | 96 | 885, -206 | 2, -2 | 0.0295 |
LUURL (RUULR) | 10억 239만 1344 | 4953 | -1364, 968 | -17, 12 | 0.0042 |
UULLR (UURRL) | 9억 2828만 3721 | 248 | -318, -467 | -2, 0 | 0.0081 |
LLUNN (RRUNN) | 4억 9998만 1455 | 92 | 558, 227 | 2, 0 | 0.0217 |
LNLRU (RNRLU) | 4억 8561만 7640 | 121 | 287, 787 | 0, 3 | 0.0248 |
LRULL (RLURR) | 2억 7251만 6201 | 106 | -492, 285 | -2, 0 | 0.0189 |
UUNLN (UUNRN) | 2억 878만 1501 | 59 | -97, 406 | 0, 1 | 0.0169 |
LUULN (RUURN) | 1억 6681만 492 | 124 | -406, -10 | -2, 0 | 0.0161 |
LUNUN (RUNUN) | 1억 3884만 3634 | 124 | 257, -329 | 2, 0 | 0.0161 |
UULNU (UURNU) | 1억 1983만 2858 | 270 | 17, -299 | 0, -2 | 0.0074 |
LLURR (RRULL) | 7419만 635 | 80 | -12, -303 | 0, -2 | 0.025 |
ULLNL (URRNR) | 6630만 1186 | 102 | -249, 155 | 0, 2 | 0.0196 |
LNLRN (RNRLN) | 6512만 9519 | 64 | 328, 119 | 2, 0 | 0.0313 |
UUNNL (UUNNR) | 5401만 9213 | 240 | 86, -147 | 2, 0 | 0.0083 |
LULRL (RURLR) | 4992만 5920 | 310 | 187, 221 | 1, 3 | 0.0102 |
LNULN (RNURN) | 4630만 1314 | 2284 | 20, -366 | 20, -12 | 0.0102 |
LLURL (RRULR) | 2972만 9621 | 92 | -232, -285 | 0, -2 | 0.0217 |
ULLRU (URRLU) | 2820만 8033 | 190 | 217, -262 | 2, 0 | 0.0105 |
LUNLR (RUNRL) | 1894만 5252 | 76 | 59, -175 | 0, -2 | 0.0263 |
LNLRL (RNRLR) | 1403만 400 | 74 | -84, -230 | 0, -2 | 0.0270 |
LNNUU (RNNUU) | 752만 8251 | 816 | -150, -319 | 8, -4 | 0.0110 |
UULNN (UURNN) | 737만 6507 | 354 | -86, -13 | -4, 0 | 0.0113 |
ULUNN (URUNN) | 584만 6137 | 220 | -10, -119 | 0, -2 | 0.0091 |
LRNLL (RLNRR) | 539만 1983 | 221 | 74, -123 | -2, -5 | 0.0244 |
LLLUL (RRRUR) | 188만 1903 | 3289 | -25, -88 | -5, -2 | 0.0016 |
LUNRL (RUNLR) | 158만 5398 | 399 | -25, 159 | 6, 3 | 0.0168 |
LUNRN (RUNLN) | 157만 7324 | 71 | -73, 61 | -1, 2 | 0.0315 |
LRLUR (RLRUL) | 142만 8927 | 2052 | 95, -72 | 6, -6 | 0.0041 |
LNUNL (RNUNR) | 52만 9538 | 56 | 105, -37 | 0, -2 | 0.0357 |
LUURU (RUULU) | 48만 9531 | 718 | 16, 5 | 2, -2 | 0.0039 |
LUNUU (RUNUU) | 42만 1106 | 106 | 66, 52 | 6, 0 | 0.0566 |
LURLR (RULRL) | 41만 2128 | 2294 | 32, -10 | 10, -10 | 0.0062 |
ULUUR (URUUL) | 33만 1026 | 1078 | 19, 7 | 4, -4 | 0.0052 |
ULULR (URURL) | 23만 1787 | 277 | 43, -50 | 1, -2 | 0.0081 |
LURLU (RULRU) | 18만 719 | 366 | -56, -79 | -2, -2 | 0.0077 |
ULLRL (URRLR) | 13만 1249 | 57 | -29, 8 | -1, 0 | 0.0175 |
LRNRN (RLNLN) | 8만 3781 | 38 | -1, 36 | -1, 1 | 0.0372 |
ULLRR (URRLL) | 5만 5780 | 68 | -28, -2 | 0, -2 | 0.0294 |
LLRUN (RRLUN) | 5만 4324 | 22 | 15, 25 | -1, 1 | 0.0643 |
LNUNU (RNUNU) | 2만 638 | 68 | -22, 22 | -2, 0 | 0.0294 |
LNLNR (RNRNL) | 1만 7002 | 56 | -11, 11 | -2, 2 | 0.0505 |
LURRU (RULLU) | 1만 5880 | 44 | 20, 8 | 2, 0 | 0.0455 |
LLUUU (RRUUU) | 1만 4838 | 232 | -5, 23 | 0, 2 | 0.0086 |
ULRRN (URLLN) | 1만 4238 | 64 | 11, -1 | 2, 0 | 0.0313 |
LNNUL (RNNUR) | 1만 3753 | 59 | 9, 22 | 2, 1 | 0.0379 |
LLUNR (RRUNL) | 6467 | 67 | 4, -15 | 1, -2 | 0.0334 |
LULNU (RURNU) | 6302 | 54 | -6, 14 | 0, 2 | 0.0370 |
LLUUR (RRUUL) | 6005 | 123 | -9, -12 | 4, -1 | 0.0335 |
ULLRN (URRLN) | 5948 | 56 | -1, -7 | 2, 0 | 0.0357 |
UNLLL (UNRRR) | 4426 | 64n+712 | 20, 0 | 2, 0 0, -2 -2, 0 0, 2 | - |
LLLNU (RRRNU) | 3469 | 132 | -3, 6 | -1, 3 | 0.0240 |
LRLNU (RLRNU) | 3379 | 54 | -6, -13 | 2, -2 | 0.0524 |
LLRLU (RRLRU) | 3321 | 29 | -5, -8 | -1, 0 | 0.0345 |
ULRUR (URLUL) | 2542 | 185 | 3, 5 | 1, 0 | 0.0054 |
LLURU (RRULU) | 2305 | 48 | 9, -4 | 2, 0 | 0.0417 |
LLRLL (RRLRR) | 1864 | 192n+572 | 8, 2 | 2, 2 2, -2 -2, -2 -2, 2 | - |
LUUNU (RUUNU) | 1202 | 48 | 0, 6 | 0, 2 | 0.0417 |
LUUNL (RUUNR) | 1071 | 44 | 9, -6 | 2, 0 | 0.0455 |
LLULN (RRURN) | 925 | 54 | 3, -6 | 0, -2 | 0.0370 |
UNLLR (UNRRL) | 633 | 48 | 2, -5 | 0, -2 | 0.0417 |
LLLUR (RRRUL) | 557 | 52 | 5, 0 | 2, 0 | 0.0385 |
ULRRR (URLLL) | 511 | 48 | -2, -3 | 0, -2 | 0.0417 |
LRLRN (RLRLN) | 498 | 17 | 2, -4 | 0, -1 | 0.0588 |
LUNLN (RUNRN) | 476 | 69 | 1, 7 | 2, 1 | 0.0324 |
ULLLL (URRRR) | 326 | 116n+199 | -2, -2 | -1, 0 -1, 2 1, 0 1, -2 | - |
LULRU (RURLU) | 313 | 30 | -2, -1 | -1, -1 | 0.0471 |
LLLLU (RRRRU) | 241 | 45 | -1, 0 | -1, 0 | 0.0222 |
ULLLU (URRRU) | 210 | 208n+188 | -1, -1 | -1, -1 -1, 1 1, 1 1, -1 | - |
ULUNU (URUNU) | 179 | 83 | 1, 2 | 1, 2 | 0.0269 |
LULRR (RURLL) | 176 | 246 | -2, -2 | -6, 0 | 0.0244 |
LLRNL (RRLNR) | 145 | 28 | -3, 0 | -2, 0 | 0.0714 |
LLNNU (RRNNU) | 143 | 9 | 3, -2 | 1, 0 | 0.1111 |
LULRN (RURLN) | 129 | 32 | 0, -3 | 0, -2 | 0.0625 |
LLLLR (RRRRL) | 103 | 68 | 2, -1 | -2, -2 | 0.0416 |
LUULU (RUURU) | 81 | 23 | 0, -1 | 1, 0 | 0.0435 |
ULUUN (URUUN) | 70 | 52 | -1, 1 | -2, 0 | 0.0385 |
LUNLL (RUNRR) | 68 | 38 | 2, -2 | 2, 0 | 0.0526 |
UNLUL (UNRUR) | 61 | 80n+50 | -1, -2 | 0, -2 -2, 0 0, 2 2, 0 | - |
LUUUN (RUUUN) | 60 | 50 | -1, 1 | -2, 0 | 0.04 |
LULUU (RURUU) | 57 | 31 | -1, 0 | -1, 0 | 0.0323 |
LRUUN (RLUUN) | 52 | 28 | 0, 0 | 2, 0 | 0.0714 |
LULUL (RURUR) | 35 | 29 | -1, 0 | -1, 0 | 0.0345 |
LLRUL (RRLUR) | 29 | 9 | 0, 1 | 0, 1 | 0.1111 |
LULLU (RURRU) | 24 | 23 | 0, 0 | 0, 1 | 0.0435 |
UNNUN | 24 | 9 | 0, 0 | 0, 1 | 0.1111 |
ULUUL (URUUR) | 12 | 17 | 0, 0 | -1, 0 | 0.0588 |
ULLNN (URRNN) | 12 | 7 | 0, 0 | 0, 1 | 0.1429 |
UNLLN (UNRRN) | 12 | 7 | 0, 0 | 0, 1 | 0.1429 |
ULULL (URURR) | 11 | 11 | -1, 0 | -1, 0 | 0.0909 |
LRNLR (RLNRL) | 10 | 18 | -1, -1 | 0, 2 | 0.1111 |
UUNNN | 10 | 7 | 0, 0 | 0, 1 | 0.1429 |
LRLUN (RLRUN) | 8 | 29 | 0, 0 | 2, -1 | 0.0771 |
ULRNU (URLNU) | 8 | 7 | 0, 0 | 0, 1 | 0.1429 |
UNNLL (UNNRR) | 8 | 7 | 0, 0 | 0, 1 | 0.1429 |
UNNNU | 8 | 5 | 0, 0 | 0, 1 | 0.2 |
LLULL (RRURR) | 7 | 13 | 0, -1 | 0, 1 | 0.0769 |
UUUNU | 6 | 7 | 0, 0 | 0, 1 | 0.1429 |
UULLU (UURRU) | 4 | 7 | 0, 0 | 0, 1 | 0.1429 |
UUNLR (UUNRL) | 4 | 7 | 0, 0 | 0, 1 | 0.1429 |
UUNUU | 4 | 5 | 0, 0 | 0, 1 | 0.2 |
LUULL (RUURR) | 3 | 24 | 0, -1 | 0, 2 | 0.0833 |
LULLL (RURRR) | 3 | 22 | 0, -1 | 0, 2 | 0.0909 |
ULLLR (URRRL) | 2 | 7 | 0, 0 | 0, 1 | 0.1429 |
ULNRU (URNLU) | 2 | 7 | 0, 0 | 0, 1 | 0.1429 |
UNLNL (UNRNR) | 2 | 7 | 0, 0 | 0, 1 | 0.1429 |
ULLUX (URRUX) | 2 | 5 | 0, 0 | 0, 1 | 0.2 |
UNLRX (UNRLX) | 2 | 5 | 0, 0 | 0, 1 | 0.2 |
UNUXX | 2 | 3 | 0, 0 | 0, 1 | 0.3333 |
LRUUR (RLUUL) | 0 | 36 | 0, 0 | 0, 2 | 0.0556 |
LURUN (RULUN) | 0 | 32 | 0, 0 | 0, 2 | 0.0625 |
LUURR (RUULL) | 0 | 22 | 0, 0 | 0, 2 | 0.0909 |
ULULN (URURN) | 0 | 14 | 0, 0 | -1, 1 | 0.1010 |
ULRUN (URLUN) | 0 | 11 | 0, 0 | 0, 1 | 0.0909 |
UULRN (UURLN) | 0 | 11 | 0, 0 | 0, 1 | 0.0909 |
UULUL (UURUR) | 0 | 9 | 0, 0 | 0, 1 | 0.1111 |
UULNR (UURNL) | 0 | 9 | 0, 0 | 0, 1 | 0.1111 |
UUULL (UUURR) | 0 | 9 | 0, 0 | 0, 1 | 0.1111 |
UUUUN | 0 | 9 | 0, 0 | 0, 1 | 0.1111 |
NXXXX | 0 | 1 | 0, 0 | 0, 1 | 1 |
- 반복 구간 후에 좌표 변화가 없음: 23개 12종류
- 반복 간격 3940: LRUUU (RLUUU), ULRUU (URLUU), UULRU (UURLU), UUULR (UUURL)
- 반복 간격 60: LUUUU (RUUUU), ULUUU (URUUU), UULUU (UURUU), UUULU (UUURU), UUUUL (UUUUR)
- 반복 간격 20: LLLLL (RRRRR), ULULU (URURU)
- 반복 간격 10: UUUUU
- 반복 구간은 없지만 좌표 변화가 예측 가능함: 37개 21종류
- 2방향 확장: LLLLN (RRRRN), LLLNL (RRRNR), LLLNN (RRRNN), LLNLL (RRNRR), LLNLN (RRNRN), LLNNL (RRNNR), LLNNN (RRNNN), LNLLL (RNRRR), LNLLN (RNRRN), LNLNL (RNRNR), LNLNN (RNRNN), LNNLL (RNNRR), LNNLN (RNNRN), LNNNL (RNNNR), LNNNN (RNNNN), UNNNN, UNNUU, UUNNU, UUNUN, UUUNN
- 4방향 확장: LLULU (RRURU)
- 반복 구간이 존재하는지 아직 밝혀내지 못함: 426개 213종류
- 좌표의 확장 속도가 매우 느림: LLLRR (RRRLL), LLRRL (RRLLR), LLRRR (RRLLL), LRLRU (RLRLU), LRRLL (RLLRR), LRRRL (RLLLR), LRULR (RLURL), LURUU (RULUU), ULRLR (URLRL), ULURU (URULU), UULUR (UURUL)
- x좌표 또는 y좌표가 +-5000에 도달할 때까지 반복 구간이 등장하지 않음
{{{#!folding [ 목록 펼치기 · 접기 ] - LLLRU (RRRLU): 이동 횟수 약 1420억
- LLLRN (RRRLN): 이동 횟수 약 2606억
- LLLUU (RRRUU): 이동 횟수 약 1500억
- LLLUN (RRRUN): 이동 횟수 약 1587억
- LLRLR (RRLRL): 이동 횟수 약 1787억
- LLRLN (RRLRN): 이동 횟수 약 1130억
- LLRRU (RRLLU): 이동 횟수 약 2963억
- LLRRN (RRLLN): 이동 횟수 약 1989억
- LLRUR (RRLUL): 이동 횟수 약 1972억
- LLRUU (RRLUU): 이동 횟수 약 1451억
- LLRNR (RRLNL): 이동 횟수 약 2458억
- LLRNU (RRLNU): 이동 횟수 약 1050억
- LLRNN (RRLNN): 이동 횟수 약 1676억
- LLULR (RRURL): 이동 횟수 약 656억
- LLURN (RRULN): 이동 횟수 약 2142억
- LLUUL (RRUUR): 이동 횟수 약 536억
- LLUUN (RRUUN): 이동 횟수 약 1109억
- LLUNL (RRUNR): 이동 횟수 약 1255억
- LLUNU (RRUNU): 이동 횟수 약 1174억
- LLNLR (RRNRL): 이동 횟수 약 1440억
- LLNLU (RRNRU): 이동 횟수 약 1667억
- LLNRL (RRNLR): 이동 횟수 약 1652억
- LLNRR (RRNLL): 이동 횟수 약 2430억
- LLNRU (RRNLU): 이동 횟수 약 2574억
- LLNUL (RRNUR): 이동 횟수 약 330억
- LLNUR (RRNUL): 이동 횟수 약 1897억
- LLNUU (RRNUU): 이동 횟수 약 4376억
- LLNUN (RRNUN): 이동 횟수 약 1627억
- LLNNR (RRNNL): 이동 횟수 약 2195억
- LRLLL (RLRRR): 이동 횟수 약 2473억
- LRLLR (RLRRL): 이동 횟수 약 611억
- LRLLU (RLNNU): 이동 횟수 약 886억
- LRLLN (RLRRN): 이동 횟수 약 1120억
- LRLRL (RLRLR): 이동 횟수 약 1403억
- LRLRR (RLRLL): 이동 횟수 약 741억
- LRLUL (RLRUR): 이동 횟수 약 277억
- LRLNL (RLRNR): 이동 횟수 약 879억
- LRLNR (RLRNL): 이동 횟수 약 959억
- LRLNN (RLRNN): 이동 횟수 약 1072억
- LRRLR (RLLRL): 이동 횟수 약 1328억
- LRRLU (RLLRU): 이동 횟수 약 536억
- LRRLN (RLLRN): 이동 횟수 약 1112억
- LRRRR (RLLLL): 이동 횟수 약 2845억
- LRRRU (RLLLU): 이동 횟수 약 2255억
- LRRRN (RLLLN): 이동 횟수 약 2341억
- LRRUL (RLLUR): 이동 횟수 약 1178억
- LRRUU (RLLUU): 이동 횟수 약 1147억
- LRRUN (RLLUN): 이동 횟수 약 2212억
- LRRNL (RLLNR): 이동 횟수 약 1388억
- LRRNR (RLLNL): 이동 횟수 약 2086억
- LRRNU (RLLNU): 이동 횟수 약 1304억
- LRRNN (RLLNN): 이동 횟수 약 1867억
- LRULU (RLURU): 이동 횟수 약 922억
- LRULN (RLURN): 이동 횟수 약 1658억
- LRURL (RLULR): 이동 횟수 약 2072억
- LRURR (RLULL): 이동 횟수 약 815억
- LRURU (RLULU): 이동 횟수 약 3984억
- LRURN (RLULN): 이동 횟수 약 2114억
- LRUUL (RLUUR): 이동 횟수 약 2885억
- LRUNL (RLUNR): 이동 횟수 약 1384억
- LRUNR (RLUNL): 이동 횟수 약 2661억
- LRUNU (RLUNU): 이동 횟수 약 999억
- LRUNN (RLUNN): 이동 횟수 약 2974억
- LRNLU (RLNRU): 이동 횟수 약 602억
- LRNLN (RLNRN): 이동 횟수 약 906억
- LRNRL (RLNLR): 이동 횟수 약 1334억
- LRNRR (RLNLL): 이동 횟수 약 1666억
- LRNRU (RLNLU): 이동 횟수 약 1000억
- LRNUL (RLNUR): 이동 횟수 약 464억
- LRNUR (RLNUL): 이동 횟수 약 1945억
- LRNUU (RLNUU): 이동 횟수 약 842억
- LRNUN (RLNUN): 이동 횟수 약 1161억
- LRNNL (RLNNR): 이동 횟수 약 1177억
- LRNNR (RLNNL): 이동 횟수 약 1283억
- LRNNU (RLNNU): 이동 횟수 약 1088억
- LRNNN (RLNNN): 이동 횟수 약 1149억
- LULLR (RURRL): 이동 횟수 약 265억
- LULLN (RURRN): 이동 횟수 약 1313억
- LULUR (RURUL): 이동 횟수 약 1874억
- LULNL (RURNR): 이동 횟수 약 844억
- LULNR (RURNL): 이동 횟수 약 2912억
- LULNN (RURNN): 이동 횟수 약 3193억
- LURLN (RULRN): 이동 횟수 약 1628억
- LURRL (RULLR): 이동 횟수 약 1501억
- LURRR (RULLL): 이동 횟수 약 2548억
- LURRN (RULLN): 이동 횟수 약 2331억
- LURUL (RULUR): 이동 횟수 약 1919억
- LURUR (RULUL): 이동 횟수 약 1209억
- LURNL (RULNR): 이동 횟수 약 1043억
- LURNR (RULNL): 이동 횟수 약 1787억
- LURNU (RULNU): 이동 횟수 약 273억
- LURNN (RULNN): 이동 횟수 약 1315억
- LUULR (RUURL): 이동 횟수 약 4554억
- LUURN (RUULN): 이동 횟수 약 1737억
- LUUUL (RUUUR): 이동 횟수 약 3366억
- LUUNR (RUUNL): 이동 횟수 약 2418억
- LUUNN (RUUNN): 이동 횟수 약 512억
- LUNRR (RUNLL): 이동 횟수 약 2590억
- LUNRU (RUNLU): 이동 횟수 약 2274억
- LUNUL (RUNUR): 이동 횟수 약 1364억
- LUNUR (RUNUL): 이동 횟수 약 2598억
- LUNNL (RUNNR): 이동 횟수 약 1398억
- LUNNR (RUNNL): 이동 횟수 약 1202억
- LUNNU (RUNNU): 이동 횟수 약 1966억
- LUNNN (RUNNN): 이동 횟수 약 336억
- LNLLR (RNRRL): 이동 횟수 약 1439억
- LNLLU (RNRRU): 이동 횟수 약 1594억
- LNLRR (RNRLL): 이동 횟수 약 1591억
- LNLUL (RNRUR): 이동 횟수 약 1188억
- LNLUR (RNRUL): 이동 횟수 약 1611억
- LNLUU (RNRUU): 이동 횟수 약 1890억
- LNLUN (RNRUN): 이동 횟수 약 1219억
- LNLNU (RNRNU): 이동 횟수 약 1088억
- LNRLL (RNLRR): 이동 횟수 약 614억
- LNRLR (RNLRL): 이동 횟수 약 1340억
- LNRLU (RNLRU): 이동 횟수 약 748억
- LNRLN (RNLRN): 이동 횟수 약 1060억
- LNRRL (RNLLR): 이동 횟수 약 1512억
- LNRRR (RNLLL): 이동 횟수 약 1475억
- LNRRU (RNLLU): 이동 횟수 약 1759억
- LNRRN (RNLLN): 이동 횟수 약 1642억
- LNRUL (RNLUR): 이동 횟수 약 1227억
- LNRUR (RNLUL): 이동 횟수 약 1987억
- LNRUU (RNLUU): 이동 횟수 약 2121억
- LNRUN (RNLUN): 이동 횟수 약 1526억
- LNRNL (RNLNR): 이동 횟수 약 945억
- LNRNR (RNLNL): 이동 횟수 약 1448억
- LNRNU (RNLNU): 이동 횟수 약 1463억
- LNRNN (RNLNN): 이동 횟수 약 1338억
- LNULR (RNURL): 이동 횟수 약 2206억
- LNULU (RNURU): 이동 횟수 약 1540억
- LNURL (RNULR): 이동 횟수 약 1616억
- LNURR (RNULL): 이동 횟수 약 1924억
- LNURU (RNULU): 이동 횟수 약 1477억
- LNURN (RNULN): 이동 횟수 약 1307억
- LNUUL (RNUUR): 이동 횟수 약 3122억
- LNUUR (RNUUL): 이동 횟수 약 2691억
- LNUUU (RNUUU): 이동 횟수 약 3031억
- LNUUN (RNUUN): 이동 횟수 약 1572억
- LNUNR (RNUNL): 이동 횟수 약 1545억
- LNUNN (RNUNN): 이동 횟수 약 891억
- LNNLR (RNNRL): 이동 횟수 약 1107억
- LNNLU (RNNRU): 이동 횟수 약 700억
- LNNRL (RNNLR): 이동 횟수 약 943억
- LNNRR (RNNLL): 이동 횟수 약 1532억
- LNNRU (RNNLU): 이동 횟수 약 717억
- LNNRN (RNNLN): 이동 횟수 약 1289억
- LNNUR (RNNUL): 이동 횟수 약 618억
- LNNUN (RNNUN): 이동 횟수 약 577억
- LNNNR (RNNNL): 이동 횟수 약 1153억
- LNNNU (RNNNU): 이동 횟수 약 702억
- ULLLN (URRRN): 이동 횟수 약 2989억
- ULLNR (URRNL): 이동 횟수 약 1716억
- ULLNU (URRNU): 이동 횟수 약 7316억
- ULRLL (URLRR): 이동 횟수 약 556억
- ULRLU (URLRU): 이동 횟수 약 738억
- ULRLN (URLRN): 이동 횟수 약 1401억
- ULRRL (URLLR): 이동 횟수 약 7768억
- ULRRU (URLLU): 이동 횟수 약 6671억
- ULRUL (URLUR): 이동 횟수 약 3216억
- ULRNL (URLNR): 이동 횟수 약 2287억
- ULRNR (URLNL): 이동 횟수 약 5216억
- ULRNN (URLNN): 이동 횟수 약 8376억
- ULURL (URULR): 이동 횟수 약 2629억
- ULURR (URULL): 이동 횟수 약 2410억
- ULURN (URULN): 이동 횟수 약 5034억
- ULUNL (URUNR): 이동 횟수 약 2809억
- ULUNR (URUNL): 이동 횟수 약 4583억
- ULNLL (URNRR): 이동 횟수 약 4169억
- ULNLR (URNRL): 이동 횟수 약 3171억
- ULNLU (URNRU): 이동 횟수 약 4515억
- ULNLN (URNRN): 이동 횟수 약 2148억
- ULNRL (URNLR): 이동 횟수 약 1260억
- ULNRR (URNLL): 이동 횟수 약 2820억
- ULNUL (URNUR): 이동 횟수 약 2650억
- ULNUR (URNUL): 이동 횟수 약 3098억
- ULNUU (URNUU): 이동 횟수 약 2437억
- ULNUN (URNUN): 이동 횟수 약 2081억
- ULNNL (URNNR): 이동 횟수 약 4332억
- ULNNU (URNNU): 이동 횟수 약 4753억
- ULNNN (URNNN): 이동 횟수 약 2388억
- UULLL (UURRR): 이동 횟수 약 6600억
- UULLN (UURRN): 이동 횟수 약 1조 5192억
- UULRL (UURLR): 이동 횟수 약 1890억
- UULRR (UURLL): 이동 횟수 약 7151억
- UULUN (UURUN): 이동 횟수 약 5534억
- UULNL (UURNR): 이동 횟수 약 1조 2186억
- UUULN (UUURN): 이동 횟수 약 1조 4048억
- UUUNL (UUUNR): 이동 횟수 약 1조 429억
- UUNLL (UUNRR): 이동 횟수 약 1조 2983억
- UUNLU (UUNRU): 이동 횟수 약 7787억
- UUNUL (UUNUR): 이동 횟수 약 3698억
- UNLLU (UNRRU): 이동 횟수 약 5786억
- UNLUR (UNRUL): 이동 횟수 약 1982억
- UNLUU (UNRUU): 이동 횟수 약 3066억
- UNLUN (UNRUN): 이동 횟수 약 1743억
- UNLNR (UNRNL): 이동 횟수 약 1192억
- UNLNU (UNRNU): 이동 횟수 약 862억
- UNLNN (UNRNN): 이동 횟수 약 1667억
- UNNLR (UNNRL): 이동 횟수 약 9253억
- UNNUL (UNNUR): 이동 횟수 약 1조 1052억
- UNNNL (UNNNR): 이동 횟수 약 2250억
}}}
4. 프로세싱 코드
모든 상태 변화를 일일히 보여주는 위의 사이트와는 달리 최종 결과만을 보여주므로 훨씬 속도가 빠르다. 프로세싱을 설치한 후, 새 스케치를 열고 아래 코드를 복사[13]하여 저장 후 실행하면 된다. 진행 과정을 보여주는 프로세싱 코드는 여기를 참고.- [ 코드 펼치기 · 접기 ]
// The following are adjustable parameters
String rule = "LR"; // Rule that the ant follows (L: turn left, R: turn right, U: turn 180, N: no change)
int initialDir = 0; // Initial direction of the ant (0: up, 1: left, 2: down, 3: right)
float cellSize = 1; // Size of cells in pixels
int numSteps = 100000000; // Number of steps done per frame
long stepLimit = 10000L*numSteps; // Maximum number of steps
int stepDisplayPeriod = 100000000; // How often showing the progress in console (Don't make it too low)
// The following are non-adjustable
Ant a; // The ant that moves around the field
int[][] field; // Array of values for cells in the field
int numColors = rule.length(); // Number of cell states
int w, h; // Width and height of screen in cells (rather than pixels)
long stepCounts = 0; // Total number of steps done
void setup() {frameRate(1); // Frame rate per second}
size(1000, 1000); // Size of screen in pixels (Adjust memory limit in settings for large size)
background(255);
noStroke();
w = int(width/cellSize);
h = int(height/cellSize);
a = new Ant(w/2, h/2, initialDir);
field = new int[w][h];
void draw() {for (int c = 0; c < numSteps; c++)}if (stepCounts == stepLimit || a.xPos == 0 || a.xPos == w-1 || a.yPos == 0 || a.yPos == h-1) {for (int m = 0; m < w; m++)}for (int n = 0; n < h; n++)if (stepCounts == stepLimit)if (field[m][n] != 0) {fill(255*((field[m][n]+numColors-1)%numColors)/(numColors-1));}
rect(m*cellSize, n*cellSize, cellSize, cellSize);println("Total steps done:", stepCounts);else {fill(0);}
rect(a.xPos*cellSize, a.yPos*cellSize, cellSize, cellSize);
println("Total steps done:", stepCounts+1);
save("ant_" + rule + ".png");
noLoop();
break;
else a.update();
class Ant {int xPos, yPos, dir;}
Ant(int tXPos, int tYPos, int tDir) {xPos = tXPos;}
yPos = tYPos;
dir = tDir;
void update() {stepCounts++;}
if (stepCounts % stepDisplayPeriod == 0)println("current steps:", stepCounts, "(", xPos-w/2, "," , h/2-yPos, ")");char rotation = rule.charAt(field[xPos][yPos]);
switch (rotation) {
case 'L':dir++;case 'R':
if (dir == 4) dir = 0;
break;dir--;case 'U':
if (dir == -1) dir = 3;
break;dir = (dir+2)%4;}
break;
field[xPos][yPos] = (field[xPos][yPos]+1)%numColors;
switch (dir) {
case 0:yPos--;case 1:
break;xPos--;case 2:
break;yPos++;case 3:
break;xPos++;}
break;
[1] 4방향 이동, 색 지정, 개미 수 지정, 상하좌우 루프(토러스 격자) 기능 제공[2] 속도 조절 기능 제공. 4방향 이동은 설정의 configuration에서 색 한 개당 (0,반시계방향회전각도,1)를 입력하면 구현할 수 있다. 예를 들어 LRUN은 (0,90,1),(0,-90,1),(0,180,1),(0,0,1)로 표현이 가능하다.[3] 인공생명체라는 용어를 처음으로 사용한 사람이기도 하다.[4] 예를 들어 LLRL이라는 규칙은 '1번째 색일 때 좌회전(L), 2번째 색일 때 좌회전(L), 3번째 색일 때 우회전(R), 4번째 색일 때 좌회전(L) 후 이동하면서 다음 색으로 변경'을 의미한다.[5] 색이 변하는 칸과는 달리 눈에 보이지는 않는다.[6] 튜링 머신(Turing Machine)과 흰개미(Termite)에서 글자를 따왔다.[7] Golly 프로그램에서의 표기법을 따라 {칸의 다음 상태, 회전 방향, 개미의 다음 상태}의 행렬로 표현한다. 회전 방향에서 1은 직진, 2는 우회전, 4는 U턴, 8은 좌회전을 의미.[8] ('반복 구간 1번 후 x좌표 변화량의 제곱' + '반복 구간 1번 후 y좌표 변화량의 제곱')의 제곱근 나누기 '반복 간격'[9] x좌표 또는 y좌표가 +-5000에 도달할 때까지 반복 구간이 등장하지 않음[10] x좌표 또는 y좌표가 +-5000에 도달할 때까지 반복 구간이 등장하지 않음[상하대칭] [상하대칭] [13] 그냥 복사해도 되지만, 들여쓰기 때문에 문서 편집창에서 복사하기를 추천한다.