Uma máquina de Turing simples de duas cores com N estados que opera em uma grade enrolada de células pretas e brancas e segue regras personalizadas em cada tique de um relógio.
Consulte http://turmites.destructuring-bind.org para obter um exemplo em execução. Por padrão, uma formiga é criada automaticamente; Formigas extras podem ser adicionadas clicando na tela.
As regras podem ser especificadas adicionando um parâmetro rule=...
, do qual alguns valores permitidos são mostrados abaixo.
langtons-ant (que tem uma regra implícita de 120080)
corda enrolada (regra implícita: 111180121010)
arte computacional (regra implícita: 180121020081)
fibonacci (regra implícita: 181181121010)
trilhas de minhoca (regra implícita: 121181121020)
espiral listrada (regra implícita: 021080181020)
Uma lista completa de regras predefinidas pode ser encontrada aqui. Se nenhuma regra for fornecida, uma pré-definida será selecionada aleatoriamente. Ou, alternativamente, as definições de regras podem ser especificadas como uma sequência de dígitos numéricos, por exemplo. http://turmites.destructuring-bind.org/?rule=021080181020
Uma regra de duas cores de N estados consiste em 2N triplos, {a,b,c} , onde:
a : a nova cor do quadrado
b : a(s) direção(ões) para a turmite girar
c : o novo estado interno da turmite
Por exemplo, o turmite de fibonacci tem a definição de regra 181181121010 , tem dois estados e duas cores e é dividido em quatro triplos {1,8,1}, {1,8,1}, {1,2,1} e {0 ,1,0}. O triplo particulado é selecionado com base no estado atual e na cor atual. A tripla {1,8,1}, portanto, afirma que a cor deve mudar para 1, virar à esquerda (8) e adotar o estado 1 antes de avançar.
A direção para virar é especificada por:
1: sem volta
2: certo
4: inversão de marcha
8: esquerda
As ações são especificadas por uma tabela de transição de estado que lista o estado interno atual do turmite e a cor da célula em que ele está atualmente. Por exemplo, o próximo conjunto de regras a ser usado para os triplos de Fibonacci mostrados acima é usado pela tabela a seguir:
current-color = 0 current-color = 1
current-state = 0 1,8,1 1,8,1
current-state = 1 1,2,1 0,1,0
Portanto, se o estado atual for 1 e a cor atual for 0, o triplo {1,2,1} será selecionado e a nova cor, direção e estado serão derivados dele.
Invoque uma instância noir usando leiningen:
$ lein run
O script clojure será compilado em javascript como parte da compilação, então navegue até http://localhost:8080
Não tente editar o javascript - ele é compilado a partir do ClojureScript em src/turmites/client/core.cljs
usando Leiningen com o plugin lein-cljsbuild:
$ lein cljsbuild clean
$ lein cljsbuild auto
Atualize a página no navegador após salvar o arquivo e aguarde a conclusão da fase de compilação.
Turmites são uma generalização das formigas Langtons.
Inspirado (em parte) por 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/
Direitos autorais (c) Richard Hull 2012
Igual à licença pública Eclipse - v 1.0: https://www.eclipse.org/legal/epl-v10.html