Yet Another Novice Tries To Write AGo Program/ Move Undo Data Structure And Algorithm
I gleaned this from Bruce Wilcox's discussion of RiscIgo. He describes his move structure as:
- Color (1 bit)
- Location (9 bits)
- Ko Flag (1 bit)
- Kill Directions (4 bits)
- Plus 1 unused bit = 16 bits
What caught my eye is Kill Directions. How can 4 bits be enough information to replace captured stones upon undo? Ah, well of course! You just flood fill starting at the adjacent empty point(s).
![[Diagram]](../../diagrams/23/1778a51762c91258c5f13e1b15944124.png)
Capture
is:
- Color: White
- Location: B18
- Ko:no
- Kill Directions: North (or East), South
![[Diagram]](../../diagrams/0/37629af189f0e8b0773dd29badff8a06.png)
Undo
To undo this move, just flood fill with opposite color from the North (n) and South (s) points and then empty the location.
![[Diagram]](../../diagrams/52/f95f74976c0bd2f836a54182a9fb883f.png)
Undo
Nifty!