- Updated Monday, March 21st 2016 @ 11:24:06
There's a Python starter package in development here:
https://github.com/smiley1983/go _ python _ starter
Remove the spaces from around the underscores, it was interpreted as markdown.
It can avoid suicide moves, but it doesn't know about Ko yet. I may update it or not, depending on various things, but if anyone wants to use Python, this might serve as a good starting point.
There's also a Rust starter, but it's even more primitive - it selects random empty spaces, not even paying attention to suicide. Again, maybe someone would like to use it as a starting point, but I'm unlikely to do more work on this one:
https://github.com/smiley1983/go _ rust _ starter
- Created Monday, March 21st 2016 @ 12:13:58
Does yours allow "suicide" if it results in a capture?
- Updated Monday, March 21st 2016 @ 13:17:37
It does recognise that captures are not suicides. :)
It checks whether the placed stone "reaches empty", and if not, it then checks whether any adjacent group fails to reach empty. Only if both checks fail does it count the move as a suicide.
Work on superko is underway, but it won't be a very efficient implementation.
- Updated Saturday, March 26th 2016 @ 08:40:50
EDIT: There is still at least one bug, working on it, will post again when fixed...
The Python starter should now be ready for use. It tracks superko for the last ten board positions. This number can be changed by editing Bot/board.py and changing the KO_BOARDS variable.
If anyone finds any bugs, please let me know, either here or by opening an issue on the Github page:
https://github.com/smiley1983/go _ python _ starter/issues
This is not a super-efficient implementation, but I believe it's reasonably clear and readable.
- Updated Saturday, March 26th 2016 @ 10:13:45
Bug fixed, it should actually be ready to use now (further testing is ongoing, no illegal moves yet).
Also, it now filters out all of the moves which fill one of its own single-space eyes. The rationale for this is:
It should help the game to come to a natural conclusion if starter packages do this, rather than allowing the game to go on for thousands of turns.
The logic for prohibiting these moves is trivial, far easier to work out than the logic for determining legal moves. Because of this, adding this feature to the starter package doesn't give any unreasonable help.
Eventually a better bot might want to allow some of the moves prohibited in this manner, but if selecting randomly from legal moves, filtering out eye-filling moves should improve the quality of the games without adding any real intelligence to the starter bots.
The tests I'm running at the moment indicate that games between starter packages like this will come to a conclusion in about 500 turns (250 rounds).