Nice. I wrote something exactly like this to simulate a CPU with an instruction set and registers that were extended beyond general purpose instructions to include op codes to read board state and generate moves for a game of go. That then became the core of a system setup to use genetic algorithms to try and 'breed' go playing programs.
It didn't produce anything close to a competent go playing program, but it did get to the point it would play legal moves, which considering I started it with a purely randomly generated population of programs, it had zero built in knowledge of the rules of go, and had it playing against a well known open source go playing program to assess fitness of a given pop, I was quite pleased with it.
This was around 10+ years ago, just as Google made alphago.
It didn't produce anything close to a competent go playing program, but it did get to the point it would play legal moves, which considering I started it with a purely randomly generated population of programs, it had zero built in knowledge of the rules of go, and had it playing against a well known open source go playing program to assess fitness of a given pop, I was quite pleased with it.
This was around 10+ years ago, just as Google made alphago.