#79 with UCT.
My UCT is quite the simplest (with UCB from the original paper of UCT, 0 for a lose, 0.5 for a draw, 1 for a win). I only improved the solved leaves with a high number of fake simulation to not wast time on these leaves (maybe too much, I need a hack to avoid integer overflow).
On survival mode, I switch to a UCT with bounds, which I never seen waste space on contest parties. It is not soo good : in maps/playground.txt, I find a 120 moves path in 3 seconds, 173 in 1 min and 179 in 14 min (on 196 squares). Deep Search First find 158 in 3 seconds, 173 in 16 min, 179 in 30 min and 184 in 15h12 (DSF explore nodes 4 times faster than UCT because of monte carlo).
My simulations are very simple : 3 times more chance to go straingt than the other moves. I think using 3 to 10 different randomized strategies can improve a lot the quality of the simulation (for example preference to walls, preference for opponent direction, and total random, chosing randomly one of these simulations for each simulation on UCT leaves), but I didn't had the time to explore this way.
(And it was the first time I was using haskell. It is an excellent language.)