Food gathering happened after combat so an ant wouldn't flee the front lines. Targeting enemy hills and ants was done afterwards, which caused ants to not raze a hill and gather food instead.
My bfs code only recorded the first and last direction for each target, not the full path, so I could search from ants to food or food to ants. I wrote a second bfs that just recorded distances that I used for exploration and was faster, but never got around to using it for food. That means I redid the calculations each turn without caching.
Playing on TCP, there were only a few bots that gathered faster than my bot, and usually by luck of exploring a better area first.
I thought about trying to get a few ants to ignore food and look for and steal food closer to the enemy, but never got there. Sort of a dodge ball rush at the start. I also thought about trying to collect all food I saw in the shortest amount of time, but figured a few ants sooner would be better, as I would always find more food.
https://gist.github.com/1507173
For the python experts, you'll notice my generators are producing and collecting values, a big no-no in python land.
