even if it were as primitive as having a function “simulate(X)”
I’m toying with each Bot having a “simulated” flag, and at the beginning of each game, create a real and a simulated version of each Bot, and let both Bots look at what the simulated Bots are doing. Haven’t thought properly about it yet, but the rest of the project is coming along much faster than I’d anticipated so I’ll have time to dig into this problem soon.
EDIT: I think I can do better. If bots have a single source code in some language L, and inferior interpreters I-weak, and the game has superior interpreter I-strong, then I-weak(L) can approximate I-strong(L). Especially neat is that I-weak’s inferiority can come from inability to recurse; it could bottom out and choose arbitrary values to feed back in—or it could come from instruction limitations; no more than 10,000 or so.
I’m toying with each Bot having a “simulated” flag, and at the beginning of each game, create a real and a simulated version of each Bot, and let both Bots look at what the simulated Bots are doing. Haven’t thought properly about it yet, but the rest of the project is coming along much faster than I’d anticipated so I’ll have time to dig into this problem soon.
EDIT: I think I can do better. If bots have a single source code in some language L, and inferior interpreters I-weak, and the game has superior interpreter I-strong, then I-weak(L) can approximate I-strong(L). Especially neat is that I-weak’s inferiority can come from inability to recurse; it could bottom out and choose arbitrary values to feed back in—or it could come from instruction limitations; no more than 10,000 or so.