I wrote a server (server.pl) and compiler (zumb) in Perl. I planned first to make it in Scheme (Guile) but I am rather starting with Scheme and switched to Perl (which I'm using since long time ago).

The server has a limited graphical output, but it can be called in background so that you can make matches in background in order o find the best ants.

The compiler has abstract labels, goto's, and subroutines (they are rather macros). After I wrote that I thought that perhaps this could be done better with M4, but since I'm more proficient in Perl I wrote a compiler in perl. The source files have extension .zb and you compile them as $ zumb ant.zb ant.as, where `ant.as' is the machine code ant.

Initially I wrote a very complex ant-brain that numbered the cells from 63 at the hill (home) decreasing towards infinity. These was very interesting but in practice the ant turned out to be too slow. These are ant2 and ant3.

After that (around sunday morning) I started writing an ant that marks towards away from the hill while searchng food and then unmarks while going home. Also it tries to find unmarked cells while searching food and marked cells while going home. These are ant4 and ant5. They used only one marker.

Then I tried to figure out how to use the other markers. I have little time to experience, but I found beneficial to divide the ants in several species and let each species one marker. Then while searching food you look for any of the markers to be off. And going home any marker to be on. I can't explain in long now how this should work, but in matches this seems to improve.