This reminds me of Rich Hickey's Clojure Concurrency talk[1], where he uses a simulation of an ant colony to explain Clojure's concurrency features. Hickey's version[2] is a lot simpler, but remains an interesting starting point if you want to hack on something similar.<p>[1] <a href="http://blip.tv/file/812787" rel="nofollow">http://blip.tv/file/812787</a><p>[2] <a href="http://clojure.googlegroups.com/web/ants.clj?gda=T0C_CjoAAADKqc_OBXvAPFRl94RaAIUvcpc6E-YHRrsRh9IuR-MtA-9OU0NQiFWgQuhmPR7veGf97daDQaep90o7AOpSKHW0" rel="nofollow">http://clojure.googlegroups.com/web/ants.clj?gda=T0C_CjoAAAD...</a>