Initial commit of GNU Go v3.8.
[sgk-go] / patterns / aa_attackpats.db
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# This is GNU Go, a Go program. Contact gnugo@gnu.org, or see #
# http://www.gnu.org/software/gnugo/ for more information. #
# #
# Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, #
# 2008 and 2009 by the Free Software Foundation. #
# #
# This program is free software; you can redistribute it and/or #
# modify it under the terms of the GNU General Public License #
# as published by the Free Software Foundation - version 3, #
# or (at your option) any later version. #
# #
# This program is distributed in the hope that it will be #
# useful, but WITHOUT ANY WARRANTY; without even the implied #
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR #
# PURPOSE. See the GNU General Public License in file COPYING #
# for more details. #
# #
# You should have received a copy of the GNU General Public #
# License along with this program; if not, write to the Free #
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, #
# Boston, MA 02111, USA #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
# The atari_atari attack pattern database.
#
# Further documentation may be found in the Texinfo documentation.
#
# First there is a pattern title of the form: Pattern [string]. The
# string is used for identifying the pattern while tuning or debugging.
#
# Then a block of the following characters representing the pattern
# itself.
#
# ? : don't care
# . : empty
# X : your piece,
# O : my piece,
# x : your piece or empty
# o : my piece or empty
# * : my next move
# -, | : edge of board
# + : corner of board
#
# If a pattern must not match at the edge of the board,
# an extra row of ?'s in the pattern may be added. (This
# will not add to the time taken to check the pattern.)
#
#################
#
# In the second field (classification) the following pattern attributes
# are possible. Friendly stones are 'O', opponent stones are 'X'.
#
# s : "Sacrifice" pattern. Allow sacrifice through self atari.
# Notice that this is different from the usual meaning of the
# s classification since all but a few moves in an atari_atari
# sequence are expected to be sacrifices.
#
# c : "Conditional" pattern. Don't accept the move unless it is also
# found by a non-conditional pattern or by one more conditional
# pattern that threatens some other string.
#
#########################################################
attribute_map none
goal_elements Xx
callback_data X
Pattern A1
X*
:-,-
A*
;lib(A) == 2
Pattern A2
xXOXx
..X*.
.....
-----
:8,-
Pattern A3
OX
X*
X.
xx
--
:8,-
Pattern A4
?X
O*
X.
xx
--
:8,-
Pattern A5
?O?
X*X
...
---
:|,-
Pattern A6
*.X
oXO
:8,c
*.X
oXO
;olib(*)>3
Pattern A7
X.X reduce eyespace
X*X
OXO
:|,s
Pattern A7b
# gf New pattern. (3.5.10)
|.X reduce eyespace
|*X
|XO
|.X
:8,s
Pattern A7c
X.X reduce eyespace
X*X
OX.
:8,s
A.X
A*X
OXb
;lib(A)==2 && olib(b)>1
Pattern A8
O..
?X*
??O
:8,c
Pattern A9
X*
OX
:/,-
X*
OX
;safe_omove(*)
Pattern A10
?X?
XOX
.*.
:|,-
Pattern A11
*.X
?.X
?XO
:8,c
*.X
?.X
?XO
;olib(*)>3
Pattern A12
.X?
*.X
.X?
---
:8,-
.X?
*.X
.A?
---
;lib(A)==2 && olib(*)>3
Pattern A13
*O
.X
.X
.x
--
:8,-
*O
.A
.A
.x
--
;lib(A)==3 && olib(*)>=3
Pattern A14
.X.
X*X
?O?
:|,-
.X.
A*B
?O?
;safe_omove(*) && oplay_attack_either(*,A,B)
;&& !oplay_connect(*,A,B)
Pattern A15
#evand new pattern (3.3.13)
?X?
X*.
?XX
:8,s
?X?
X*b
?AA
;lib(A) == 2 && xlib(b) <= 2
Pattern A16
#evand new pattern (3.3.13)
*x
X.
x.
--
:8,-
*x
A.
x.
--
;lib(A) == 3
Pattern A17
# gf New pattern. (3.3.16)
?O??
o*XX
..xX
...X
----
:8,-
?O??
o*AA
..xA
...A
----
;lib(A)==3 && olib(*)>=2
Pattern A18
# gf New pattern. (3.3.17)
??.?
?X*.
OOX.
?X..
??.?
:8,-
??.?
?C*.
eeXa
?Db.
??.?
;!oplay_attack(*,e) && oplay_attack(*,a,C) && oplay_attack(b,a,D)
Pattern A19
# gf New pattern. (3.3.17)
?*X threaten snapback
O..
?XX
:8,c
?*X
O..
?AA
;lib(A)==2 && olib(*)>1
Pattern A20
# gf New pattern. (3.3.17)
|*X threaten snapback
|..
|XX
:8,c
|*X
|..
|AA
;lib(A)==2 && olib(*)>1
Pattern A21
# gf New pattern. (3.3.17)
.XO
*.X
---
:8,-
.XO
*.A
---
;lib(A)==2 && olib(*)>2
Pattern A22
#evand New pattern. (3.3.18)
?.X
O.X
X*X
?X?
:8,s
?.A
ObA
X*A
?X?
;lib(A) <= 4 && oplay_attack(*,b,A) && oplay_defend(*,?,*)
Pattern A23
# evand New pattern. (3.3.19)
XXO
.X.
.*.
:8,-
AAB
.A.
.*.
;lib(A) == 3 && lib(B) > 1 && oplay_attack(*,A)
Pattern A24
# pp New pattern - see atari_atari:25 and blunder:31 (3.5.1)
?*?
XOX
:|,-
?*?
BAC
; lib(A) == 1 && lib(B) + lib(C) <= 6 && !oplay_defend_both(*,B,C)
Pattern A25
# gf New pattern. (3.5.4)
..X
*OX
.XO
:8,-
..A
*OA
.BO
;lib(A)<=3 && lib(B)<=3 && (oplay_attack(*,A) || oplay_attack(*,B))
Pattern A26
# pp New pattern, see kgs:490. (3.7.4)
?XX
O*.
?X.
:8,-
?CC
A*a
?B.
# FIXME: The constraint is not very good.
; lib(B) <= 5 && lib(A) > lib(B) && !oplay_defend(*,?,a,C)
# END OF FILE