Langton's Ant

Source
const neighbors = [RIGHT, BOTTOM, LEFT, TOP]
const cw = (i) => (i + 1) % 4
const ccw = (i) => (i + 3) % 4

          
const white = element("white", "#99bbee")
const black = element("black", "black")

          
const antOnWhite = kind("antOnWhite")
const antOnBlack = kind("antOnBlack")

          
for (let i = 0; i < 4; i++) {
  antsOnWhite[i] = element(`antOnWhite${i}`, "red", [antOnWhite])
  antsOnBlack[i] = element(`antOnBlack${i}`, "red", [antOnBlack])
}

          
antOnWhite.to(black)
antOnBlack.to(white)

          
for (let i = 0; i < 4; i++) {
  const from = neighbors[cw(cw(i))]
  white.to(antsOnWhite[i]).is(from, antsOnWhite[ccw(i)])
  white.to(antsOnWhite[i]).is(from, antsOnBlack[cw(i)])
  black.to(antsOnBlack[i]).is(from, antsOnWhite[ccw(i)])
  black.to(antsOnBlack[i]).is(from, antsOnBlack[cw(i)])
}

          
const langtonsAnt = create()
Read the docs
@wonderyard/vivarium