- Created Wednesday, June 8th 2016 @ 20:54:48
My bot (DirtyGo) has lost quite a few games due to "violation of ko rule" lately and I have been at a loss in my efforts to find the bug. But then I happened to look at the input. In the game 5757e3f34ee9c6546d0517b4 it lost again, this time at round 13 so it was simpler than usual to analyze. This was the among the input from the server for that round:
update game field 1,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,-1,1,0,0,0,2,0,0,2,0,0,2,0,0,2,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Notice that there are not one, but TWO instances of -1. The first one is the actual ko position and the second one is something else. I couldn't find anything in the Getting Started page that indicated that there could ever be more than one -1 in the field list so I suspect that this is a real bug in the server.
- Created Thursday, June 9th 2016 @ 07:47:00
I guess that you are trying to play at (2,2), if you play there you will have the same board as in round 11
DeveloperCreated Thursday, June 9th 2016 @ 08:51:13
Yups, that's it. The board may never be in a state it has previously been in. You can google some pretty sophisticated examples of long 'infinite loops' that are prevented by such a Ko rule.
- Updated Thursday, June 9th 2016 @ 11:00:37
Nops, that's not it. :P
I was trying to play at 0 1. Here is the last line of the log output:
Output from your bot: "place_move 0 1"
And yeah, that's clearly illegal. But the reason my bot was confused was that there were two -1's in the board line, one of which (as far as I could tell) was not even an empty point. Is that the way it's supposed to be? If so, maybe that should be more clearly spelled out in the instructions. My bot just stored the -1 into the ko position the first time and then overwrote it when it encounted the 2nd one.
- Created Thursday, June 9th 2016 @ 21:22:54
I think it's a false assumption to think there can be only one invalid ko position. Seems pretty simple to just not let your bot move in a -1 spot. Though if the board is marked as -1 when it should be a 1 or 2 (if there is a stone there), then I would consider that a bug since it's giving essentially false data on the board state. Shouldn't cause an invalid stone placement since you can't play there either way, but will cause an inaccurate valuation of the board if it considers a spot empty when it actually has a stone there. That false data would mess up my bot and probably others as well.
- Created Friday, June 10th 2016 @ 09:40:59
Yeah, it would indeed be simple. I am just wondering if it is intentional that there are more than one point and, if so, it should probably be more clearly documented on the Getting Started page.
Until Jim clarifies this, I am going to assume that there could be any number of ko points and not play on any of them.
- Created Friday, June 10th 2016 @ 10:48:01
Just imagine two of these situations on the same board and you've got yourself two -1 places: http://senseis.xmp.net/?SendingTwoReturningOne
- Updated Saturday, June 11th 2016 @ 22:17:02
Fixed! And now, as if on cue, DirtyGo won it's first game against a >2k bot and went over 1900 itself. >:-D
And that's even without any lookahead, just relying on good shape...