This is a tiny exercise I have used to play with immutability in Ruby.
The idea behind the exercise was being able to face the challenges that creating a new object instead of mutating state imposes on your design. Despite being a very, very simple problem you have to take decisions on how to represent the board and taken positions which may affect greatly the simplicity of the solution.
I also created a very simple and hacky http frontend that can be used to play the game.