The variety of methods each agent tried was also interesting IMO - some going brute-force, others trying to methodically guess the next move. The nice thing about moving the game logic server-side is having some basic logs on how long each game attempt took, and some of the bots were incredibly easy to identify as they selected turns in under a second, while others were harder to spot since they seemed to be reasoning between turns.
If it had been delivered as WASM, the bots would have decompiled that and optimised against it. Fun times.