Existem várias formas de extender o conceito de formiga de Langton. Neste exercício, vamos explorar a primeira, a usar mais que duas cores. Ela se mantem muito similar ao caso base: o comportamento em cada passo ainda depende da cor do chão, mas tem mais que duas possibilidades. Pode ter mais que um tipo de formiga, a depender do que decide fazer para cada cor. Por exemplo, a formiga LRL recebe 3 cores. Ela vira a esquerda na primiera cor, a direita na segunda e a esquerda na terceira. De acordo com esta definição, a formiga básica é uma RL (já que ela vira a direita em células brancas e a esquerda em pretas).
Algumas destas formigas desenham padrões fascinantes (alterne o mundo para vê-los): LLRR constrói uma figura simétrica semelhante a uma bola, LRRRRRLLR desenha um quadrado, LLRRRLRLRLLR desenha um padrão regular convolucionado depois de um período de aparente caos e RRLLLRLLLRRR parece preencher uma ampulheta...
Transformar o seu buggle numa formiga de Langton genérica não é muito
complicado, embora não seja totalmente trivial. Como anteriormente, tem que
escrever uma função step
. Mas desta vez, ela recebe duas arrays
como parâmetros. A primeira define as regras para seguir a depender da cor
do chão enquanto a segunda dá a sequência de cores a usar. Por exemplo, a
formiga básica deve ter [!java]{'R', 'L'}
e {Cor.branco,
Cor.preto}
[/!] [!python]['R', 'L']
e [Cor.branco,
Cor.preto]
[/!] [!scala]Array('R', 'L')
e
Array(Cor.branco, Cor.preto)
[/!] como argumentos.
Em cada passo, deve então ter que aplicar o seguinte pseudo-código:
Agora tem informação o suficiente para conseguir.