"All right, guys, so we're going to play tag. I'm it. When I'm in the room, I'll turn the light on. If you see the light on, and you haven't been tagged yet, you're now out -- turn the light off, and no more touching. Once I think I've tagged all of you, I'll declare that to the captain. I'll figure out the exact odds during the initial phase of the game, because it will take a lot of time to tag all of you; but basically, I'll keep a good count for N light bulbs in a row, and when I see them, I'll declare with 99.99% certainty that you all have been tagged."
The initial phase of that will take damned near forever, though -- it'll take just 100 days on average for me to go in the first time; and there will be something like 100-200-ish of those intervals, for something like ~55 years.
(1) If the prisoners can tell time well enough to determine whether they're the first prisoner or not, then the first prisoner will be "it." This will work for robots-who-can-tell-time (Variant (2) but not (1)) because it can, indeed, be programmed. It will also speed up variant (0) a little. Combining (1) and (2) can be done with the above algorithm, plus some sort of straw-drawing competition among the robots -- the exact method I'd still need to work out.
(2) This probably will go much faster if you let prisoners "tag" an additional prisoner before they're "out." So, a prisoner who has been tagged leaves the light on the first time he sees it, and just remembers that he's been tagged. The second time he gets tagged, he turns it off. the next three times he sees the light, either turns it on or leaves it on. I'd imagine I could design for that; since then the swarm exhausts itself in a very fast fashion. Such a strategy might even take it under the 10-year mark -- though I'm not sure about that.