La hormiga de Langton

La hormiga de Langton es una máquina de Turing bidimensional inventada a finales de la década de 1980. La hormiga comienza en una cuadrícula de celdas negras y blancas y sigue un conjunto simple de reglas que produce un comportamiento emergente complejo.

La hormiga de Langton

La hormiga puede desplazarse en cualquiera de las cuatro direcciones cardinales en cada paso. La hormiga se mueve según las siguientes reglas:

  • En una casilla blanca (1), gira 90° a la derecha, invierte el color de la casilla y avanza una unidad.
  • En una casilla negra (0), gira 90° a la izquierda, invierte el color de la casilla y avanza una unidad.
  • La cuadrícula no tiene límites y, por lo tanto, si la hormiga se mueve fuera de los bordes, la cuadrícula debe ampliarse con 0, manteniendo la forma rectangular.

Crea una función Langton's Ant con los siguientes parámetros:

grid - a two-dimensional array of 1s and 0s
// representing white and black cells respectively

column - horizontal position of the ant

row - ant's vertical position

n - number of iterations

direction - ant's current direction
// 0 - north, 1 - east, 2 - south, 3 - west
// default value will be 0

... y devuelve el estado de la cuadrícula después de n iteraciones.

Ejemplos

langtons_ant([[1]], 0, 0, 1, 0) ➞ [[0, 0]]
// Initially facing north (0), at the first iteration the ant turns
// right because it stands on a white square, 1. After that, it flips
// the square and moves forward.

langtons_ant([[0]], 0, 0, 1, 0) ➞ [[0, 1]]

langtons_ant([[0, 0, 0], [0, 0, 0], [0, 0, 0]], 2, 2, 10, 1) ➞ [[0, 0, 0, 0], [0, 1, 1, 0], [0, 1, 1, 1], [0, 0, 0, 1]]

Notas

N/A