Ultimate Tic Tac Toe [Puzzle discussion]


Are you really sure you are computing during opponent's turn and not yours, between writing/reading in/outputs ? It seems that BrunoFelthes made it, but I didn't try yet.


Same here. I'd say I don't even get 1/10th the number of rollouts when I calculate stuff during the opponent's turn.


Yes, I'm quite sure that I am computing during my opponents turn.


Same here... I have no clue why it happens... But it still worth...


I think that you're not really using opponents turn, but the time between your output and the next referee input. Normally, your application should be paused during the opponents turn, not only your main thread. Thus, you should not be able to compute anything during the opponent's turn. But since there is a little time before the referee pauses your process, you still have time to make some computation.

I tried to make it work with my code, using a second thread that starts when my turn ends. It computes stuff during about 10ms, then stops during about 110ms, and restarts and directly stops since I told him to stop after 100ms. That's why I also have only about 10% of additional rollouts. If you want to be sure that you are really making computations during the opponents turn, you should print regularly your timer value (for instance each 500 rollouts) and check if you really have computations all the time. I obtained exactly the same results when I made computations in the main thread instead of launching a second one.

Finally, you can only make about 10% more computations using this method (depending of the time needed by the referee to stop the process), and most of the rollouts will be useless since the opponent will play only one of the possible moves that you are simulating. In most cases, you will in average only get a benefit of about a few percents of the total number of rollouts. This may be a lot in some cases, but you also have to consider the memory cost of the growing tree, and the risk of unpredictable timeouts.


Does anyone know if something changed on this multi?
My last commit 3 months ago was working fine and right now, the same code is getting a lot of timeout.
Iā€™m wondering if something changed with C++?