검은색과 흰색 셀로 이루어진 포장된 격자에서 작동하고 시계의 모든 틱에서 사용자 정의 규칙을 따르는 간단한 N 상태 2색 튜링 기계입니다.
실행 예제는 http://turmites.destructuring-bind.org를 참조하세요. 기본적으로 하나의 개미가 자동으로 생성됩니다. 캔버스를 클릭하면 개미를 더 추가할 수 있습니다.
규칙은 rule=...
매개변수를 추가하여 지정할 수 있으며, 그 중 허용 가능한 값이 아래에 나와 있습니다.
langtons-ant(120080의 암시적 규칙이 있음)
코일형 로프(암시적 규칙: 111180121010)
컴퓨터 아트(암시적 규칙: 180121020081)
피보나치(암시적 규칙: 181181121010)
웜 트레일(암시적 규칙: 121181121020)
줄무늬-나선형(암시적 규칙: 021080181020)
사전 정의된 규칙의 전체 목록은 여기에서 확인할 수 있습니다. 규칙이 지정되지 않은 경우 사전 정의된 규칙이 무작위로 선택됩니다. 또는 규칙 정의를 일련의 숫자로 지정할 수도 있습니다. http://turmites.destructuring-bind.org/?rule=021080181020
N 상태 2색 규칙은 2N 트리플, {a,b,c} 로 구성됩니다. 여기서:
a : 사각형의 새로운 색상
b : 터마이트가 회전하는 방향
c : 터마이트의 새로운 내부 상태
예를 들어, 피보나치 투르마이트(fibonacci turmite)는 규칙 정의 181181121010이 2개의 상태와 2개의 색상을 가지며 4개의 트리플 {1,8,1}, {1,8,1}, {1,2,1} 및 {0으로 분할됩니다. ,1,0}. 특정 트리플은 현재 상태와 현재 색상을 기반으로 선택됩니다. 따라서 {1,8,1} 트리플은 색상이 1로 변경되고 왼쪽(8)으로 회전한 후 앞으로 이동하기 전에 상태 1을 채택해야 함을 나타냅니다.
회전 방향은 다음과 같이 지정됩니다.
1: 회전 없음
2: 오른쪽
4: 유턴
8: 왼쪽
동작은 흰개미의 현재 내부 상태와 현재 서 있는 셀의 색상을 나열하는 상태 전이 테이블에 의해 지정됩니다. 예를 들어, 위에 표시된 피보나치 트리플에 사용할 다음 규칙 세트는 다음 표에서 사용됩니다.
current-color = 0 current-color = 1
current-state = 0 1,8,1 1,8,1
current-state = 1 1,2,1 0,1,0
따라서 현재 상태가 1이고 현재 색상이 0이면 {1,2,1} 트리플이 선택되고 여기에서 새 색상, 방향 및 상태가 파생됩니다.
leiningen을 사용하여 느와르 인스턴스를 호출합니다.
$ lein run
clojure 스크립트는 빌드의 일부로 javascript로 컴파일되므로 http://localhost:8080으로 이동합니다.
자바스크립트를 편집하려고 하지 마세요. 자바스크립트는 lein-cljsbuild 플러그인과 함께 Leiningen을 사용하여 src/turmites/client/core.cljs
의 ClojureScript에서 컴파일됩니다.
$ lein cljsbuild clean
$ lein cljsbuild auto
파일을 저장한 후 브라우저에서 페이지를 새로 고치고 컴파일 단계가 완료될 때까지 기다립니다.
Turmites는 Langtons-ants의 일반화입니다.
Stephen Wolfram의 "A New Kind of Science", ISBN 1-57955-008-8에서 (일부) 영감을 받음
http://www.maa.org/editorial/mathgames/mathgames_06_07_04.html
http://code.google.com/p/ruletablerepository/wiki/TwoDimensionalTuringMachines
http://demonstrations.wolfram.com/Turmites/
https://en.wikipedia.org/wiki/Turmite
http://golly.sourceforge.net/
저작권 (c) Richard Hull 2012
Eclipse 공개 라이센스와 동일 - v 1.0: https://www.eclipse.org/legal/epl-v10.html