formiga de Langton multicolorida

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.