Working(ish) version but doesnt correctly find optimal move
Implemented a two-playe version using recursion and symmetry which is VERY close to the final algorithm, but has some bug. Am going to look at this later and work on another project for now.