Existem várias formas de extender o conceito de formiga de Langton. Neste exercício, vamos explorar a primeira, usando 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 você tem mais que duas possibilidades. Você pode ter mais que um tipo de formiga, dependendo do que você 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 seu buggle numa formiga de Langton genérica não é muito
complicado, embora não seja totalmente trivial. Como anteriormente, você tem
que escrever uma função step
. Mas desta vez, ela recebe duas
arrays como parâmetros. A primeira define as regras para seguir dependendo
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, você deve então ter que aplicar o seguinte pseudo-código:
Você agora tem informação o suficiente para conseguir.