ICFP 2005 Contest: Bogus Pods


  The Bug

While running of the contest, we found a few entries were being disqualified for sending plans that planned for irrelevant bots, in particular, plans for clean cops during the dirty cop planning or plans for the robber during clean cop planning. A quick look at the specification showed that the implementation of the server and the specification disagreed! The specification allowed such messages, but the server did not.

So we changed the server to allow such plans, but to filter out irrelevant bots when sending the messages back to the other players. The rationale was that other bots might have assumed that irrelevant bots do not appear in the planning messages and if such bots were to show up, it might violate some assumption in their implementations.

Unfortunately, the implementation of the filtering had a bug that was only discovered after the contest was over (Thanks to Anton Orlov for pointing it out!). In addition to filtering out irrelevant cop bodies, it also filtered out any cop body that wasn't also a cop brain. That is, cop bodies that were controlled by other cop bodies were always filtered out, even if they were relevant to the message.

  The Cleanup

Fixing the bug in the server itself was simple, once we knew what the bug was. Download and try out the new BDK and/or read its source code, if you're interested.

But, of course, the server dropping the names of the controlled cops from the messages might have had an effect on the outcome of the pods. So, we decided to re-run every affected pod and see if the results changed. The bottom line: the only change was that the 8th and 9th place teams in the twist playoffs switched position.

  Regular Season Changes
There were only four teams that could possibly have been affected by the change to the server (i.e., only four teams did not make the playoffs and had taken over other cops). In each case, re-running the regular season in the fixed server produced the same results as it had in the broken server. The teams are:
TeamPods
jabber.rubogus podfixed pod
Griffonbogus podfixed pod
Ian Lance Taylorbogus podfixed pod
RandySaintbogus podfixed pod
  Playoff Changes
Below is the list of the teams, as run in the original, buggy server. The only ordering difference from the fixed playoff results is that the 8th and 9th place teams switched places.
Teams in the playoffs, bogus version
PlaceTeamAverage pod rank
1stKiebererAndXiaoTou1.99
2ndDylan Hackers2.53
3rdCombat-Tanteidan2.61
4thTeam Smartass2.8
5thCombat-Tanteidan (2)2.97
6thThe Caml Riders3.19
7thContest Crackers3.23
8thContest Crackers (2)3.62
9thDun(kosmi)loolump3.63
10thDisco Turtle3.71
11thDrunk Sed Team (2)4.09
12thSome graduate, others mature (2)5.24
13thuguu.org (2)5.92
These are the pods that were re-run, with links to the fixed up versions
tp-168bogusre-run    tp-308bogusre-run
tp-261bogusre-run    tp-316bogusre-run
tp-263bogusre-run    tp-317bogusre-run
tp-271bogusre-run    tp-334bogusre-run
tp-277bogusre-run    tp-336bogusre-run
tp-292bogusre-run    tp-337bogusre-run
tp-294bogusre-run    tp-338bogusre-run
tp-301bogusre-run    tp-343bogusre-run