During the 1980s, some researchers abandoned top-down artificial intelligence in favor of a bottom-up approach. One of these bottom up approaches became the field of artificial life. In 1992 or 1993, I checked out Artificial Life by Steven Levy from the Lane Public Library. In his book, Levy describes much of the research on artificial life to date, including the works of Stephen Wolfram and Christopher Langton, in a pleasant and accessible way (for a twelve-year old).
One of Langton’s creations captured my attention. It is called the virtual ant or sometimes “vant.” The virtual ant is a cellular automaton such that a cell is occupied by the “ant.” If the cell is black, the ant turns 90 degrees to the right and advances a single cell. If the cell is green, the ant turns 90 degrees to the left and advances a single cell. After exiting the cell, the ant flips the color of the cell. This leads to a variety of amazing interactions among multiple ants that effectively replicates eusocial behavior in a number of organisms. There’s an excellent JavaScript implementation available by Ross Scrivener. The problem is that Levy accidently described something subtly, and, by and by, completely different:1
The vant itself was a V-shapped construct that moved in the direction of its point. If the lead cell moved into a blank square on the imaginary grid, the vant continued moving in that direction. If the square was blue, the vant turned right and changed the color of that cell to yellow. If the square was yellow, the vant turned left and changed the color of the square to blue.
I was like twelve or so, so what did I know about getting the proceedings of an artificial life symposium. I thought this was cool and it is also trivial2 to show that the virtual ants can do arithmetic by modelling an adder amongst the cells. I implemented the ants as described by Levy in BASIC with an intent to eventually implement an 8-bit adder as a science fair project. Things being what they are, I never got around to the science fair project. The BASIC code is, most likely, lost to history.
When I saw Scrivener’s implementation of the Langton ant, I realized I could use it as a baseline for implementing my ant from 20 years ago. So I did. I turned it yellow and call it a bumblebee now and I invite everyone to experiment with it. You can place bees and dots anywhere on the map and watch the eusociality emerge. There are some features left to add, but here you go!
The source code is available on GitHub. Many thanks to Ross Scrivener and Steven Levy for making this happen.