pachi_py/pachi/t-unit/sar.t (604 lines of code) (raw):
% Basic self-atari check
boardsize 3
XX.
XXX
XX.
sar b c1 1
sar b c3 1
sar w c1 1
sar w c3 1
% Basic suicide check
boardsize 3
XXX
XXX
XX.
sar b c1 1
sar w c1 0
% 2 stones suicide check
boardsize 3
XX.
O.X
XXX
sar w b2 1
sar b b2 0
% Almost-nakade
boardsize 3
OOO
..X
XX.
sar b c1 0
sar w c1 1
sar b b2 0
sar w b2 1
sar b a2 0
sar w a2 1
% Bulky-five / tetris-four nakade
boardsize 3
OOO
..X
XXX
sar b b2 0
sar w b2 0
sar b a2 1
sar w a2 1
% Bulky-five
boardsize 3
OOO
.X.
XXX
sar b c2 0
sar w c2 1 # Makes bent 4, bad normally (except in corner ... FIXME ?)
sar b a2 0
sar w a2 1
% Rabbity six nakade 1
boardsize 4
XXOO
.X.O
OXOO
OOOO
sar w a3 1
sar b a3 0
sar w c3 1
sar b c3 1
% Rabbity six nakade 2 - seki
boardsize 4
X.OO
.XXO
OXOO
OOOO
sar w a3 1
sar b a3 1
sar w b4 1
sar b b4 1
% Rabbity six nakade 3
boardsize 4
XXOO
XX.O
O.OO
OOOO
sar w b2 1
sar b b2 0
sar w c3 1
sar b c3 0
% Triangle six lives
boardsize 5
OOOOO
O..OO
OXXOO
OXXXO
OOOOO
sar b b4 1
sar b c4 1
% Seki destruction
boardsize 4
XXX.
XOOO
X.XX
XXXX
sar w b2 1
sar b b2 1
sar w d4 1
sar b d4 1
% Bulky five nakade
boardsize 5
XXXXX
XOOXX
XO.XX
XX.XX
XXXXX
sar b c3 0
sar w c3 0
sar b c2 1
sar w c2 1
% Bulky five nakade (outside lib)
boardsize 5
XXXXX
XOOXX
XO.XX
XX.XX
XXXX.
sar b c3 0
sar w c3 0
sar b c2 1
sar w c2 1
% Capture-from-within 2pt-eye nakade
boardsize 3
OOO
O..
OOO
sar w b2 1
sar b b2 0
sar w c2 1
sar b c2 0
% Not Capture-from-within 2pt-eye nakade
boardsize 4
....
.OOO
.O..
.OOO
sar b c2 1
sar b d2 1
% Forbidden throw-in to get seki
boardsize 5
.XXX.
XXOOO
XOO..
XOOOO
XXXXX
! sar b d3 0 # Gosh, sometimes bad moves are good
! sar b e3 0
% Capture-from-within 3pt-eye (straight) nakade
boardsize 3
OOO
.X.
OOO
sar w a2 1
sar b a2 0
sar w c2 1
sar b c2 0
% Capture-from-within 3pt-eye (bent) nakade
boardsize 3
O.O
OX.
OOO
sar w b3 1
sar b b3 0
sar w c2 1
sar b c2 0
% Capture-from-within 4pt-eye (square) nakade
boardsize 3
O.X
O.X
OOO
sar w b3 1
sar b b3 0
sar w b2 1
sar b b2 0
% Eye falsification nakade
boardsize 3
OOO
..X
OOO
sar w a2 1
sar b a2 1
sar w b2 0
sar b b2 0
% Bulky five multi-w-group nakade
boardsize 5
XXXXX
XOOXX
XO..X
XXOXX
XXXXX
sar b c3 0
sar w c3 0
sar b d3 1
sar w d3 0 # Captures !
% Multi-b-group nakade
boardsize 5
.XX..
XOOX.
XO.XX
XX.XX
..XXX
sar b c3 0
sar w c3 0
sar b c2 0
sar w c2 1
sar b d5 0
sar w d5 0 # Throw-in
sar b e4 0
sar w e4 1
sar b e5 0
sar w e5 0
% Real multi-b-group nakade
boardsize 6
XXXOO.
XO.XO.
X.OXO.
OXXXO.
OOXXO.
OOOOO.
sar b b4 1
sar w b4 0
sar b c5 1
sar w c5 0
% Almost multi-b-group nakade
boardsize 6
XXXOO.
XO.XO.
X.OXO.
OXXXO.
O.XXO.
OOOOO.
sar b b4 0
sar w b4 0 # Have to allow this or we may never be able to kill that group
sar b c5 0
sar w c5 0
% Almost multi-b-group nakade (mirrored)
boardsize 6
.OOOOO
.OXX.O
.OXXXO
.OXO.X
.OX.OX
.OOXXX
sar b d2 0
sar w d2 0
sar b e3 0
sar w e3 0
% Eyeshape-avoidance nakade 1
boardsize 4
XXXX
XO.X
XX.X
XXXX
sar w c3 0
sar w c2 1
% Eyeshape-avoidance nakade 1 (outside lib)
boardsize 4
XXXX
XO.X
XX.X
.XXX
sar w c3 0
sar w c2 1
% Eyeshape-avoidance nakade 2
boardsize 4
XXXX
XO.O
XX.X
XXXX
sar w c3 0
sar w c2 1
% Eyeshape-avoidance nakade 2 (outside lib)
boardsize 4
XXXX
XO.O
XX.X
.XXX
sar w c3 0
sar w c2 1
% Eyeshape-avoidance nakade 3
boardsize 4
XXXX
XO.O
XXX.
XXXX
sar w c3 0
sar w d2 1
% Eyeshape-avoidance nakade 3 (outside lib)
boardsize 4
XXXX
XO.O
XXX.
.XXX
sar w c3 0
sar w d2 1
% False nakade
boardsize 5
X.XX.
XOOXX
XOOX.
X.OXX
XOOXX
sar w b2 1
sar b b2 1
sar w b5 1
sar b b5 0
% Not-quite-snapback
boardsize 5
XXXXO
XXX.O
XXX.O
OOOXX
OO...
sar b c1 0
sar w c1 1
sar b d3 0
sar w d3 1
sar b d4 1
sar w d4 0
% Snapback
boardsize 4
XXO.
..X.
OX..
....
sar b a1 1
sar w a1 0
sar b a3 1
sar w a3 0
sar b b3 0
sar w b3 0 # Snapback !
sar b d4 0
sar w d4 0
% Real game 1
boardsize 9
O.O..OXX.
.O.O.OOX.
OO..OOXXO
XOOOOXOOO
XXOXXXXXO
.XOOOXXXX
.XOXXX..X
XXXO..XXX
XO..O...O
sar w j8 1
sar b j8 0
% 3 stones sar nakade to dead shape (middle)
boardsize 5
XXXXX
O.O.X
XXXXX
XXXXX
XXXXX
sar w b4 0 # Fill eye
sar b b4 0 # Capture and live
sar b d4 1
% 3 stones sar nakade to dead shape
boardsize 5
XXXXX
OO..X
XXXXX
XXXXX
XXXXX
sar w c4 0 # Fill eye
sar b c4 0 # Capture and live
sar b d4 1
% 3 stones sar nakade to dead shape (outside libs)
boardsize 5
XXXXX
OO..X
XXXXX
.....
.....
sar w c4 0 # Fill eye
sar w d4 1
% 2 stones sar nakade to dead shape
boardsize 4
XXXX
O..X
XXXX
XXXX
sar w b3 0 # Fill eye
sar b b3 0 # Capture and live
sar b c3 1
% 2 stones sar nakade to dead shape (outside libs)
boardsize 4
XXXX
O..X
XXXX
....
sar w b3 0 # Fill eye
% Bulky-five nakade (outside libs)
boardsize 6
XXXXXX
OOOOXX
..XOX.
XXXOXX
OOOOX.
OO..XX
sar b b4 0
sar b a4 1
% 4 stone nakade
boardsize 4
XOOO
XX.X
XX.X
XXXX
sar w c3 0
sar w c2 1
% 4 stone nakade (outside libs)
boardsize 4
XOOO
XX.X
.X.X
.XXX
sar w c3 0
sar w c2 1
% Connection
boardsize 4
.XOX
O.OX
OXXX
XX..
sar b b3 0
sar w b3 1 # Connect and die
% Bad self-atari (3 stones, connect first !)
boardsize 5
O.OO.
OXXO.
OX.X.
OOXX.
..XX.
sar b b5 1
% Bad self-atari (3 stones, can escape)
boardsize 5
.OOO.
.O.OO
.OXXO
.OX..
.OO..
sar b c4 1
% Bad self-atari (4 stones, connect first !)
boardsize 6
OOO.O.
OOOXOO
OOOXOO
.OOX.X
..OOXX
......
sar b d6 1
% Bad self-atari (connecting 4 stones, connect and die)
boardsize 6
OOOXO.
OOO.OO
OOOXOO
.OOX.X
..OOXX
......
sar b d5 1
% Bad self-atari (5 stones, connect first !)
boardsize 6
OOOOO.
OO.XOO
OOXXXO
.OOX.X
..OOXX
......
sar b c5 1
% Connect instead of self-atari !
boardsize 5
XXXO.
X.O..
XXXO.
.OOO.
.....
sar w b4 1
sar w d4 0
% Bad self-atari (not taking away eyeshape and not atari)
boardsize 4
OO.X
X.XX
XXX.
....
sar w c4 1
% Not a nakade ! (threatening capture)
boardsize 4
X.OO
XXOO
O..X
....
sar b b4 1 # Can escape !
sar w b4 1 # Can escape !
% Not a nakade ! (threatening nothing)
boardsize 4
X.OO
XXOO
O...
....
sar b b4 1 # Can escape !
% Not a nakade ! (threatening nothing)
boardsize 5
OOOOO
OXOOO
OX.OO
OXXOO
OO...
sar b c3 1 # Can escape !
% Corner nakade (shortage of libs)
boardsize 4
.OX.
XO.X
XOOO
XXX.
sar b c3 0
sar b d4 0
% Throw-in
boardsize 5
...X.
OOOX.
O..OO
OOOX.
...X.
sar b c3 0
sar b b3 1 # Silly
% Throw-in making atari
boardsize 7
.......
...XXXX
OOOXOOO
.X.OO.O
OOOXOOO
...XXXX
.......
sar b c4 0
sar b a4 1 # silly
% Throw-in making atari (outside group with libs)
boardsize 7
.X.OO.O
OOOXXXO
..XXX.O
.X.X.OO
...X.O.
...X.OO
....XX.
sar b c7 0 # but cutting is good too ...
sar b a7 1 # silly
% Throw-in making atari with another group on the other side
boardsize 5
.X.OO
OOOXO
.XXXO
.XOOO
.XO.X
sar b c5 0
sar b a5 1 # silly
% 2 stones throw-ins
boardsize 6
OOOOX.
O.X.O.
OOOOXX
.OX..X
XOOOXX
.X.O..
sar b d5 0 # a) in check_throw_in_or_inside_capture()
sar b d3 0 # b)
sar b c1 1 # c) silly, connect first [ d) tested in Capture-from-within 3pt-eye (straight) nakade ]
% Not a throw-in
boardsize 4
....
OO..
XOOO
.X.O
sar b c1 1 # Captures 2 groups
sar b a1 0
% Side throw-in
boardsize 5
.OX..
.O.O.
.XOXX
.XOX.
..O..
sar b c4 0
% Side throw-in with outside stone
boardsize 6
.OX.X.
.O.OOX
.XOX..
.XOXXX
..O...
......
sar b c5 0
sar b a6 1
% Side throw-in with outside stone (continued)
boardsize 6
.O.OX.
.O.OOX
.XOX..
.XOXXX
..O...
......
sar b c5 0
sar b c6 1