6321 lines
68 KiB
Plaintext
6321 lines
68 KiB
Plaintext
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
|
|
# 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 Owl offensive 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. Omit the usual check that an O stone here
|
|
# cannot be capture.
|
|
#
|
|
# n : In addition to usual check that an O stone here cannot be
|
|
# captured, check also that an X move cannot be captured.
|
|
#
|
|
#################
|
|
#
|
|
# 'Y' is the anchor stone, a unique stone of color 'X' used by the pattern
|
|
# matcher to find the pattern.
|
|
#
|
|
#################
|
|
# The patterns in this database are sorted into the following
|
|
# categories:
|
|
#
|
|
# Axx Limiting moves on the fourth line
|
|
# A1xx Limiting moves on the third line
|
|
# A2xx Limiting moves on the second line
|
|
# A3xx Limiting moves on the first line
|
|
# A4xx Limiting moves in the center
|
|
# A5xx Eye reducing moves on the second line
|
|
# A6xx Eye reducing moves on the first line
|
|
# A7xx Eye reducing moves in the center
|
|
# A8xx Invade the eye space
|
|
# A9xx Nakade patterns
|
|
# A10xx Cuts
|
|
# A11xx Reinforce the perimeter
|
|
# A12xx Kill or threaten a worm of the dragon
|
|
# A13xx Specific corner attacks
|
|
# A14xx Invasion patterns
|
|
# A15xx Ko patterns
|
|
# A16xx Specific edge attacks
|
|
#
|
|
# ACxx Threats to capture
|
|
# AExx Threats to destroy eyes
|
|
# ARxx Reverse sente attacking moves
|
|
|
|
|
|
attribute_map owl_attack
|
|
|
|
goal_elements Xx
|
|
callback_data Xx
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Limiting moves on the fourth line #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern A1
|
|
# sometimes sagari is better
|
|
|
|
?.*Ox connect
|
|
..OYX
|
|
.....
|
|
.....
|
|
-----
|
|
|
|
:8,n,value(80)
|
|
|
|
?.*Ax
|
|
..OYX
|
|
.....
|
|
.....
|
|
-----
|
|
|
|
; lib(A)<4
|
|
|
|
|
|
Pattern A2
|
|
|
|
?..X.
|
|
?.*.x block
|
|
..OY.
|
|
.....
|
|
.....
|
|
-----
|
|
|
|
:8,-,value(65)
|
|
|
|
|
|
Pattern A3
|
|
# db added (3.1.8)
|
|
# gf Reduced value. (3.1.14)
|
|
|
|
.*O? draw back
|
|
O.YX
|
|
....
|
|
....
|
|
----
|
|
|
|
:8,-,value(65)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Limiting moves on the third line #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern A101
|
|
|
|
Oo? Block
|
|
Y*.
|
|
...
|
|
...
|
|
---
|
|
|
|
:8,-,value(70)
|
|
|
|
|
|
Pattern A102
|
|
|
|
OO..? Draw back
|
|
XXO*.
|
|
..Y..
|
|
.....
|
|
-----
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern A103
|
|
|
|
?Oo? draw back
|
|
x*.Y
|
|
x.OX
|
|
?...
|
|
----
|
|
|
|
:8,-,value(50)
|
|
|
|
|
|
Pattern A104
|
|
|
|
?..O pull back
|
|
.*OY
|
|
..X.
|
|
....
|
|
----
|
|
|
|
:8,-,value(90)
|
|
|
|
?..O
|
|
.*Oa
|
|
..X.
|
|
....
|
|
----
|
|
|
|
; lib(a)>2
|
|
|
|
|
|
Pattern A105
|
|
|
|
?..OxX mandatory block
|
|
..*Y..
|
|
......
|
|
......
|
|
------
|
|
|
|
:8,-,value(99)
|
|
|
|
|
|
Pattern A106
|
|
|
|
?X?? push in
|
|
..*O
|
|
X.YO
|
|
....
|
|
----
|
|
|
|
:8,-,value(60)
|
|
|
|
|
|
Pattern A107
|
|
# gf Not on second line without known support. See trevora:290. (3.1.15)
|
|
# nn Added constraint (3.3.14)
|
|
|
|
....? block on third line
|
|
Y.*.?
|
|
....?
|
|
....?
|
|
-----
|
|
|
|
:8,-,value(50)
|
|
|
|
#
|
|
# ....?
|
|
# a.*.b
|
|
# ....?
|
|
# ....?
|
|
# -----
|
|
#
|
|
# ; weak(a) || oarea(b)
|
|
|
|
|
|
Pattern A108
|
|
|
|
*.x stand on third line
|
|
OYx
|
|
...
|
|
---
|
|
|
|
:8,n,value(70)
|
|
|
|
|
|
Pattern A109
|
|
# tm Constraint added (3.1.16)
|
|
|
|
oOo block on third line
|
|
Y*.
|
|
...
|
|
...
|
|
---
|
|
|
|
:8,-,value(79)
|
|
|
|
aOb
|
|
Y*.
|
|
...
|
|
...
|
|
---
|
|
|
|
#Pattern A232 is almost certainly better if this
|
|
#constraint fails (avoid empty triangle)
|
|
; (o_somewhere(a) || !o_somewhere(b))
|
|
|
|
|
|
Pattern A110
|
|
|
|
O..o draw back --- the only move!
|
|
XO*.
|
|
XY..
|
|
....
|
|
----
|
|
|
|
:8,-,value(85)
|
|
|
|
|
|
Pattern A111
|
|
# db added (3.1.8)
|
|
|
|
?Ooo try to confine
|
|
?...
|
|
Y.*.
|
|
x...
|
|
....
|
|
----
|
|
|
|
:8,-,value(50)
|
|
|
|
|
|
Pattern A112
|
|
# db added (3.1.8)
|
|
|
|
..O? draw back
|
|
O*YX
|
|
....
|
|
....
|
|
----
|
|
|
|
:8,-,value(79)
|
|
|
|
..A?
|
|
O*YX
|
|
....
|
|
....
|
|
----
|
|
|
|
; lib(A)>2
|
|
|
|
|
|
Pattern A113
|
|
# gf Moved from A212. (3.1.9)
|
|
|
|
|..xX prevent connection
|
|
|....
|
|
|..*O
|
|
|..Y?
|
|
|
|
:8,C,value(99)
|
|
|
|
|
|
Pattern A114
|
|
# gf Moved from A213. (3.1.9)
|
|
|
|
|..X. prevent connection
|
|
|....
|
|
|..*O
|
|
|..Y?
|
|
|
|
:8,C,value(99)
|
|
|
|
|
|
Pattern A115
|
|
# gf New pattern. (3.1.14)
|
|
|
|
o..Y?
|
|
o.*.X
|
|
.....
|
|
.....
|
|
-----
|
|
|
|
:8,-,value(85)
|
|
|
|
a..Y?
|
|
b.*.X
|
|
.....
|
|
.....
|
|
-----
|
|
|
|
;o_somewhere(a,b)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Limiting moves on the second line #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern A201
|
|
|
|
OO... Block if safe
|
|
XXOO.
|
|
..YX*
|
|
.....
|
|
-----
|
|
|
|
:8,-,value(60)
|
|
|
|
OOc.b
|
|
XXOOa
|
|
..YX*
|
|
.....
|
|
-----
|
|
|
|
; oplay_attack(*,a,a) || !oplay_attack(*,a,b,c,*)
|
|
|
|
|
|
Pattern A203
|
|
# tm Modified (3.1.16)
|
|
|
|
?O?? second line block
|
|
x*Yx
|
|
...X
|
|
----
|
|
|
|
:8,C,value(60)
|
|
|
|
|
|
Pattern A204
|
|
# gf Pattern revised. (3.5.1)
|
|
|
|
??O?? second line block
|
|
?.*Y?
|
|
.....
|
|
-----
|
|
|
|
:8,-,value(60)
|
|
|
|
|
|
Pattern A205
|
|
|
|
?Oo second line block (needs a helper)
|
|
XY*
|
|
...
|
|
---
|
|
|
|
:8,-,value(60)
|
|
|
|
|
|
Pattern A205b
|
|
|
|
?Oo second line block (needs a helper)
|
|
XY*
|
|
.O.
|
|
---
|
|
|
|
:8,-,value(70)
|
|
|
|
|
|
Pattern A206
|
|
|
|
?O? block
|
|
YOo
|
|
.X*
|
|
...
|
|
---
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern A206b
|
|
|
|
?.O block
|
|
YO.
|
|
.X*
|
|
...
|
|
---
|
|
|
|
:8,-,value(78)
|
|
|
|
|
|
Pattern A207
|
|
|
|
O.Y second line kosumi
|
|
.*.
|
|
...
|
|
---
|
|
|
|
:8,-,value(35)
|
|
|
|
|
|
Pattern A207b
|
|
|
|
O.Yx second line kosumi
|
|
.*.x
|
|
...?
|
|
----
|
|
|
|
:8,-,value(58)
|
|
|
|
|
|
Pattern A207c
|
|
# nn Modified (3.3.11) see A207d
|
|
|
|
?O.Yxx second line kosumi
|
|
?.*.xx
|
|
?...??
|
|
------
|
|
|
|
:8,-,value(78)
|
|
|
|
?O.Yxx
|
|
a.*.xx
|
|
?...??
|
|
------
|
|
|
|
;!x_somewhere(a) || attack(a)
|
|
|
|
|
|
# nn Removal candidate (3.3.13)
|
|
# Success rate in regressions : 2.61% (15/560)
|
|
|
|
Pattern A207d
|
|
# nn New pattern (3.3.11) penalty for being gote
|
|
|
|
?O.Yxx second line kosumi
|
|
X.*.xx
|
|
?...??
|
|
------
|
|
|
|
:8,C,value(60)
|
|
|
|
?O.Yxx
|
|
a.*.xx
|
|
?...??
|
|
------
|
|
|
|
;!attack(a)
|
|
|
|
|
|
Pattern A208a
|
|
# tm New Pattern (3.1.16)
|
|
|
|
O.X
|
|
*.Y
|
|
.oo
|
|
---
|
|
|
|
:8,-,value(55)
|
|
|
|
|
|
Pattern A208b
|
|
# nn New Pattern (3.3.11)
|
|
|
|
O..
|
|
*.Y
|
|
.oo
|
|
---
|
|
|
|
:8,-,value(35)
|
|
|
|
|
|
Pattern A208c
|
|
# gf New pattern. (3.3.18)
|
|
|
|
?Xx
|
|
O.X
|
|
.*Y
|
|
.oo
|
|
---
|
|
|
|
:8,-,value(56)
|
|
|
|
|
|
Pattern A208d
|
|
# gf New pattern. (3.5.3)
|
|
|
|
O.X
|
|
.*Y
|
|
.oo
|
|
---
|
|
|
|
:8,-,value(56)
|
|
|
|
OaX
|
|
.*Y
|
|
.oo
|
|
---
|
|
|
|
;!oplay_attack(*,a,*)
|
|
|
|
|
|
Pattern A208e
|
|
# gf New pattern. (3.7.3)
|
|
|
|
O..
|
|
.*Y
|
|
.oo
|
|
---
|
|
|
|
:8,-,value(56)
|
|
|
|
Oa.
|
|
.*Y
|
|
.oo
|
|
---
|
|
|
|
;oplay_attack(*,a,a)
|
|
|
|
|
|
Pattern A209
|
|
|
|
?Ooo
|
|
xY*. second line block
|
|
x...
|
|
----
|
|
|
|
:8,-,value(70)
|
|
|
|
?aoo
|
|
xY*.
|
|
x...
|
|
----
|
|
|
|
;lib(a)>2
|
|
|
|
|
|
Pattern A210
|
|
|
|
?OO?x
|
|
xY*.x second line block
|
|
x....
|
|
-----
|
|
|
|
:8,C,value(85)
|
|
|
|
?OO?x
|
|
xY*.a
|
|
x....
|
|
-----
|
|
|
|
;owl_escape_value(a)>0
|
|
|
|
|
|
Pattern A211
|
|
|
|
?Oo? second line block
|
|
o..Y
|
|
o.*.
|
|
?...
|
|
----
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern A214
|
|
|
|
---- connect
|
|
....
|
|
XO*.
|
|
xYO?
|
|
|
|
:8,-,value(85)
|
|
|
|
----
|
|
....
|
|
XO*.
|
|
xAO?
|
|
|
|
;lib(A)>1
|
|
|
|
|
|
Pattern A215
|
|
|
|
?oOx sagari
|
|
?OYX
|
|
x*..
|
|
....
|
|
----
|
|
|
|
:8,C,value(80)
|
|
|
|
|
|
Pattern A216
|
|
|
|
??O descend to attack
|
|
XYO
|
|
..*
|
|
...
|
|
---
|
|
|
|
:8,-,value(50)
|
|
|
|
|
|
Pattern A216b
|
|
# gf New pattern. (3.1.11)
|
|
|
|
??O hane with support
|
|
XYO
|
|
.*.
|
|
...
|
|
---
|
|
|
|
:8,-,value(60)
|
|
|
|
??O
|
|
XYO
|
|
a*.
|
|
...
|
|
---
|
|
|
|
;!oplay_attack(*,a,*)
|
|
|
|
|
|
Pattern A217
|
|
|
|
?OYX sometimes more effective to just descend
|
|
.*..
|
|
....
|
|
----
|
|
|
|
:8,-,value(40)
|
|
|
|
|
|
Pattern A217b
|
|
# gf Increased value. (3.1.14)
|
|
|
|
?OYX sometimes more effective to just descend
|
|
.*..
|
|
....
|
|
----
|
|
|
|
:8,-,value(65)
|
|
|
|
?aYX
|
|
.*..
|
|
....
|
|
----
|
|
|
|
;lib(a)==2
|
|
|
|
|
|
Pattern A217c
|
|
# gf New pattern. (3.1.14)
|
|
|
|
.OYX sometimes more effective to just descend
|
|
.*..
|
|
....
|
|
----
|
|
|
|
:8,-,value(60)
|
|
|
|
caYX
|
|
b*..
|
|
....
|
|
----
|
|
|
|
;!xplay_defend_both(*,b,c,a,b)
|
|
|
|
|
|
Pattern A218
|
|
|
|
..OO reverse sente sagari
|
|
.OYX
|
|
.*..
|
|
....
|
|
----
|
|
|
|
:8,-,value(75)
|
|
|
|
|
|
Pattern A219
|
|
|
|
O..?
|
|
XO.? double hane
|
|
.Y*.
|
|
...?
|
|
----
|
|
|
|
:8,s,value(70)
|
|
|
|
ba.?
|
|
AOc?
|
|
eY*d
|
|
..f?
|
|
----
|
|
|
|
;(xlib(a)==1 || lib(b)>2) && lib(A)<=3 && olib(e)>1
|
|
;&& oplay_attack(*,c,a,d,e,f,A)
|
|
;&& oplay_defend(*,c,a,e,*)
|
|
|
|
|
|
Pattern A220
|
|
# tm Modified (3.1.23)
|
|
|
|
???? prevent jump
|
|
?xx.
|
|
xY*.
|
|
....
|
|
----
|
|
|
|
:8,-,value(45)
|
|
|
|
??bc
|
|
?xad
|
|
xY*.
|
|
....
|
|
----
|
|
|
|
; (owl_escape_value(b) <= 0 && owl_escape_value(c) <= 0)
|
|
; || !oplay_attack(*,a,d)
|
|
|
|
|
|
Pattern A221
|
|
# tm Modified (3.1.20) - added right hand ?s
|
|
# tm Modified (3.1.23)
|
|
|
|
????? back off to prevent jump
|
|
?xx.?
|
|
xY.*?
|
|
....?
|
|
-----
|
|
|
|
:8,-,value(50)
|
|
|
|
???a?
|
|
?xx.?
|
|
xY.*?
|
|
....?
|
|
-----
|
|
|
|
;owl_escape_value(a) < 1
|
|
|
|
|
|
Pattern A222
|
|
|
|
?oOo?? clamp
|
|
?Oooo?
|
|
XOY*..
|
|
.X....
|
|
------
|
|
|
|
:8,-,value(35)
|
|
|
|
|
|
Pattern A223
|
|
|
|
O.Y attach underneath
|
|
..*
|
|
...
|
|
---
|
|
|
|
:8,-,value(80)
|
|
|
|
O.B
|
|
.a*
|
|
...
|
|
---
|
|
|
|
;lib(B)<=3 && oplay_attack(*,a,B)
|
|
|
|
|
|
Pattern A224
|
|
|
|
???? block if X can't cut
|
|
OO.?
|
|
XY*.
|
|
....
|
|
----
|
|
|
|
:8,-,value(80)
|
|
|
|
????
|
|
OOa?
|
|
XY*.
|
|
....
|
|
----
|
|
|
|
; oplay_attack(*,a,a)
|
|
|
|
|
|
Pattern A225
|
|
|
|
?OY? descend to prevent hane and eye
|
|
.*.X
|
|
...x
|
|
----
|
|
|
|
:8,-,value(50)
|
|
|
|
|
|
Pattern A226
|
|
|
|
.OY? descend to prevent hane and eye in sente
|
|
.*.X
|
|
...x
|
|
----
|
|
|
|
:8,-,value(80)
|
|
|
|
bCY?
|
|
a*.X
|
|
...x
|
|
----
|
|
|
|
;xplay_attack(*,a,C) || !xplay_defend_both(*,a,b,a,C)
|
|
|
|
|
|
Pattern A227
|
|
|
|
?XOxx
|
|
?XO*. stop escape
|
|
X.Y..
|
|
-----
|
|
|
|
:8,C,value(35)
|
|
|
|
?XOxx
|
|
?XO*a
|
|
X.Y..
|
|
-----
|
|
|
|
;owl_escape_value(a)>0
|
|
|
|
|
|
Pattern A227b
|
|
# gf New pattern. (3.1.9)
|
|
|
|
?O.x
|
|
X.*. stop escape
|
|
xY..
|
|
----
|
|
|
|
:8,C,value(65)
|
|
|
|
?O.x
|
|
X.*a
|
|
xYb.
|
|
----
|
|
|
|
;owl_escape_value(a)>0 && !oplay_attack(*,a,b,*)
|
|
|
|
|
|
Pattern A228
|
|
|
|
.*O eliminate kikashi
|
|
..Y
|
|
---
|
|
|
|
:8,-,value(45)
|
|
|
|
.*a
|
|
..Y
|
|
---
|
|
|
|
; xplay_attack(*,a)
|
|
|
|
|
|
Pattern A229
|
|
|
|
xx.O? stop escape
|
|
x.*OX
|
|
...Y.
|
|
-----
|
|
|
|
:8,C,value(80)
|
|
|
|
ac.O?
|
|
b.*OX
|
|
...Y.
|
|
-----
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
|
|
|
|
|
|
Pattern A229b
|
|
|
|
xxx? stop escape
|
|
..*O
|
|
...Y
|
|
----
|
|
|
|
:8,C,value(79)
|
|
|
|
abx?
|
|
..*O
|
|
...Y
|
|
----
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) > 0
|
|
|
|
|
|
Pattern A229c
|
|
|
|
xx? stop escape
|
|
.*O
|
|
..Y
|
|
---
|
|
|
|
:8,-,value(79)
|
|
|
|
ab?
|
|
.*O
|
|
..Y
|
|
---
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) > 0
|
|
|
|
|
|
Pattern A229d
|
|
|
|
X? stop escape
|
|
*O
|
|
.Y
|
|
--
|
|
|
|
:8,C,value(79)
|
|
|
|
a?
|
|
*O
|
|
.Y
|
|
--
|
|
|
|
;owl_escape_value(a) > 0
|
|
|
|
|
|
Pattern A230
|
|
|
|
?Oo? stop escape along edge
|
|
..*Y
|
|
....
|
|
----
|
|
|
|
:8,-,value(80)
|
|
|
|
?Oo?
|
|
a.*Y
|
|
b...
|
|
----
|
|
|
|
;owl_escape_value(a)+owl_escape_value(b) > 0
|
|
|
|
|
|
Pattern A231
|
|
|
|
?..Y jump to undermine
|
|
O.*.
|
|
....
|
|
|
|
:8,-,value(50)
|
|
|
|
|
|
Pattern A232
|
|
# db added (3.1.7)
|
|
|
|
?OO? Jump down to block
|
|
Y..?
|
|
.*..
|
|
....
|
|
----
|
|
|
|
:8,C,value(80)
|
|
|
|
?OO?
|
|
Yab?
|
|
.*c.
|
|
....
|
|
----
|
|
|
|
; oplay_attack(*,a,b,c,c)
|
|
|
|
|
|
Pattern A232b
|
|
# gf New pattern. (3.5.4)
|
|
# See trevorc:240.
|
|
|
|
?O. Jump down to block
|
|
Y..
|
|
.*.
|
|
...
|
|
---
|
|
|
|
:8,-,value(80)
|
|
|
|
?ed
|
|
Yab
|
|
.*c
|
|
...
|
|
---
|
|
|
|
; xlib(d)<=2 && lib(e)>3 && oplay_attack(*,a,b,c,c)
|
|
|
|
|
|
Pattern A233
|
|
# db added (3.1.10)
|
|
|
|
OO.? Jump and block
|
|
....
|
|
Y*.?
|
|
...?
|
|
----
|
|
|
|
:8,-,value(75)
|
|
|
|
|
|
Pattern A234
|
|
# tm new pattern (3.1.13)
|
|
# Descend to attack. Possibly defend vulnerable stone.
|
|
# Useful in arb:231
|
|
|
|
xX defend vulnerable stone.
|
|
YO
|
|
.*
|
|
..
|
|
--
|
|
|
|
:8,C,value(20)
|
|
|
|
|
|
Pattern A235
|
|
# db new pattern (3.3.6)
|
|
# gf Revised pattern. (3.5.7)
|
|
|
|
?XXO? prevent the hane
|
|
?Y.*.
|
|
..x..
|
|
-----
|
|
|
|
:8,-,value(77)
|
|
|
|
|
|
Pattern A236
|
|
# tm new pattern (3.3.12)
|
|
|
|
---
|
|
x..
|
|
Y.*
|
|
X..
|
|
xO.
|
|
|
|
:8,-,value(66)
|
|
|
|
---
|
|
x..
|
|
Y.*
|
|
X..
|
|
xO.
|
|
|
|
; !oplay_attack(*,*)
|
|
|
|
|
|
Pattern A237
|
|
# pp New pattern (3.3.18) See nngs4:370
|
|
|
|
??O. eliminate an eye in reverse sente
|
|
xY*O
|
|
X..o
|
|
----
|
|
|
|
:8,-,value(80)
|
|
|
|
??Oc
|
|
aY*A
|
|
X.bo
|
|
----
|
|
|
|
; (x_somewhere(a) || ! safe_omove(a)) && !xplay_defend(*,b,c,A)
|
|
|
|
|
|
Pattern A238
|
|
# evand New pattern (3.3.20) See nngs4:570
|
|
|
|
oO?Y Jump down to enclose
|
|
o..x
|
|
.*.X
|
|
....
|
|
----
|
|
|
|
:8,-,value(55)
|
|
|
|
|
|
Pattern A239
|
|
#spl added 3.5.1
|
|
|
|
.Yo
|
|
.*O Penetration
|
|
...
|
|
---
|
|
|
|
:8,-,value(85)
|
|
|
|
|
|
Pattern A240
|
|
#spl added 3.5.1
|
|
|
|
?YO?
|
|
o*XO capture one stone and limiting eye
|
|
o... maybe gote
|
|
----
|
|
|
|
:8,C,value(50)
|
|
|
|
|
|
Pattern A241
|
|
# gf New pattern. See gifu03:303. (3.5.3)
|
|
|
|
O.YO connect beneath
|
|
o.*o
|
|
....
|
|
----
|
|
|
|
:8,-,value(37)
|
|
|
|
a.Yb
|
|
o.*o
|
|
....
|
|
----
|
|
|
|
;!oplay_disconnect(*,a,b)
|
|
|
|
|
|
Pattern A242
|
|
# gf New pattern. (3.5.3).
|
|
# See e.g. nngs:1090.
|
|
|
|
...o?
|
|
..*O?
|
|
...Yx
|
|
-----
|
|
|
|
:8,-,value(35)
|
|
|
|
...o?
|
|
ba*c?
|
|
...Yx
|
|
-----
|
|
|
|
;xplay_disconnect(*,a,a,c) && xplay_disconnect(*,b,b,c)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Limiting moves on the first line #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern A301
|
|
|
|
YO.X prevent connection
|
|
X*..
|
|
----
|
|
|
|
:8,-,value(60)
|
|
|
|
YO.A
|
|
X*..
|
|
----
|
|
|
|
;!owl_goal_dragon(A)
|
|
|
|
|
|
Pattern A302
|
|
# gf Revised pattern. (3.1.14)
|
|
|
|
?oOX? descend, but not on edge
|
|
?OY.x
|
|
x*.Xo
|
|
-----
|
|
|
|
:8,-,value(30)
|
|
|
|
|
|
Pattern A305
|
|
# tm New Pattern (3.1.15)
|
|
|
|
xYxx? Monkey Jump to reduce eye space
|
|
x...O
|
|
.*..o
|
|
-----
|
|
|
|
:8,C,value(45)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Limiting moves in the center #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern A401
|
|
# tm Modified (3.1.17)
|
|
|
|
O..? block strongly if possible
|
|
Y*..
|
|
?..?
|
|
|
|
:8,-,value(80)
|
|
|
|
ba.?
|
|
Y*..
|
|
?..?
|
|
|
|
; oplay_defend_both(*,a,*,b) && !oplay_attack(*,a,b)
|
|
|
|
|
|
Pattern A401a
|
|
# tm Modified (3.1.17)
|
|
# identical to A401, but lower value if bad cut aji
|
|
# see, for example, strategy4:182
|
|
|
|
O..? block strongly if possible
|
|
Y*..
|
|
?..?
|
|
|
|
:8,-,value(60)
|
|
|
|
ba.?
|
|
Y*..
|
|
?..?
|
|
|
|
; oplay_defend_both(*,a,*,b)
|
|
|
|
|
|
Pattern A402
|
|
# tm Modified (3.1.14) - doesn't make sense to match at edge.
|
|
|
|
O*.? fall back to confine
|
|
Y...
|
|
?..?
|
|
????
|
|
|
|
:8,-,value(70)
|
|
|
|
a*.?
|
|
Y...
|
|
?..?
|
|
????
|
|
|
|
;lib(a)<=2 || xlib(*)>2
|
|
|
|
|
|
Pattern A403
|
|
# gf Devalued. See also A403b. (3.3.13)
|
|
|
|
..* knight's move to block
|
|
O..
|
|
OYX
|
|
|
|
:8,-,value(55)
|
|
|
|
cb*
|
|
Aad
|
|
OYX
|
|
|
|
; oplay_defend_both(*,a,b,c,A,b) && oplay_defend_both(*,b,a,d,*,A)
|
|
|
|
|
|
Pattern A403b
|
|
# gf More specific pattern and constraint. (3.3.13)
|
|
|
|
???
|
|
..* knight's move to block
|
|
O..
|
|
OYX
|
|
|
|
:8,-,value(75)
|
|
|
|
??e
|
|
cb*
|
|
Aad
|
|
OYX
|
|
|
|
; owl_escape_value(e)>0
|
|
; && oplay_defend_both(*,a,b,c,A,b) && oplay_defend_both(*,b,a,d,*,A)
|
|
|
|
|
|
Pattern A404
|
|
|
|
xYx attack eyeshape
|
|
X.X
|
|
.*.
|
|
|
|
:|,-,value(75)
|
|
|
|
|
|
Pattern A406
|
|
|
|
xxx
|
|
... center block
|
|
.*O
|
|
OY?
|
|
|
|
:8,-,value(85)
|
|
|
|
xax
|
|
b..
|
|
.*O
|
|
OY?
|
|
|
|
; (owl_escape_value(a)>0)||(owl_escape_value(b)>0)
|
|
|
|
|
|
Pattern A406b
|
|
# nn Modifed (3.3.13)
|
|
|
|
?xxx?
|
|
o...o center block
|
|
..*Oo
|
|
o.Y??
|
|
|
|
:8,-,value(80)
|
|
|
|
?xax?
|
|
o...o
|
|
..*Od
|
|
o.Ybc
|
|
|
|
;owl_escape_value(a)>0
|
|
;&& (!x_somewhere(b,c)
|
|
; || o_somewhere(b,d)
|
|
; || (o_somewhere(c) && !safe_xmove(d)))
|
|
|
|
|
|
Pattern A406c
|
|
# tm New Pattern (3.1.17)
|
|
# tm Modified (3.1.22)
|
|
|
|
?xx
|
|
*.. center keima enclosure
|
|
..O
|
|
.YO
|
|
|
|
:8,-,value(81)
|
|
|
|
?ax
|
|
*c.
|
|
dbO
|
|
eYO
|
|
|
|
;owl_escape_value(a)>0
|
|
; && (xplay_attack(b,c,*,d,d) || !xplay_defend(*,b,d,e,e))
|
|
|
|
|
|
Pattern A406d
|
|
# gf New pattern. (3.7.1)
|
|
|
|
?xxx?
|
|
o...o center block
|
|
..*Oo
|
|
o..Y?
|
|
??Xx?
|
|
|
|
:8,-,value(80)
|
|
|
|
?xax?
|
|
o...o
|
|
..*Oo
|
|
o..Y?
|
|
??Xx?
|
|
|
|
;owl_escape_value(a)>0
|
|
|
|
|
|
Pattern A407
|
|
# gf Added constraint. (3.5.3)
|
|
|
|
?O.X
|
|
?*Y.
|
|
?...
|
|
?...
|
|
|
|
:8,-,value(45)
|
|
|
|
aO.X
|
|
b*Y.
|
|
c...
|
|
?...
|
|
|
|
;!(o_somewhere(a) && o_somewhere(b)) || x_somewhere(c)
|
|
|
|
|
|
Pattern A407b
|
|
# gf New pattern. (3.5.3)
|
|
|
|
OO.X
|
|
O.Y.
|
|
o*..
|
|
?...
|
|
|
|
:8,-,value(45)
|
|
|
|
|
|
Pattern A408
|
|
# gf Revised constraint. (3.1.14)
|
|
|
|
?oOo seal the opponent in
|
|
?...
|
|
.*.Y
|
|
....
|
|
???.
|
|
???.
|
|
|
|
:8,-,value(70)
|
|
|
|
?oOo
|
|
?...
|
|
e*.Y
|
|
....
|
|
?ab.
|
|
?cd.
|
|
|
|
;o_somewhere(a,b,c,d) && owl_escape_value(e) > 0
|
|
|
|
|
|
Pattern A409
|
|
|
|
??xxx
|
|
oO*.. try to contain
|
|
O.Y.O
|
|
?X.Oo
|
|
|
|
:8,C,value(80)
|
|
|
|
??abc
|
|
oO*..
|
|
O.Y.O
|
|
?X.Oo
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
|
|
|
|
|
|
Pattern A410
|
|
|
|
xxx try to block
|
|
.*.
|
|
OYO
|
|
?X?
|
|
|
|
:|,B,value(90)
|
|
|
|
xax
|
|
.*.
|
|
OYO
|
|
?X?
|
|
|
|
;owl_escape_value(a)>0
|
|
|
|
|
|
Pattern A411
|
|
# gf Revised pattern. Necessary to constrain it harder. (3.1.14)
|
|
# gf Revised and devalued pattern. (3.1.15)
|
|
# nn Modified constraint (3.3.11)
|
|
|
|
??...??? try to stop escape into center
|
|
??...oo?
|
|
??.*.oo?
|
|
??o.Y???
|
|
??oo????
|
|
|
|
:8,-,value(79)
|
|
|
|
??.a.???
|
|
??...def
|
|
??.*.ghi
|
|
??j.Y???
|
|
??bc????
|
|
|
|
;owl_escape_value(a)>0
|
|
;&& ((o_somewhere(b,c,j) && o_somewhere(d,e,f,g,h,i))
|
|
; || (o_somewhere(j) && owl_escape_value(d)==0 && owl_escape_value(e)==0))
|
|
|
|
|
|
Pattern A411a
|
|
# nn New pattern (3.3.11)
|
|
# FIXME: there must be a way to prevent duplicate matches with A411
|
|
|
|
???..?? try to stop escape into center
|
|
??...oo
|
|
??.*.oo
|
|
??o.Y??
|
|
??oo???
|
|
??oo???
|
|
|
|
:8,-,value(79)
|
|
|
|
???a.??
|
|
??...de
|
|
??.*.bc
|
|
??f.Y??
|
|
??gh???
|
|
??ij???
|
|
|
|
;owl_escape_value(a)>0 && o_somewhere(f,g,h,i,j) && o_somewhere(b,c,d,e)
|
|
|
|
|
|
Pattern A413a
|
|
# nn New pattern (3.3.11)
|
|
|
|
o..... prevent escape
|
|
o.....
|
|
o..*..
|
|
O.Y...
|
|
|
|
:8,-,value(50)
|
|
|
|
idf...
|
|
jcbe..
|
|
k.a*..
|
|
O.Y...
|
|
|
|
;(o_somewhere(j) || (o_somewhere(i) && o_somewhere(k)))
|
|
;&& !oplay_attack(*,a,b,c,d,e,f,*) && !oplay_attack(*,a,b,e,f,*)
|
|
|
|
|
|
Pattern A414
|
|
# gf Revised constraint. (3.1.14)
|
|
|
|
??xxx?? cap to prevent escape
|
|
??...??
|
|
oo.*.oo
|
|
oo...oo
|
|
??.Y.??
|
|
|
|
:8,-,value(82)
|
|
|
|
??xxx??
|
|
??e..??
|
|
ab.*.fg
|
|
cd...hi
|
|
??.Y.jk
|
|
|
|
; o_somewhere(a,b,c,d) && owl_escape_value(e)>0 && o_somewhere(f,g,h,i,j,k)
|
|
|
|
|
|
Pattern A414a
|
|
# nn New pattern (3.3.11)
|
|
|
|
......o
|
|
......o
|
|
..*...o
|
|
oo.Y.oo
|
|
|
|
:8,-,value(65)
|
|
|
|
a.....b
|
|
......c
|
|
..*...d
|
|
ef.Y.oo
|
|
|
|
;owl_escape_value(a)>0
|
|
;&& owl_escape_value(b)==0
|
|
;&& owl_escape_value(c)==0
|
|
;&& owl_escape_value(d)==0
|
|
;&& o_somewhere(e,f)
|
|
|
|
|
|
Pattern A415
|
|
|
|
o.. cut off escape
|
|
.*Y
|
|
X.O
|
|
|
|
:8,C,value(80)
|
|
|
|
o..
|
|
.*Y
|
|
Abc
|
|
|
|
;owl_escape_value(A)>0 && oplay_defend_both(*,b,*,c)
|
|
|
|
|
|
Pattern A416
|
|
|
|
?.O?? hane
|
|
.*Y.X
|
|
?...x
|
|
|
|
:8,-,value(65)
|
|
|
|
|
|
Pattern A417
|
|
|
|
?Y.O prevent center escape
|
|
O.*.
|
|
o...
|
|
xxxx
|
|
|
|
:8,-,value(75)
|
|
|
|
?Y.O
|
|
O.*.
|
|
o...
|
|
xabc
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
|
|
|
|
|
|
Pattern A418
|
|
# db added (3.1.8)
|
|
|
|
...O prevent escape
|
|
.*OX
|
|
O.Yx
|
|
|
|
:8,-,value(80)
|
|
|
|
...O
|
|
.*OA
|
|
O.Yx
|
|
|
|
; lib(A)>1
|
|
|
|
|
|
Pattern A419
|
|
# gf New pattern. (3.1.10)
|
|
# gf Uncommented pattern (3.1.13)
|
|
# tm modified (3.1.22) (see 13x13:52 --decide-dragon K10)
|
|
|
|
Y.O
|
|
.*X cut to stop escape
|
|
|
|
:8,C,value(68)
|
|
|
|
Ycd
|
|
.*A
|
|
|
|
;(owl_escape_value(A)>0)
|
|
; && oplay_defend_both(*,c,*,d)
|
|
|
|
|
|
Pattern A419b
|
|
# Same as A419, different anchor.
|
|
|
|
X.O
|
|
.*Y cut to stop escape
|
|
|
|
:8,C,value(68)
|
|
|
|
Acd
|
|
.*Y
|
|
|
|
;(owl_escape_value(A)>0)
|
|
; && oplay_defend_both(*,c,*,d)
|
|
|
|
|
|
Pattern A420
|
|
# gf New pattern. (3.1.12)
|
|
|
|
?X.o stop escape into center
|
|
OY.O
|
|
.O*.
|
|
xxxx
|
|
|
|
:8,-,value(75)
|
|
|
|
?X.o
|
|
cYaO
|
|
bd*.
|
|
xexx
|
|
|
|
;owl_escape_value(e)>0 && !xplay_defend_both(*,a,b,c,d)
|
|
|
|
|
|
Pattern A421
|
|
# gf New pattern. (3.1.13)
|
|
|
|
xx?
|
|
..O center block
|
|
.*.
|
|
OY?
|
|
|
|
:8,-,value(80)
|
|
|
|
ax?
|
|
b.O
|
|
.*.
|
|
OY?
|
|
|
|
;owl_escape_value(a)>0 || owl_escape_value(b)>0
|
|
|
|
|
|
Pattern A422
|
|
# ab New pattern. (3.3.10)
|
|
|
|
?Oo? prevent connection to another dragon
|
|
Y*.X
|
|
?xo?
|
|
|
|
:8,-,value(85)
|
|
|
|
?Oo?
|
|
a*.b
|
|
?xo?
|
|
|
|
;(!owl_goal_dragon(b))
|
|
;&& !xplay_disconnect(*,a,b)
|
|
|
|
|
|
Pattern A422a
|
|
# same as A422; different anchor.
|
|
|
|
?Oo? prevent connection to another dragon
|
|
X*.Y
|
|
?xo?
|
|
|
|
:8,-,value(85)
|
|
|
|
?Oo?
|
|
a*.b
|
|
?xo?
|
|
|
|
;(!owl_goal_dragon(a))
|
|
;&& !xplay_disconnect(*,a,b)
|
|
|
|
|
|
Pattern A423
|
|
# db New pattern (3.3.9)
|
|
# complementary to D1358
|
|
|
|
X..? try to cut
|
|
Y.*X
|
|
??O?
|
|
|
|
:8,C,value(61)
|
|
|
|
X..?
|
|
Y.*a
|
|
??O?
|
|
|
|
;(owl_escape_value(a) > 0)
|
|
|
|
|
|
Pattern A423a
|
|
# Same as A423; different anchor.
|
|
|
|
X..? try to cut
|
|
X.*Y
|
|
??O?
|
|
|
|
:8,-,value(61)
|
|
|
|
a..?
|
|
a.*Y
|
|
??O?
|
|
|
|
;(owl_escape_value(a) > 0)
|
|
|
|
|
|
Pattern A424
|
|
# pp New pattern (3.3.18)
|
|
|
|
XYO? block and prevent opponent from playing double threat move
|
|
.O.o
|
|
XX*.
|
|
|
|
:8,-,value(80)
|
|
|
|
XYO?
|
|
.O.o
|
|
XX*a
|
|
|
|
;owl_escape_value(a) > 0
|
|
|
|
|
|
Pattern A425
|
|
#spl added 3.5.1, counter part of D1348d
|
|
|
|
O.Y block connection
|
|
.*.
|
|
X.O
|
|
|
|
:/,n,value(90)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Eye reducing moves on the second line #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern A501
|
|
|
|
x.Y? jump under
|
|
.*.O
|
|
....
|
|
----
|
|
|
|
:8,C,value(75)
|
|
|
|
|
|
Pattern A502
|
|
|
|
?Xo extend to kill eye
|
|
O*Y
|
|
X.X
|
|
---
|
|
|
|
:8,Cn,value(45)
|
|
|
|
?Xo
|
|
a*Y
|
|
X.X
|
|
---
|
|
|
|
; attack(a)
|
|
|
|
|
|
Pattern A503
|
|
|
|
?XX push in to eliminate eye
|
|
Y*O
|
|
X.X
|
|
---
|
|
|
|
:8,Cs,value(45)
|
|
|
|
|
|
Pattern A503b
|
|
# gf New pattern. (3.5.3)
|
|
|
|
?XXX atari to eliminate eye or make ko
|
|
Y.O.
|
|
X.X*
|
|
----
|
|
|
|
:8,s,value(32)
|
|
|
|
?XXX
|
|
Y.O.
|
|
X.X*
|
|
----
|
|
|
|
;olib(*)>1
|
|
|
|
|
|
Pattern A504
|
|
|
|
Y* cut off one stone
|
|
OX
|
|
--
|
|
|
|
:8,C,value(35)
|
|
|
|
|
|
Pattern A505
|
|
|
|
?OYX there is death in the hane
|
|
..*.
|
|
....
|
|
----
|
|
|
|
:8,-,value(45)
|
|
|
|
|
|
Pattern A506
|
|
|
|
?YX undermine eyespace
|
|
O*.
|
|
...
|
|
---
|
|
|
|
:8,-,value(35)
|
|
|
|
|
|
Pattern A507
|
|
|
|
?O? destroy eye space and threaten to cut
|
|
Y*X
|
|
...
|
|
---
|
|
|
|
:8,C,value(80)
|
|
|
|
|
|
Pattern A508
|
|
|
|
o.Xx? undermine potential eye space
|
|
O.*.Y
|
|
....x
|
|
-----
|
|
|
|
:8,C,value(65)
|
|
|
|
|
|
Pattern A509
|
|
|
|
X.O destroy eye space by damezumari
|
|
Y*X
|
|
x.x
|
|
---
|
|
|
|
:8,-,value(80)
|
|
|
|
AbO
|
|
A*X
|
|
x.x
|
|
---
|
|
|
|
;lib(A)<=3 && xlib(b) <= 2 && oplay_attack(*,b,b)
|
|
|
|
|
|
Pattern A510
|
|
|
|
.XY.X destroy eyespace in reverse sente
|
|
OXO*.
|
|
.O...
|
|
-----
|
|
|
|
:8,C,value(55)
|
|
|
|
|
|
Pattern A511
|
|
# gf New pattern. (3.1.11)
|
|
|
|
?Y.x undermine eyespace
|
|
O*.x
|
|
...x
|
|
----
|
|
|
|
:8,-,value(35)
|
|
|
|
?Y.x
|
|
O*ax
|
|
...x
|
|
----
|
|
|
|
;owl_eyespace(a)
|
|
|
|
|
|
Pattern A512
|
|
# gf New pattern. (3.1.11)
|
|
|
|
.O?? attack eye shape and stop expansion
|
|
.*Yx
|
|
..oX
|
|
----
|
|
|
|
:8,-,value(70)
|
|
|
|
|
|
Pattern A513
|
|
# tm New pattern. (3.1.15) (see trevora:620)
|
|
# This may be just too generic, though often useful.
|
|
# tm Modified (3.1.16)
|
|
# Added ??? rows, make sure not at upper edge.
|
|
# ab This is indeed too generic.
|
|
# gf Added constraint to make it slightly less generic. (3.5.3)
|
|
# See trevora:620,630 and gifu03:303 for relevant testcases.
|
|
|
|
???|
|
|
???|
|
|
Y..|
|
|
O*.|
|
|
|
|
:8,-,value(45)
|
|
|
|
???|
|
|
?b?|
|
|
Ya.|
|
|
O*.|
|
|
|
|
;x_somewhere(b) || oplay_attack(a,b,a)
|
|
|
|
|
|
Pattern A514
|
|
# tm New Pattern (3.1.15)
|
|
# see also Pattern A615
|
|
|
|
XOo| special edge position
|
|
.YX|
|
|
x*O|
|
|
...|
|
|
|
|
:8,s,value(45)
|
|
|
|
XOb|
|
|
CYW|
|
|
A*O|
|
|
...|
|
|
|
|
; oplay_attack(*,W) && !oplay_attack(*,A,b,C,b)
|
|
|
|
|
|
Pattern A515
|
|
# gf New pattern. See owl1:286. (3.3.17)
|
|
|
|
XXY*O sacrifice lunch and falsify eye
|
|
XOO..
|
|
-----
|
|
|
|
:8,-,value(35)
|
|
|
|
XXY*O
|
|
XOba.
|
|
-----
|
|
|
|
;!oplay_attack(*,a,b,*)
|
|
|
|
|
|
Pattern A516
|
|
# evand New pattern (3.3.20)
|
|
|
|
oOXY. Begin to falsify eye in reverse sente
|
|
..O*X
|
|
.....
|
|
-----
|
|
|
|
:8,-,value(70)
|
|
|
|
oOXYa
|
|
..O*X
|
|
....b
|
|
-----
|
|
|
|
;!obvious_false_xeye(a) || !obvious_false_oeye(b)
|
|
|
|
|
|
Pattern A517
|
|
#spl added (3.3.23) see nando:11
|
|
|
|
?OYXxx Prevent opponent from making an eye on the first line
|
|
.*O.X.
|
|
.....X
|
|
------
|
|
|
|
:8,-,value(5)
|
|
|
|
|
|
Pattern A518
|
|
# gf New pattern. (3.5.3)
|
|
# See nngs2:460
|
|
|
|
O.xx? destroye eye
|
|
.*.YX
|
|
....X
|
|
-----
|
|
|
|
:8,-,value(45)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Eye reducing moves on the first line #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern A601
|
|
|
|
---- jump along edge
|
|
O.*.
|
|
Y..?
|
|
?Xxx
|
|
|
|
:8,-,value(75)
|
|
|
|
|
|
Pattern A602
|
|
|
|
--+ hane in corner
|
|
..|
|
|
Y*|
|
|
Oo|
|
|
|
|
:8,-,value(70)
|
|
|
|
--+
|
|
..|
|
|
Y*|
|
|
ao|
|
|
|
|
;!attack(a)
|
|
|
|
|
|
Pattern A603
|
|
|
|
xXY.O reduce eye space
|
|
x.*..
|
|
-----
|
|
|
|
:8,s,value(35)
|
|
|
|
xXY.a
|
|
cb*..
|
|
-----
|
|
|
|
;!attack(a) && owl_proper_eye(b)
|
|
;&& (x_somewhere(c) || owl_proper_eye(c))
|
|
|
|
|
|
Pattern A603b
|
|
# tm - modified (3.1.15) (see trevora:170)
|
|
|
|
xY.x reduce eye space
|
|
.*.O
|
|
----
|
|
|
|
:8,s,value(35)
|
|
|
|
xY.x
|
|
b*.a
|
|
----
|
|
|
|
;owl_eyespace(b) && !attack(a)
|
|
|
|
|
|
Pattern A604
|
|
|
|
XY..O reduce eye space
|
|
.*...
|
|
-----
|
|
|
|
:8,s,value(35)
|
|
|
|
|
|
Pattern A605
|
|
|
|
|.Y.O reduce eye space
|
|
|.*..
|
|
+----
|
|
|
|
:8,s,value(35)
|
|
|
|
|
|
Pattern A606
|
|
|
|
XxY.O try to destroy eye
|
|
xO*..
|
|
-----
|
|
|
|
:8,s,value(50)
|
|
|
|
XxYaO
|
|
xc*b.
|
|
-----
|
|
|
|
;lib(c) > 1 && !oplay_attack(*,a,b,*)
|
|
|
|
|
|
Pattern A607a
|
|
# gf Split pattern. (3.5.3)
|
|
# gf Revised constraint. (3.5.4)
|
|
# gf Comment: A607a and A607b could now be merged again but I think
|
|
# it may be handy for later revisions to keep them apart.
|
|
|
|
XYO there is death in the hane
|
|
.*.
|
|
---
|
|
|
|
:8,s,value(36)
|
|
|
|
XYa
|
|
b*.
|
|
---
|
|
|
|
;owl_maxeye(b) > 0 && !oplay_attack(*,a) && !obvious_false_xeye(b)
|
|
|
|
|
|
Pattern A607b
|
|
# gf Split pattern and revised constraint. (3.5.3)
|
|
# gf Reordered constraint for better performance. (3.5.4)
|
|
|
|
.YO there is death in the hane
|
|
.*.
|
|
---
|
|
|
|
:8,s,value(36)
|
|
|
|
.Ya
|
|
b*.
|
|
---
|
|
|
|
;owl_maxeye(b)>0 && !oplay_attack(*,a) && !obvious_false_xeye(b)
|
|
|
|
|
|
Pattern A607c
|
|
# gf New pattern. (3.1.12)
|
|
# gf Reordered constraint for better performance. (3.5.4)
|
|
|
|
xYO the push is also deadly
|
|
.*O
|
|
---
|
|
|
|
:8,-,value(55)
|
|
|
|
xYa
|
|
b*a
|
|
---
|
|
|
|
;owl_eyespace(b) && !oplay_attack(*,b,a)
|
|
|
|
|
|
Pattern A607d
|
|
# gf New pattern. (3.5.4)
|
|
# gf Comment: A607a and A607b could now be merged again but I think
|
|
# it may be handy for later revisions to keep them apart.
|
|
|
|
?XYO there is death in the hane
|
|
o.*.
|
|
----
|
|
|
|
:8,s,value(36)
|
|
|
|
dXYa
|
|
cb*.
|
|
----
|
|
|
|
;owl_maxeye(b)==0
|
|
;&& ((o_somewhere(c) && owl_lunch(c))
|
|
; || (o_somewhere(d) && owl_lunch(d)))
|
|
;&& !oplay_attack(*,a) && !obvious_false_xeye(b)
|
|
|
|
|
|
Pattern A608
|
|
|
|
xYO hane with atari on more than one stone
|
|
.*.
|
|
---
|
|
|
|
:8,s,value(75)
|
|
|
|
xCa
|
|
b*.
|
|
---
|
|
|
|
;lib(C)==2 && wormsize(C)>1 && !oplay_attack(*,a) && !obvious_false_xeye(b)
|
|
|
|
|
|
Pattern A609
|
|
|
|
XOY destroy eye
|
|
.*.
|
|
---
|
|
|
|
:8,s,value(35)
|
|
|
|
|
|
Pattern A610
|
|
|
|
X.YO try to damage eyespace in sente
|
|
.*.?
|
|
----
|
|
|
|
:8,s,value(55)
|
|
|
|
X.Ya
|
|
.*.?
|
|
----
|
|
|
|
;!attack(a)
|
|
|
|
|
|
Pattern A611
|
|
|
|
?Ox? placement where X cannot cut
|
|
XY.X
|
|
O.*.
|
|
----
|
|
|
|
:8,-,value(80)
|
|
|
|
?Ox?
|
|
AA.X
|
|
O.*.
|
|
----
|
|
|
|
;lib(A)==2
|
|
|
|
|
|
Pattern A612
|
|
|
|
oOY? threaten snapback to destroy eye
|
|
OX.X
|
|
*X.O
|
|
----
|
|
|
|
:8,-,value(60)
|
|
|
|
oOY?
|
|
OX.X
|
|
*X.a
|
|
----
|
|
|
|
;lib(a) > 1
|
|
|
|
|
|
Pattern A613
|
|
|
|
X.X? extra forceful hane
|
|
..YO
|
|
..*.
|
|
----
|
|
|
|
:8,-,value(65)
|
|
|
|
X.D?
|
|
.bDO
|
|
.a*c
|
|
----
|
|
|
|
;oplay_attack(*,a,b,c,D)
|
|
|
|
|
|
Pattern A614
|
|
# gf New pattern. (3.1.15)
|
|
|
|
XYO? destroy eyespace when we can't capture
|
|
..XO
|
|
X.*.
|
|
----
|
|
|
|
:8,-,value(65)
|
|
|
|
XYO?
|
|
.aXO
|
|
X.*.
|
|
----
|
|
|
|
;!oplay_attack(a,*,*)
|
|
|
|
|
|
Pattern A615
|
|
# tm New Pattern (3.1.15)
|
|
|
|
OXYXO attack shortage of liberties
|
|
?...?
|
|
?.*.?
|
|
-----
|
|
|
|
:|,s,value(65)
|
|
|
|
OXAXO
|
|
?...?
|
|
?.*.?
|
|
-----
|
|
|
|
;lib(A) == 3
|
|
|
|
|
|
# nn Removal candidate (3.3.13)
|
|
# Success rate in regressions : 0.75 % (2/268)
|
|
|
|
Pattern A616
|
|
# tm New Pattern (3.1.15)
|
|
# tm Modified (3.1.17)
|
|
|
|
?XOo| special edge collapse
|
|
?.Y.|
|
|
?x.*|
|
|
?x..|
|
|
|
|
:8,s,value(45)
|
|
|
|
?XCa|
|
|
?.Y.|
|
|
?b.*|
|
|
?x..|
|
|
|
|
; !attack(C)
|
|
; && (!x_somewhere(b) || (x_somewhere(b) && o_somewhere(a)))
|
|
|
|
|
|
Pattern A617
|
|
# tm New Pattern (3.1.15)
|
|
|
|
OY? threaten snapback.
|
|
X.X
|
|
X.O
|
|
X*.
|
|
---
|
|
|
|
:8,s,value(50)
|
|
|
|
OY?
|
|
A.X
|
|
X.O
|
|
X*.
|
|
---
|
|
|
|
; lib(A) == 3
|
|
|
|
|
|
Pattern A618
|
|
# tm New Pattern (3.1.17)
|
|
|
|
XYO falsify eye
|
|
XOX
|
|
X.*
|
|
---
|
|
|
|
:8,-,value(75)
|
|
|
|
XYb
|
|
XOX
|
|
XA*
|
|
---
|
|
|
|
; oplay_defend_both(*,A,b,*)
|
|
|
|
|
|
Pattern A619
|
|
#tm New Pattern (3.1.17)
|
|
|
|
|.Y
|
|
|.*
|
|
+--
|
|
|
|
:8,-,value(75)
|
|
|
|
|
|
Pattern A620
|
|
#evand New Pattern. (3.3.18)
|
|
|
|
.YO push in to destroy eyespace
|
|
*Ox
|
|
---
|
|
|
|
:8,s,value(65)
|
|
|
|
aYO
|
|
*Ox
|
|
---
|
|
|
|
;!obvious_false_xeye(a)
|
|
|
|
|
|
Pattern A621
|
|
# spl added 3.3.22
|
|
# gf Revised constraint. (3.5.3)
|
|
|
|
?YOo? threaten to make ko or nakade
|
|
X..*.
|
|
-----
|
|
|
|
:8,s,value(10)
|
|
|
|
?AOo?
|
|
X..*.
|
|
-----
|
|
|
|
;lib(A)<3 && owl_eyespace(*)
|
|
|
|
|
|
Pattern A622
|
|
# gf New pattern. (3.5.3)
|
|
# Compare D704b. See nngs3:450.
|
|
|
|
xY.O half eye sometimes missed
|
|
X.*o
|
|
----
|
|
|
|
:8,-,value(35)
|
|
|
|
bYaO
|
|
X.*o
|
|
----
|
|
|
|
; xplay_attack(*,a,a)
|
|
; && (x_somewhere(b) || !safe_omove(b))
|
|
|
|
|
|
Pattern A623
|
|
# gf New pattern. (3.5.5)
|
|
|
|
|.xY.O
|
|
|....O monkey jump into the corner
|
|
|.*...
|
|
+-----
|
|
|
|
:8,-,value(65)
|
|
|
|
|
|
Pattern A626
|
|
# gf New pattern. (3.7.3)
|
|
|
|
??XXO?
|
|
XX..XO steal an eye
|
|
.*.X.O
|
|
------
|
|
|
|
:8,s,value(75)
|
|
|
|
??XXO?
|
|
XX..XO
|
|
a*.X.O
|
|
------
|
|
|
|
;owl_proper_eye(a)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Eye reducing moves in the center #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern A701
|
|
|
|
?XOo make atari
|
|
X.YO
|
|
x.*.
|
|
|
|
:8,-,value(79)
|
|
|
|
?AOo
|
|
X.YO
|
|
x.*.
|
|
|
|
;lib(A)>1
|
|
|
|
|
|
Pattern A702
|
|
|
|
?XOo make atari
|
|
X.YO
|
|
..*O
|
|
??x?
|
|
|
|
:8,-,value(80)
|
|
|
|
?AOo
|
|
X.YO
|
|
..*O
|
|
??x?
|
|
|
|
;lib(A)>1
|
|
|
|
|
|
Pattern A703
|
|
|
|
?XX? push in to limit eyeshape
|
|
O*.Y
|
|
?..x
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern A704
|
|
|
|
?OY? capture one stone
|
|
OXOX
|
|
.*.?
|
|
|
|
:8,C,value(80)
|
|
|
|
|
|
Pattern A705b
|
|
|
|
?.? attack eye shape
|
|
X*Y
|
|
?.?
|
|
|
|
:8,C,value(61)
|
|
|
|
?b?
|
|
X*Y
|
|
?a?
|
|
|
|
;owl_eyespace(a) && xlib(b) <= 2 && oplay_attack(*,b,b)
|
|
|
|
|
|
Pattern A706
|
|
|
|
?*?
|
|
X.X
|
|
?Y.
|
|
|
|
:8,C,value(70)
|
|
|
|
?*?
|
|
XaA
|
|
?Yb
|
|
|
|
; (owl_topological_eye(a,A)<=2) && (owl_topological_eye(b,A)==2)
|
|
|
|
|
|
Pattern A707
|
|
|
|
?O?
|
|
X*X
|
|
.Y.
|
|
|
|
:8,C,value(70)
|
|
|
|
?O?
|
|
X*A
|
|
aYb
|
|
|
|
; (owl_topological_eye(a,A)==2)
|
|
; && ((owl_topological_eye(b,A)==2) || (owl_topological_eye(b,A)==3))
|
|
|
|
|
|
Pattern A708
|
|
|
|
?Y* attack eye with sente
|
|
x.X
|
|
?x?
|
|
|
|
:8,n,value(80)
|
|
|
|
?Y*
|
|
xaB
|
|
?x?
|
|
|
|
;owl_topological_eye(a,B)==3 && does_attack(*,B)
|
|
|
|
|
|
Pattern A709
|
|
|
|
xX. half eye sometimes missed
|
|
Y.*
|
|
?x?
|
|
|
|
:8,C,value(45)
|
|
|
|
xXb
|
|
Aa*
|
|
?x?
|
|
|
|
; owl_topological_eye(a,A)==3
|
|
; && safe_omove(b) && safe_omove(*) && xplay_attack(*,b,b)
|
|
|
|
|
|
Pattern A710
|
|
|
|
?Y* kill a half eye with an atari
|
|
x.X
|
|
?x?
|
|
|
|
:8,-,value(35)
|
|
|
|
?A*
|
|
xba
|
|
?x?
|
|
|
|
; lib(a)==2 && owl_topological_eye(b,A)==3
|
|
|
|
|
|
Pattern A711
|
|
|
|
O*.X destroy eye
|
|
X..X
|
|
xXY?
|
|
|
|
:8,C,value(35)
|
|
|
|
|
|
Pattern A712
|
|
|
|
?XX? eye stealing tesuji
|
|
...Y
|
|
.*.X
|
|
oo.?
|
|
|
|
:8,C,value(60)
|
|
|
|
|
|
Pattern A713
|
|
|
|
OO? destroy potential eye
|
|
X.Y
|
|
X.X
|
|
x*x
|
|
|
|
:8,-,value(45)
|
|
|
|
bb?
|
|
XaY
|
|
X.X
|
|
x*x
|
|
|
|
;!attack(b) && xplay_attack(a,b)
|
|
|
|
|
|
Pattern A714
|
|
|
|
?XY? capture to spoil eyespace
|
|
O..X
|
|
X*.x
|
|
OX.x
|
|
|
|
:8,C,value(82)
|
|
|
|
?XY?
|
|
O..X
|
|
A*.x
|
|
OX.x
|
|
|
|
;lib(A)==1
|
|
|
|
|
|
Pattern A715
|
|
# gf New pattern. (3.1.11)
|
|
# evand Modified. (3.3.18)
|
|
|
|
?*YX attack eye shape and possibly threaten to cut
|
|
x..x
|
|
?xXO
|
|
|
|
:8,-,value(60)
|
|
|
|
?*YX
|
|
x..x
|
|
?xXa
|
|
|
|
;!owl_proper_eye(*) && !attack(a)
|
|
|
|
|
|
Pattern A716
|
|
# gf New pattern. (3.1.12)
|
|
|
|
O*x destroy eye in reverse sente
|
|
X.X
|
|
xYx
|
|
|
|
:8,C,value(50)
|
|
|
|
a*x
|
|
X.X
|
|
xYx
|
|
|
|
;xplay_attack(*,a)
|
|
|
|
|
|
Pattern A717
|
|
# tm New Pattern (3.1.17)
|
|
|
|
?.??
|
|
XO*Y
|
|
?X.X
|
|
|
|
:8,Cs,value(75)
|
|
|
|
?.??
|
|
XO*Y
|
|
?XAb
|
|
|
|
; owl_big_eyespace(A)
|
|
; && oplay_attack(*,b)
|
|
|
|
|
|
Pattern A718
|
|
# tm New Pattern (3.1.22) (see trevorc:1360)
|
|
# see related general defense pattern D309a
|
|
|
|
xYx? reduce eye space
|
|
x.*O
|
|
xXx?
|
|
|
|
:8,C,value(50)
|
|
|
|
xYx?
|
|
x.*A
|
|
xXx?
|
|
|
|
; 1 || oplay_attack(*,A)
|
|
|
|
|
|
Pattern A719
|
|
# gf New pattern. (3.3.20)
|
|
# gf Revised constraint. (3.5.2)
|
|
|
|
?XYO reduce eye space
|
|
X.*X
|
|
?XX.
|
|
|
|
:8,s,value(50)
|
|
|
|
?XYc
|
|
Xa*X
|
|
?XXb
|
|
|
|
;owl_mineye(*)==1 && xlib(b)==2 && !oplay_attack(*,c) && !oplay_attack(*,a,b,b)
|
|
|
|
|
|
Pattern A719b
|
|
# gf New pattern. (3.3.20)
|
|
|
|
|XYO reduce eye space
|
|
|.*X
|
|
|XX.
|
|
|
|
:8,s,value(50)
|
|
|
|
|XYc
|
|
|a*X
|
|
|XXb
|
|
|
|
;xlib(b)==2 && !oplay_attack(*,c) && !oplay_attack(*,a,b,b)
|
|
|
|
|
|
Pattern A720
|
|
# evand New pattern (3.3.20)
|
|
|
|
?.??
|
|
Y..x Bamboo connection to reduce eyespace
|
|
X*Ox
|
|
?...
|
|
?OO?
|
|
|
|
:8,C,value(40)
|
|
|
|
?c??
|
|
Ya.x
|
|
X*Ox
|
|
?...
|
|
?OO?
|
|
|
|
;(owl_eyespace(a) || owl_eyespace(c))
|
|
;&& oplay_attack(a,a) && xplay_attack(*,a)
|
|
|
|
|
|
Pattern A721
|
|
|
|
?XX.
|
|
Y.*.
|
|
?XX.
|
|
|
|
:8,s,value(45)
|
|
|
|
?XXe
|
|
Yd*c
|
|
?AAb
|
|
|
|
;lib(A) == 3 && !obvious_false_xeye(d)
|
|
;&& oplay_defend(*,b,c,*) && oplay_defend(*,e,c,*)
|
|
;&& oplay_defend_both(*,c,b,d,e,b,e)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Invade the eye space #
|
|
# #
|
|
#########################################################
|
|
# #
|
|
# These are patterns where a live stone #
|
|
# is played where the opponent might get #
|
|
# an eye. They do not include sacrifice #
|
|
# patterns. #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern A801
|
|
|
|
?xYx attack chimera
|
|
xX.X
|
|
X.*O
|
|
----
|
|
|
|
:8,n,value(80)
|
|
|
|
|
|
Pattern A802
|
|
|
|
xYx destroy eye
|
|
X.X
|
|
.*O
|
|
---
|
|
|
|
:8,n,value(50)
|
|
|
|
|
|
Pattern A803
|
|
# tm modified(3.1.16)
|
|
|
|
xxX? connect under
|
|
oOYO
|
|
..*.
|
|
----
|
|
|
|
:8,-,value(80)
|
|
|
|
xxX?
|
|
oAYO
|
|
..*.
|
|
----
|
|
|
|
; attack(A) && !oplay_attack(*,A)
|
|
|
|
|
|
Pattern A804
|
|
|
|
.YO? connect out on first line
|
|
O*oo
|
|
----
|
|
|
|
:8,-,value(45)
|
|
|
|
.YO?
|
|
A*oo
|
|
----
|
|
|
|
; does_attack(*,A)
|
|
|
|
|
|
Pattern A805
|
|
|
|
XxxX? connect under
|
|
.oOYO
|
|
...*.
|
|
-----
|
|
|
|
:8,-,value(60)
|
|
|
|
|
|
Pattern A806
|
|
|
|
O..Y clamp
|
|
OX*.
|
|
....
|
|
----
|
|
|
|
:8,C,value(75)
|
|
|
|
|
|
Pattern A807
|
|
|
|
?X. connect under
|
|
OY*
|
|
.O.
|
|
---
|
|
|
|
:8,-,value(65)
|
|
|
|
|
|
Pattern A808
|
|
|
|
|.OYO avoid leaving ko by connecting on the outside
|
|
|*XO.
|
|
+----
|
|
|
|
:8,-,value(60)
|
|
|
|
|
|
Pattern A809
|
|
|
|
XX.O? connect out
|
|
O.YO?
|
|
O.*..
|
|
-----
|
|
|
|
:8,-,value(80)
|
|
|
|
XX.O?
|
|
A.YO?
|
|
A.*..
|
|
-----
|
|
|
|
; lib(A)>2
|
|
|
|
|
|
Pattern A810
|
|
# This looks a little weird. /ab
|
|
|
|
?O?
|
|
X.Y safe invasion into eye
|
|
?*?
|
|
|
|
:8,-,value(45)
|
|
|
|
?O?
|
|
X.Y
|
|
?*?
|
|
|
|
;owl_eyespace(*)
|
|
|
|
|
|
Pattern A811
|
|
#tm New Pattern (3.1.17)
|
|
|
|
.X?
|
|
X.Y
|
|
.*X
|
|
|
|
:8,s,value(65)
|
|
|
|
aX?
|
|
XbC
|
|
.*X
|
|
|
|
; lib(C) <= 3
|
|
; && owl_proper_eye(a)
|
|
; && owl_proper_eye(b)
|
|
|
|
|
|
Pattern A812
|
|
|
|
.Y? clamp to invade eyespace
|
|
..O
|
|
*XO
|
|
..o
|
|
---
|
|
|
|
:8,C,value(40)
|
|
|
|
.Y?
|
|
..O
|
|
*XO
|
|
..o
|
|
---
|
|
|
|
;owl_eyespace(*)
|
|
|
|
|
|
Pattern A813
|
|
#spl added 3.5.1 see century2002:80
|
|
# gf Revised constraint. (3.5.1)
|
|
|
|
X*.
|
|
OYO sacrifice to eliminate eye
|
|
.X.
|
|
---
|
|
|
|
:8,Cs,value(85)
|
|
|
|
X*.
|
|
aYb
|
|
cXd
|
|
---
|
|
|
|
;(!attack(a) && olib(d)>=3)
|
|
;|| (!attack(b) && olib(c)>=3)
|
|
|
|
|
|
Pattern A814
|
|
# gf New pattern. (3.7.2)
|
|
# See ld_owl:321.
|
|
|
|
X.. try to squeeze eyespace
|
|
OY*
|
|
?X.
|
|
---
|
|
|
|
:8,s,value(35)
|
|
|
|
X..
|
|
OB*
|
|
?Ba
|
|
---
|
|
|
|
;lib(B) == 3 && owl_big_eyespace(*) && olib(*)>2 && olib(a)>1
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Nakade patterns #
|
|
# #
|
|
#########################################################
|
|
# #
|
|
# These are patterns where a sacrifice stone #
|
|
# is played in the opponent's eye space to #
|
|
# prevent two eyes. Use the s (sacrifice) #
|
|
# classification #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern A901
|
|
|
|
|X???
|
|
|OXYX connect corner ko to make nakade
|
|
|*O.X
|
|
+----
|
|
|
|
:8,s,value(70)
|
|
|
|
|
|
Pattern A902
|
|
|
|
XOY nakade trick
|
|
O*O
|
|
---
|
|
|
|
:8,s,value(70)
|
|
|
|
XbY
|
|
a*c
|
|
---
|
|
|
|
;lib(a)==1 && lib(b)==1 && lib(c)<=2
|
|
|
|
|
|
Pattern A902b
|
|
|
|
XOY nakade trick
|
|
O*O
|
|
---
|
|
|
|
:8,s,value(30)
|
|
|
|
XbY
|
|
a*c
|
|
---
|
|
|
|
;lib(a)<=2 && lib(b)==1 && lib(c)<=2
|
|
|
|
|
|
Pattern A903
|
|
|
|
|xYX?
|
|
|.O.X try to make nakade
|
|
|..*.
|
|
+----
|
|
|
|
:8,s,value(35)
|
|
|
|
|
|
Pattern A904
|
|
|
|
|OX? try to form nakade
|
|
|XOY
|
|
|*.x
|
|
+---
|
|
|
|
:8,s,value(55)
|
|
|
|
|aB?
|
|
|XOY
|
|
|*.x
|
|
+---
|
|
|
|
;lib(a) == 1 && lib(B) > 1
|
|
|
|
|
|
Pattern A905
|
|
# gf Increased value slightly. (3.1.14)
|
|
|
|
|O.X try to form nakade
|
|
|XOY
|
|
|*..
|
|
+---
|
|
|
|
:8,s,value(36)
|
|
|
|
|
|
Pattern A906a
|
|
# gf New pattern. (3.5.3)
|
|
# See seki:303.
|
|
|
|
|X???
|
|
|.YX?
|
|
|XO.X try to make ko
|
|
|*.O.
|
|
+----
|
|
|
|
:8,s,value(32)
|
|
|
|
|Xa??
|
|
|.YX?
|
|
|XO.X
|
|
|*.O.
|
|
+----
|
|
|
|
;!o_somewhere(a) || !defend(a)
|
|
|
|
|
|
Pattern A906b
|
|
# gf New pattern. (3.5.3)
|
|
# See seki:303.
|
|
|
|
|X???
|
|
|.YX?
|
|
|.OXX try to make ko
|
|
|*.O.
|
|
+----
|
|
|
|
:8,s,value(32)
|
|
|
|
|Xa??
|
|
|.YX?
|
|
|.OXX
|
|
|*.O.
|
|
+----
|
|
|
|
;!o_somewhere(a) || !defend(a)
|
|
|
|
|
|
Pattern A907
|
|
|
|
|.X??
|
|
|OYX? critical point, might kill
|
|
|*.Xx
|
|
|....
|
|
+----
|
|
|
|
:8,s,value(65)
|
|
|
|
|.X??
|
|
|aYX?
|
|
|*.Xx
|
|
|....
|
|
+----
|
|
|
|
;!defend(a)
|
|
|
|
|
|
Pattern A908
|
|
|
|
|X??? nakade if ko can be won
|
|
|OYX?
|
|
|.OX?
|
|
|O*.X
|
|
+----
|
|
|
|
:8,s,value(35)
|
|
|
|
|X???
|
|
|OYX?
|
|
|.OX?
|
|
|O*aX
|
|
+----
|
|
|
|
;xlib(a) == 2
|
|
|
|
|
|
Pattern A909
|
|
|
|
|.X? capture to form nakade
|
|
|OYX
|
|
|XOX
|
|
|*O.
|
|
+---
|
|
|
|
:8,s,value(35)
|
|
|
|
|
|
Pattern A910
|
|
# gf Revised constraint. (3.5.3)
|
|
|
|
XYX| try nakade in corner
|
|
.*.|
|
|
---+
|
|
|
|
:8,s,value(25)
|
|
|
|
XYX|
|
|
a*.|
|
|
---+
|
|
|
|
;!obvious_false_xeye(a) && owl_maxeye(*)>1
|
|
|
|
|
|
Pattern A911
|
|
|
|
Y.Xo| try nakade
|
|
X.*.|
|
|
----+
|
|
|
|
:8,s,value(25)
|
|
|
|
A.Xo|
|
|
A.*.|
|
|
----+
|
|
|
|
;lib(A)==2
|
|
|
|
|
|
Pattern A912
|
|
|
|
OYOo destroy eyespace
|
|
X.XO
|
|
.*..
|
|
----
|
|
|
|
:8,s,value(35)
|
|
|
|
|
|
Pattern A913
|
|
|
|
XY.X try sente eyeshape reduction
|
|
X.*.
|
|
----
|
|
|
|
:8,s,value(80)
|
|
|
|
AAbX
|
|
A.*.
|
|
----
|
|
|
|
;lib(A)==2 && !safe_omove(b)
|
|
|
|
|
|
Pattern A914
|
|
|
|
XY.X try nakade
|
|
X.*.
|
|
----
|
|
|
|
:8,s,value(25)
|
|
|
|
XYaX
|
|
X.*.
|
|
----
|
|
|
|
;!safe_omove(a)
|
|
|
|
|
|
Pattern A915
|
|
|
|
X.Yoo destroy eyespace
|
|
.*.Xo
|
|
.....
|
|
-----
|
|
|
|
:8,s,value(85)
|
|
|
|
X.Yao
|
|
.*.Xb
|
|
.....
|
|
-----
|
|
|
|
;o_somewhere(a,b)
|
|
|
|
|
|
Pattern A916
|
|
|
|
??Yx play inside to kill one eye
|
|
XX.X
|
|
..*.
|
|
----
|
|
|
|
:8,s,value(65)
|
|
|
|
|
|
Pattern A917
|
|
|
|
?X?? always worth considering
|
|
X.Y?
|
|
?*.X
|
|
??X?
|
|
|
|
:/,s,value(45)
|
|
|
|
|
|
Pattern A918
|
|
# gf New pattern. (3.1.14)
|
|
|
|
?X?? always worth considering
|
|
X.Y?
|
|
?*.X
|
|
????
|
|
|
|
:8,s,value(40)
|
|
|
|
|
|
Pattern A919
|
|
# evand New pattern. (3.3.20)
|
|
|
|
o?XX??
|
|
OX..Y?
|
|
..*..x
|
|
------
|
|
|
|
:8,s,value(35)
|
|
|
|
|
|
Pattern A920
|
|
# evand New pattern. (3.3.20)
|
|
|
|
?XX??
|
|
X..Y?
|
|
xO*.x
|
|
-----
|
|
|
|
:8,s,value(35)
|
|
|
|
|
|
Pattern A921
|
|
# gf New pattern. (3.7.1)
|
|
# See ld_owl:320.
|
|
|
|
?XX??
|
|
X.*Y?
|
|
xO..x
|
|
-----
|
|
|
|
:8,s,value(30)
|
|
|
|
?XX??
|
|
X.*A?
|
|
xO..x
|
|
-----
|
|
|
|
;oplay_defend(*,A)!=WIN
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Cuts #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern A1001
|
|
|
|
YO cut if safe
|
|
*X
|
|
|
|
:8,Cn,value(80)
|
|
|
|
Ba
|
|
*C
|
|
|
|
;(owl_escape_value(B)>0 || owl_escape_value(C)>0)
|
|
;&& !oplay_attack_either(*,*,a)
|
|
|
|
|
|
Pattern A1001b
|
|
# Sometimes cut of small useless tail
|
|
# i.e.: gq -l games/niki.sgf -L 158 --decide-dragon S8 -o x.sgf
|
|
|
|
YO cut if safe
|
|
*X
|
|
|
|
:8,Cn,value(50)
|
|
|
|
Ya
|
|
*X
|
|
|
|
; !oplay_attack_either(*,*,a)
|
|
|
|
|
|
Pattern A1002
|
|
|
|
????
|
|
?*.X threaten to cut
|
|
??YO
|
|
|
|
:8,C,value(75)
|
|
|
|
????
|
|
?*aX
|
|
??Yc
|
|
|
|
; !safe_omove(a) && !oplay_attack_either(*,?,a,a,c) && !oplay_attack(*,a,*)
|
|
|
|
|
|
Pattern A1003
|
|
|
|
????
|
|
?*.X threaten to cut
|
|
??YO
|
|
|
|
:8,C,value(55)
|
|
|
|
????
|
|
?*aX
|
|
??Yc
|
|
|
|
; !safe_omove(a) && !oplay_attack_either(*,?,a,a,c)
|
|
|
|
|
|
Pattern A1005
|
|
|
|
Y? cut!
|
|
*O
|
|
.X
|
|
|
|
:8,C,value(90)
|
|
|
|
Y?
|
|
*b
|
|
aC
|
|
|
|
;owl_escape_value(C)>0 && xplay_attack_either(*,a,a,b)
|
|
|
|
|
|
Pattern A1005b
|
|
# gf Need to consider both directions. (3.3.13)
|
|
|
|
X? cut!
|
|
*O
|
|
.Y
|
|
|
|
:8,C,value(90)
|
|
|
|
C?
|
|
*b
|
|
aY
|
|
|
|
;owl_escape_value(C)>0 && xplay_attack_either(*,a,a,b)
|
|
|
|
|
|
Pattern A1006
|
|
|
|
XOY push out
|
|
.*.
|
|
?.?
|
|
|
|
:8,C,value(70)
|
|
|
|
|
|
Pattern A1006b
|
|
# gf New pattern. (3.1.12)
|
|
|
|
XOY push out in reverse sente
|
|
.*.
|
|
?.?
|
|
|
|
:8,C,value(75)
|
|
|
|
XaY
|
|
.*.
|
|
?.?
|
|
|
|
;lib(a) <= 2
|
|
|
|
|
|
Pattern A1008
|
|
|
|
X*Y stop connection
|
|
?O?
|
|
|
|
:8,C,value(80)
|
|
|
|
a*b
|
|
?O?
|
|
|
|
;owl_escape_value(a)>0 || owl_escape_value(b)>0
|
|
|
|
|
|
Pattern A1008b
|
|
# tm Modified (3.1.22) (see trevorc:810)
|
|
|
|
ooo
|
|
X*Y stop connection
|
|
O.?
|
|
|
|
:8,C,value(80)
|
|
|
|
ooo
|
|
a*b
|
|
Oc?
|
|
|
|
;(owl_escape_value(a)>0 || owl_escape_value(b)>0)
|
|
; && oplay_attack(*,c,c)
|
|
|
|
|
|
Pattern A1009
|
|
|
|
XO*Y stop connection underneath
|
|
....
|
|
----
|
|
|
|
:8,C,value(55)
|
|
|
|
XO*Y
|
|
.a..
|
|
----
|
|
|
|
;xplay_attack(*,a,a)
|
|
|
|
|
|
Pattern A1010
|
|
|
|
Y.O cut and capture to destroy eyespace
|
|
.*X
|
|
...
|
|
---
|
|
|
|
:8,C,value(75)
|
|
|
|
YaO
|
|
.*B
|
|
...
|
|
---
|
|
|
|
;oplay_attack(*,a,B)
|
|
|
|
|
|
Pattern A1011
|
|
|
|
XOY stop connection underneath
|
|
x*x
|
|
---
|
|
|
|
:8,C,value(80)
|
|
|
|
aOb
|
|
x*x
|
|
---
|
|
|
|
;owl_escape_value(a)>0 || owl_escape_value(b)>0
|
|
|
|
|
|
Pattern A1012
|
|
|
|
X.?? cut
|
|
OY*O
|
|
oOX?
|
|
|
|
:8,C,value(45)
|
|
|
|
Xa??
|
|
OY*O
|
|
obX?
|
|
|
|
; !safe_omove(a) && lib(b)>1
|
|
|
|
|
|
Pattern A1013
|
|
# tm New pattern. (3.1.13)
|
|
# see owl:229
|
|
|
|
?O? enclose!
|
|
Y..
|
|
X*?
|
|
|
|
:8,-,value(10)
|
|
|
|
?c?
|
|
YAb
|
|
X*?
|
|
|
|
; owl_escape_value(b)>0
|
|
; && oplay_defend_both(*,A,b,c,b)
|
|
; && oplay_defend_both(*,A,b,b,*)
|
|
|
|
|
|
Pattern A1014
|
|
# gf New pattern. (3.1.14)
|
|
|
|
xx..Ox stop connection underneath
|
|
...*Y.
|
|
------
|
|
|
|
:8,C,value(55)
|
|
|
|
AB..Ox
|
|
...*Y.
|
|
------
|
|
|
|
;x_somewhere(A,B) && owl_escape_value(A) + owl_escape_value(B) > 0
|
|
|
|
|
|
Pattern A1015
|
|
|
|
X.*Y cut!
|
|
X..X
|
|
|
|
:8,C,value(75)
|
|
|
|
Ae*B
|
|
AfgB
|
|
|
|
; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0)
|
|
; && oplay_defend_both(*,g,f,e,f,*)
|
|
|
|
|
|
Pattern A1015a
|
|
|
|
Y.*X cut!
|
|
X..X
|
|
|
|
:8,C,value(75)
|
|
|
|
Ae*B
|
|
AfgB
|
|
|
|
; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0)
|
|
; && oplay_defend_both(*,g,f,e,f,*)
|
|
|
|
|
|
Pattern A1016
|
|
# gf New pattern. (3.1.22)
|
|
# Converse to D1376. See lazarus:114 for an example.
|
|
|
|
YxO?
|
|
o.*X
|
|
----
|
|
|
|
:8,C,value(75)
|
|
|
|
Bde?
|
|
oc*A
|
|
----
|
|
|
|
; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0)
|
|
; && ((x_somewhere(d) && xplay_attack_either(*,c,c,e))
|
|
; || (!x_somewhere(d) && !xplay_defend_both(*,c,d,c,e)))
|
|
|
|
|
|
Pattern A1016a
|
|
# gf New pattern. (3.1.22)
|
|
# Converse to D1376. See lazarus:114 for an example.
|
|
|
|
XxO?
|
|
o.*Y
|
|
----
|
|
|
|
:8,C,value(75)
|
|
|
|
Bde?
|
|
oc*A
|
|
----
|
|
|
|
; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0)
|
|
; && ((x_somewhere(d) && xplay_attack_either(*,c,c,e))
|
|
; || (!x_somewhere(d) && !xplay_defend_both(*,c,d,c,e)))
|
|
|
|
|
|
Pattern A1017
|
|
# nn New pattern (3.3.11)
|
|
# gf Revised constraint, see owl1:354. (3.7.3)
|
|
|
|
X.*o threaten to cut and mess up opponent's shape
|
|
xY.X
|
|
|
|
:8,C,value(65)
|
|
|
|
X.*b
|
|
xYaC
|
|
|
|
;!oplay_attack(*,a,*)
|
|
;&& (o_somewhere(b) || !oplay_attack(*,b,*))
|
|
;&& !attack(C)
|
|
|
|
|
|
Pattern A1018
|
|
# nn New pattern (3.3.11)
|
|
|
|
O.Y separate
|
|
.*.
|
|
X.o
|
|
|
|
:8,C,value(35)
|
|
|
|
|
|
Pattern A1019
|
|
# nn New pattern (3.3.11)
|
|
|
|
.o.O cut / prevent escape
|
|
X...
|
|
.*.Y
|
|
|
|
:8,C,value(65)
|
|
|
|
.fgO
|
|
Xbde
|
|
.*cA
|
|
|
|
;!owl_goal_dragon(A) && !oplay_attack_either(*,b,c,d,e,c,e)
|
|
;&& (o_somewhere(f) || !oplay_attack_either(*,d,b,f,g,b,g))
|
|
|
|
|
|
Pattern A1020
|
|
# nn New pattern (3.3.11)
|
|
# FIXME: constraint is ugly
|
|
|
|
ooooo try to cut off and kill the moyo reducing stone
|
|
....o
|
|
....o
|
|
.Y..o
|
|
*...o
|
|
|
|
:/,-,value(45)
|
|
|
|
abcde
|
|
....f
|
|
....g
|
|
.Y..h
|
|
*...i
|
|
|
|
;(owl_escape_value(a)>0) + (owl_escape_value(b)>0)
|
|
;+(owl_escape_value(c)>0) + (owl_escape_value(d)>0)
|
|
;+(owl_escape_value(e)>0) + (owl_escape_value(f)>0)
|
|
;+(owl_escape_value(g)>0) + (owl_escape_value(h)>0)
|
|
;+(owl_escape_value(i)>0) < 2
|
|
|
|
|
|
Pattern A1021
|
|
# gf New pattern. (3.3.17)
|
|
|
|
??O cut off from friendly stone
|
|
Y*X
|
|
?O.
|
|
|
|
:8,-,value(45)
|
|
|
|
??O
|
|
B*A
|
|
?O.
|
|
|
|
;!owl_goal_dragon(A) && !oplay_connect(*,A,B)
|
|
|
|
|
|
Pattern A1022
|
|
# evand New pattern. (3.3.18)
|
|
|
|
oY.O
|
|
..*.
|
|
.X.X
|
|
...o
|
|
|
|
:8,C,value(55)
|
|
|
|
oA.O
|
|
..*.
|
|
.X.B
|
|
...o
|
|
|
|
;!oplay_connect(*,A,B)
|
|
|
|
|
|
Pattern A1023
|
|
# evand New pattern. (3.3.18)
|
|
|
|
?Xx?
|
|
O*.?
|
|
?..?
|
|
xYxx
|
|
|
|
:8,C,value(45)
|
|
|
|
?Bx?
|
|
O*a?
|
|
?..?
|
|
xCxx
|
|
|
|
;oplay_disconnect(*,a,B,C)
|
|
|
|
|
|
Pattern A1024a
|
|
# gf New pattern. (3.5.4)
|
|
# gf Revised pattern. (3.7.3)
|
|
# Converse to D1386a
|
|
|
|
YO.? connect along edge to strong dragon
|
|
x*.X
|
|
----
|
|
|
|
:8,CEb,value(90)
|
|
|
|
AO.?
|
|
x*.B
|
|
----
|
|
|
|
;owl_strong_dragon(B) && !xplay_disconnect(*,A,B)
|
|
|
|
|
|
Pattern A1024b
|
|
# gf New pattern. (3.5.4)
|
|
# Converse to D1386a
|
|
|
|
XO.o connect along edge to strong dragon
|
|
x*.Y
|
|
----
|
|
|
|
:8,Eb,value(90)
|
|
|
|
BO.o
|
|
x*.A
|
|
----
|
|
|
|
;owl_strong_dragon(B) && !xplay_disconnect(*,A,B)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Reinforce the perimeter #
|
|
# #
|
|
#########################################################
|
|
# #
|
|
# Patterns where the perimeter is already in place #
|
|
# but has a defect which needs repair. #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern A1100
|
|
#tm New Pattern (3.1.22) (see pattern D1100)
|
|
# gf Fixed diagram inconsistency. (3.1.23)
|
|
|
|
XO defend connect out
|
|
.*
|
|
OY
|
|
|
|
:8,-,value(90)
|
|
|
|
cb
|
|
a*
|
|
OY
|
|
|
|
;owl_escape_value(c)>0 && xplay_attack_either(*,a,a,b)
|
|
|
|
|
|
Pattern A1101
|
|
|
|
...
|
|
O*O
|
|
?Y?
|
|
|
|
:|,-,value(93)
|
|
|
|
.a.
|
|
b*c
|
|
?Y?
|
|
|
|
; xplay_break_through(*,a,b,a,c) == WIN
|
|
|
|
|
|
Pattern A1101b
|
|
|
|
...
|
|
O*O
|
|
?Y?
|
|
|
|
:|,-,value(94)
|
|
|
|
.a.
|
|
b*c
|
|
?Y?
|
|
|
|
; lib(b)<=4 && lib(c)<=4 && xplay_break_through(*,a,b,a,c) == WIN
|
|
|
|
|
|
Pattern A1101c
|
|
# New Pattern (before 3.1.20 - when?)
|
|
# see strategy3:150 for wasted move.
|
|
# see also lazarus:5
|
|
# tm Modified (3.1.22)
|
|
|
|
O*O connect against threat
|
|
?Y?
|
|
|
|
:8,-,value(81)
|
|
|
|
A*B
|
|
?Y?
|
|
|
|
; vital_chain(A) && vital_chain(B)
|
|
; && !xplay_defend_both(*,A,B)
|
|
|
|
|
|
Pattern A1102
|
|
|
|
..X
|
|
O*O
|
|
?Y?
|
|
|
|
:8,C,value(95)
|
|
|
|
baX
|
|
c*O
|
|
?Y?
|
|
|
|
;!xplay_defend_both(*,a,b,a,c)
|
|
|
|
|
|
Pattern A1104
|
|
|
|
OYO connect to prevent double atari
|
|
XO*
|
|
...
|
|
|
|
:8,C,value(85)
|
|
|
|
OYB
|
|
AO*
|
|
.a.
|
|
|
|
; xplay_attack(*,a,B) && !oplay_defend(*,A)
|
|
|
|
|
|
Pattern A1105
|
|
# gf Added n classification. (3.3.20)
|
|
|
|
O..
|
|
XO* connect against double threat
|
|
xYO
|
|
x..
|
|
---
|
|
|
|
:8,Cn,value(85)
|
|
|
|
Oa.
|
|
XO*
|
|
xAb
|
|
x..
|
|
---
|
|
|
|
;!attack(A) && xplay_attack(*,a,b)
|
|
|
|
|
|
Pattern A1106
|
|
|
|
OO.?
|
|
XOX* capture cutting stone to defend
|
|
xYO.
|
|
xx..
|
|
----
|
|
|
|
:8,C,value(70)
|
|
|
|
OO.?
|
|
XOB*
|
|
xAa.
|
|
xx..
|
|
----
|
|
|
|
;!attack(A) && attack(a) && !oplay_defend(*,B)
|
|
|
|
|
|
# tm Moved to owl_vital_apats (3.1.17)
|
|
# tm copied back from owl_vital_apats (3.1.22)
|
|
# suspect that vital_chain works differently called from there??? -tm
|
|
# see 13x13:52 --decide-dragon K10
|
|
Pattern A1107
|
|
# spl never on edge (3.3.23)
|
|
|
|
??? defend the surrounding chain
|
|
O*?
|
|
YO?
|
|
|
|
:/,-,value(95)
|
|
|
|
???
|
|
a*?
|
|
Yb?
|
|
|
|
; vital_chain(a) && vital_chain(b)
|
|
; && !xplay_defend_both(*,a,b)
|
|
|
|
|
|
Pattern A1107b
|
|
# gf New pattern. (3.1.9)
|
|
# tm Modified (3.1.17) - took away from edge
|
|
|
|
?? defend the surrounding chain
|
|
*.
|
|
O.
|
|
YO
|
|
|
|
:8,-,value(96)
|
|
|
|
??
|
|
*.
|
|
ba
|
|
Yc
|
|
|
|
;lib(c)>2 && vital_chain(b) && vital_chain(c)
|
|
;&& oplay_attack(*,a,a) && !xplay_defend_both(a,b,c)
|
|
|
|
# nn Removal candidate (3.3.13)
|
|
# Success rate in regressions : 0.9 % (23/2562)
|
|
|
|
Pattern A1107c
|
|
# tm New pattern. (3.1.17)
|
|
# tm Modified (3.1.20) - reduced value (see nngs:320)
|
|
|
|
.* defend the surrounding chain
|
|
O.
|
|
YO
|
|
|
|
:8,-,value(60)
|
|
|
|
.*
|
|
ba
|
|
Yc
|
|
|
|
;lib(c)>2 && vital_chain(b) && vital_chain(c)
|
|
;&& oplay_attack(*,a,a) && !xplay_defend_both(a,b,c)
|
|
|
|
|
|
Pattern A1108
|
|
|
|
?XO don't let defender capture to escape
|
|
*OY
|
|
|
|
:8,-,value(80)
|
|
|
|
?BO
|
|
*aY
|
|
|
|
;owl_escape_value(B) > 0 && does_defend(*,a)
|
|
|
|
|
|
Pattern A1109
|
|
|
|
?Xx?? connect underneath
|
|
?OYoo
|
|
O.*..
|
|
.....
|
|
-----
|
|
|
|
:8,C,value(65)
|
|
|
|
?Xx??
|
|
?cYab
|
|
O.*..
|
|
.....
|
|
-----
|
|
|
|
; o_somewhere(a,b) && attack(c)
|
|
|
|
|
|
Pattern A1110
|
|
|
|
o..YO? connect underneath
|
|
O.*Ooo
|
|
------
|
|
|
|
:8,-,value(50)
|
|
|
|
|
|
Pattern A1111
|
|
|
|
?.x..| defend bottom while emphasizing top
|
|
.OXX.|
|
|
.*OY.|
|
|
?..O.|
|
|
??...|
|
|
|
|
:8,-,value(65)
|
|
|
|
|
|
Pattern A1112
|
|
# Strict speaking we should not need patterns
|
|
# like this
|
|
|
|
X.*O save lunch
|
|
YO..
|
|
....
|
|
----
|
|
|
|
:8,-,value(50)
|
|
|
|
X.*O
|
|
Ya..
|
|
....
|
|
----
|
|
|
|
; attack(a)
|
|
|
|
|
|
Pattern A1113
|
|
# gf New pattern. (3.1.9)
|
|
|
|
xYO.? reinforce
|
|
?*..?
|
|
O.O.?
|
|
...x?
|
|
?????
|
|
|
|
:8,-,value(70)
|
|
|
|
xYO.?
|
|
?*..b
|
|
O.O.?
|
|
...x?
|
|
?a???
|
|
|
|
;owl_escape_value(a)>0 || owl_escape_value(b)>0
|
|
|
|
|
|
Pattern A1114
|
|
# gf New pattern. (3.1.9)
|
|
|
|
xxO.? reinforce
|
|
?Y*.?
|
|
O.O.?
|
|
...x?
|
|
?????
|
|
|
|
:8,-,value(81)
|
|
|
|
xxO.?
|
|
?Y*.b
|
|
O.O.?
|
|
...x?
|
|
?a???
|
|
|
|
;owl_escape_value(a)>0 || owl_escape_value(b)>0
|
|
|
|
|
|
Pattern A1115
|
|
# gf New pattern. (3.1.9)
|
|
|
|
xxO. reinforce
|
|
?YXO
|
|
O*O.
|
|
...x
|
|
|
|
:8,-,value(81)
|
|
|
|
|
|
Pattern A1116
|
|
# gf New pattern. (3.1.9)
|
|
|
|
?X? Reinforce
|
|
OYO
|
|
*OX
|
|
xxx
|
|
|
|
:8,C,value(90)
|
|
|
|
?X?
|
|
aDO
|
|
*bX
|
|
xCx
|
|
|
|
;owl_escape_value(C)>0 && owl_goal_dragon(D) && !xplay_defend_both(*,a,b)
|
|
|
|
|
|
Pattern A1117
|
|
# gf New pattern. (3.1.11)
|
|
|
|
X*O don't let defender cut and capture to escape
|
|
?OY
|
|
|
|
:8,Cn,value(80)
|
|
|
|
X*b
|
|
?aY
|
|
|
|
;!xplay_defend_both(*,a,b)
|
|
|
|
|
|
Pattern A1117a
|
|
# Same as A1117; different anchor.
|
|
|
|
Y*O don't let defender cut and capture to escape
|
|
?OX
|
|
|
|
:8,Cn,value(80)
|
|
|
|
Y*b
|
|
?aX
|
|
|
|
;!xplay_defend_both(*,a,b)
|
|
|
|
|
|
Pattern A1118
|
|
# tm New pattern (3.1.17)
|
|
|
|
YO? defend
|
|
OX*
|
|
...
|
|
---
|
|
|
|
:8,-,value(75)
|
|
|
|
YO?
|
|
AX*
|
|
...
|
|
---
|
|
|
|
; attack(A) && !oplay_attack(*,A)
|
|
|
|
|
|
Pattern A1119
|
|
# tm New Pattern (3.1.17)
|
|
# analog to defense pattern D1348
|
|
# tm Modified (3.1.18) (see trevorc:100)
|
|
# tm Modified (3.1.22) (see trevorc:810)
|
|
|
|
Y*? cut off escape route.
|
|
o.X
|
|
|
|
:8,Cn,value(36)
|
|
|
|
a*E
|
|
Dcb
|
|
|
|
;(owl_escape_value(a)>0 || owl_escape_value(b)>0)
|
|
;&& ((o_somewhere(E) || x_somewhere(E)) || owl_escape_value(a) < 0)
|
|
;&& !oplay_attack_either(*,c,D,*,D)
|
|
|
|
|
|
Pattern A1121
|
|
# tm New Pattern (3.1.20)
|
|
# see also Pattern D1361 (both this and that are too generic)
|
|
# see trevorc:550, trevor:1050
|
|
# gf Added constraint. (3.1.32)
|
|
|
|
O.O block to protect weakness
|
|
Y*.
|
|
?O?
|
|
|
|
:8,C,value(35)
|
|
|
|
a.b
|
|
Y*.
|
|
?c?
|
|
|
|
;!same_string(a,b) && (lib(a) <= 4 || lib(b) <= 4 || lib(c) <= 4)
|
|
|
|
|
|
Pattern A1122
|
|
# tm New Pattern (3.1.22)
|
|
# see -l games/trevor/auto/d02.sgf -L 142 --decide-dragon P2
|
|
# gf Revised constraint. (3.7.11)
|
|
|
|
Y.
|
|
*.
|
|
.X
|
|
|
|
:8,-,value(75)
|
|
|
|
a.
|
|
*.
|
|
.b
|
|
|
|
;!owl_goal_dragon(b) && !oplay_connect(*,a,b)
|
|
|
|
|
|
Pattern A1122a
|
|
# same as A1122 - different anchor.
|
|
# gf Revised constraint. (3.7.11)
|
|
|
|
X.
|
|
*.
|
|
.Y
|
|
|
|
:8,-,value(75)
|
|
|
|
a.
|
|
*.
|
|
.b
|
|
|
|
;!owl_goal_dragon(a) && !oplay_connect(*,a,b)
|
|
|
|
|
|
Pattern A1122b
|
|
# gf New Pattern. (3.7.11)
|
|
|
|
Y.
|
|
*.
|
|
.X
|
|
|
|
:8,C,value(76)
|
|
|
|
a.
|
|
*.
|
|
.b
|
|
|
|
;lib(a) == 2 && !oplay_connect(*,a,b)
|
|
|
|
|
|
Pattern A1123
|
|
# tm New Pattern (3.1.22) (see D1376)
|
|
# FIXME: duplicate of A1016
|
|
|
|
YxO?
|
|
o.*X
|
|
----
|
|
|
|
:8,-,value(75)
|
|
|
|
bdE?
|
|
oc*a
|
|
----
|
|
|
|
; (owl_escape_value(a) > 0 || owl_escape_value(b) > 0)
|
|
; && xplay_attack_either(*,c,d,c,E)
|
|
|
|
|
|
Pattern A1123a
|
|
# Same as A1123 - different anchor.
|
|
|
|
XxO?
|
|
o.*Y
|
|
----
|
|
|
|
:8,-,value(75)
|
|
|
|
bdE?
|
|
oc*a
|
|
----
|
|
|
|
; (owl_escape_value(a) > 0 || owl_escape_value(b) > 0)
|
|
; && xplay_attack_either(*,c,d,c,E)
|
|
|
|
|
|
Pattern A1124
|
|
# tm New Pattern (3.1.22) (see nngs:770 decide-dragon K4)
|
|
# see also D1140
|
|
# ab Revised constraint. (3.3.10)
|
|
|
|
?OY
|
|
?.*
|
|
???
|
|
|
|
:8,-,value(70)
|
|
|
|
?AY
|
|
bd*
|
|
?c?
|
|
|
|
;(owl_escape_value(c) > 0
|
|
; || owl_escape_value(b) > 0)
|
|
;&& oplay_defend_both(*,d,A,*)
|
|
|
|
|
|
Pattern A1124a
|
|
# tm New Pattern (3.1.22) (see nngs:770 decide-dragon K4)
|
|
# see also D1140
|
|
# gf Revised. Might still be too general. (3.5.4)
|
|
# spl revised (3.5.5)
|
|
|
|
?OY
|
|
x*.
|
|
xxx
|
|
|
|
:8,-,value(70)
|
|
|
|
?AY
|
|
b*e
|
|
cdx
|
|
|
|
;(owl_escape_value(d) > 0
|
|
; || owl_escape_value(b) > 0
|
|
; || owl_escape_value(c) > 0)
|
|
;&& !oplay_defend_both(e,*,A,e)
|
|
|
|
|
|
Pattern A1124b
|
|
# gf New pattern. (3.5.4) (see nngs:770 decide-dragon K4)
|
|
|
|
?OY
|
|
x.*
|
|
xx?
|
|
|
|
:8,C,value(70)
|
|
|
|
?OA
|
|
be*
|
|
cd?
|
|
|
|
;(owl_escape_value(d) > 0
|
|
; || owl_escape_value(b) > 0
|
|
; || owl_escape_value(c) > 0)
|
|
;&& xplay_connect(e,*,e,A)
|
|
;&& oplay_disconnect(*,e,e,A)
|
|
|
|
|
|
Pattern A1125
|
|
# tm New Pattern (3.1.22) (see D1118)
|
|
|
|
xxx? defend threaten of escape
|
|
O*O?
|
|
XOYo
|
|
?X.?
|
|
|
|
:8,C,value(76)
|
|
|
|
|
|
Pattern A1126
|
|
# tm New Pattern (3.1.23)
|
|
# gf Revised constraint. (3.5.3)
|
|
# See also D1378.
|
|
|
|
O*O prevent breakout & attack
|
|
?Y?
|
|
|
|
:|,-,value(55)
|
|
|
|
a*b
|
|
?Y?
|
|
|
|
; vital_chain(a) && vital_chain(b)
|
|
; && xplay_attack_either(*,a,b) && !xplay_connect(*,a,b)
|
|
|
|
|
|
Pattern A1127
|
|
# tm New Pattern (3.1.23) (see Pattern D1001)
|
|
# Note: there's no reason to cut the goal dragon up.
|
|
|
|
O*X prevent connection
|
|
?YO
|
|
|
|
:8,n,value(70)
|
|
|
|
O*b
|
|
?cA
|
|
|
|
; (attack(A) != WIN || (wormsize(A)<=2 && does_attack(*,A)))
|
|
; && (!owl_goal_dragon(b) || !owl_goal_dragon(c))
|
|
|
|
|
|
Pattern A1127a
|
|
# Same as A1127 - different anchor.
|
|
|
|
O*Y prevent connection
|
|
?XO
|
|
|
|
:8,n,value(70)
|
|
|
|
O*b
|
|
?cA
|
|
|
|
; (attack(A) != WIN || (wormsize(A)<=2 && does_attack(*,A)))
|
|
; && (!owl_goal_dragon(b) || !owl_goal_dragon(c))
|
|
|
|
|
|
Pattern A1128
|
|
# tm New Pattern (3.1.23)
|
|
# see also CB14
|
|
|
|
OY*X cut off from home
|
|
X.X.
|
|
|
|
:8,C,value(80)
|
|
|
|
Ob*a
|
|
XcXd
|
|
|
|
; owl_escape_value(a) > 0
|
|
; && oplay_attack(*,b)
|
|
; && !oplay_attack(*,c,d,d)
|
|
|
|
|
|
Pattern A1129
|
|
# tm New Pattern (3.1.23) (see D1123)
|
|
|
|
xO*x stop break through
|
|
XYO.
|
|
XO..
|
|
O..?
|
|
|
|
:8,C,value(86)
|
|
|
|
xB*x
|
|
XYOa
|
|
XO..
|
|
O..?
|
|
|
|
;xplay_attack(*,a,B)
|
|
|
|
|
|
Pattern A1130
|
|
# nn New pattern (3.3.11)
|
|
# FIXME: should be constrained
|
|
|
|
...o? to be considered in crosscut cases like this
|
|
...Ox
|
|
.*.OX
|
|
..XYO
|
|
...o?
|
|
|
|
:8,C,value(65)
|
|
|
|
|
|
Pattern A1131
|
|
# gf New pattern. (3.3.18)
|
|
|
|
XO.Y
|
|
?*.?
|
|
----
|
|
|
|
:8,-,value(90)
|
|
|
|
AO.B
|
|
?*.?
|
|
----
|
|
|
|
;owl_strong_dragon(A) && !xplay_disconnect(*,A,B)
|
|
|
|
|
|
Pattern A1132
|
|
# gf New pattern. (3.3.18)
|
|
|
|
|.O?? save one lunch and make one a false eye
|
|
|OYX?
|
|
|*OXX
|
|
|..OX
|
|
+----
|
|
|
|
:8,-,value(70)
|
|
|
|
|
|
Pattern A1133a
|
|
# evand New pattern. (3.3.20)
|
|
|
|
?O.Y
|
|
?..x
|
|
?.*.
|
|
?..O
|
|
????
|
|
|
|
:8,-,value(65)
|
|
|
|
?O.Y
|
|
?..x
|
|
a.*.
|
|
b..O
|
|
cd??
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) +
|
|
;owl_escape_value(c) + owl_escape_value(d) > 0
|
|
|
|
|
|
Pattern A1133b
|
|
# evand New pattern. (3.3.20)
|
|
|
|
?O.Y
|
|
?.*.
|
|
?...
|
|
?..O
|
|
????
|
|
|
|
:8,-,value(45)
|
|
|
|
?O.Y
|
|
?.*.
|
|
a...
|
|
b..O
|
|
cd??
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) +
|
|
;owl_escape_value(c) + owl_escape_value(d) > 0
|
|
|
|
|
|
Pattern A1134
|
|
# pp New pattern (3.5.3). See trevorb:120.
|
|
# FIXME: is it better to do this algorithmically with owl boundaries?
|
|
# gf Added explicit anchoring. (3.5.3)
|
|
|
|
XOY prevent escaping by capturing
|
|
.*O
|
|
---
|
|
|
|
:8,C,value(75)
|
|
|
|
BOY
|
|
.*a
|
|
---
|
|
|
|
; lib(a) == 1 && owl_escape_value(B) > 0
|
|
|
|
|
|
Pattern A1134b
|
|
# gf New pattern. (3.5.3).
|
|
|
|
YOX prevent escaping by capturing
|
|
.*O
|
|
---
|
|
|
|
:8,C,value(75)
|
|
|
|
YOB
|
|
.*a
|
|
---
|
|
|
|
; lib(a) == 1 && owl_escape_value(B) > 0
|
|
|
|
|
|
Pattern A1134c
|
|
# gf New pattern. (3.5.3).
|
|
|
|
XOY prevent escaping by capturing
|
|
.*O
|
|
---
|
|
|
|
:8,C,value(40)
|
|
|
|
XOY
|
|
.*a
|
|
---
|
|
|
|
; lib(a) == 1
|
|
|
|
|
|
Pattern A1134d
|
|
# gf New pattern. (3.5.3).
|
|
# See 13x13b:23
|
|
|
|
YOX prevent escaping by capturing
|
|
.*O
|
|
---
|
|
|
|
:8,C,value(40)
|
|
|
|
YOX
|
|
.*a
|
|
---
|
|
|
|
; lib(a) == 1
|
|
|
|
|
|
Pattern A1135
|
|
# gf New pattern. (3.5.3)
|
|
|
|
..OY
|
|
X.*.
|
|
----
|
|
|
|
:8,-,value(75)
|
|
|
|
..OB
|
|
A.*.
|
|
----
|
|
|
|
;owl_escape_value(A)>0 && !xplay_disconnect(*,A,B) && !oplay_connect(*,A,B)
|
|
|
|
|
|
Pattern A1136
|
|
# gf New pattern. (3.5.3)
|
|
|
|
?Y?
|
|
O*O
|
|
..?
|
|
?X?
|
|
|
|
:8,-,value(75)
|
|
|
|
?B?
|
|
O*O
|
|
..?
|
|
?A?
|
|
|
|
;owl_escape_value(A)>0 && !xplay_disconnect(*,A,B) && !oplay_connect(*,A,B)
|
|
|
|
|
|
Pattern A1137
|
|
# gf New pattern. (3.5.3)
|
|
# Converse to D1125.
|
|
|
|
xxx?
|
|
...x
|
|
.*O.
|
|
?YXO
|
|
|
|
:8,-,value(79)
|
|
|
|
abc?
|
|
...x
|
|
.*O.
|
|
?YXO
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
|
|
|
|
|
|
Pattern A1138
|
|
# gf New pattern. (3.5.5)
|
|
|
|
xx.??
|
|
xx.O?
|
|
..*OY
|
|
...X.
|
|
-----
|
|
|
|
:8,-,value(30)
|
|
|
|
|
|
Pattern A1139
|
|
# gf New pattern. (3.5.7)
|
|
|
|
.OYx
|
|
*XOX
|
|
o..O
|
|
??O?
|
|
|
|
:8,-,value(60)
|
|
|
|
.dYx
|
|
*XOX
|
|
oabc
|
|
??O?
|
|
|
|
;oplay_attack(b,d) && oplay_attack(*,a,a)
|
|
;&& oplay_attack(*,b,?,a,a) && !oplay_attack(*,b,c)
|
|
|
|
|
|
Pattern A1140a
|
|
# gf New pattern. (3.7.4)
|
|
# See gunnar:73.
|
|
|
|
?XOY
|
|
XO*o
|
|
----
|
|
|
|
:8,-,value(40)
|
|
|
|
?AOB
|
|
XO*o
|
|
----
|
|
|
|
;owl_escape_value(A) > 0 && xplay_disconnect(*,A,B) != WIN
|
|
|
|
|
|
Pattern A1140b
|
|
# gf New pattern. (3.7.4)
|
|
# See gunnar:76.
|
|
|
|
?YOX
|
|
XO*o
|
|
----
|
|
|
|
:8,-,value(40)
|
|
|
|
?AOB
|
|
XO*o
|
|
----
|
|
|
|
;owl_escape_value(B) > 0 && xplay_disconnect(*,A,B) != WIN
|
|
|
|
|
|
Pattern A1141
|
|
# gf New Pattern. (3.7.11)
|
|
|
|
OO?
|
|
Y.O
|
|
*.o
|
|
.X?
|
|
|
|
:8,C,value(76)
|
|
|
|
OO?
|
|
a.O
|
|
*.o
|
|
.b?
|
|
|
|
;!oplay_connect(*,a,b)
|
|
|
|
|
|
Pattern A1141b
|
|
# gf New Pattern. (3.7.11)
|
|
|
|
OO?
|
|
X.O
|
|
*.o
|
|
.Y?
|
|
|
|
:8,C,value(76)
|
|
|
|
OO?
|
|
a.O
|
|
*.o
|
|
.b?
|
|
|
|
;!oplay_connect(*,a,b)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Kill or threaten a worm of the dragon #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern A1201
|
|
|
|
?O? capture one stone to rescue
|
|
*YO
|
|
|
|
:8,-,value(75)
|
|
|
|
?a?
|
|
*BO
|
|
|
|
; (lib(a)==1) && (lib(B)==1)
|
|
|
|
|
|
Pattern A1203
|
|
|
|
?*? capture 3 stones
|
|
OYO
|
|
|
|
:8,s,value(80)
|
|
|
|
?*?
|
|
OAO
|
|
|
|
;wormsize(A)>3 && lib(A)==1
|
|
|
|
|
|
Pattern A1204
|
|
|
|
?*? capture 1 or two stones
|
|
OYO
|
|
|
|
:8,s,value(30)
|
|
|
|
?*?
|
|
OAO
|
|
|
|
;wormsize(A)<=3 && lib(A)==1 && olib(*) > 1
|
|
|
|
|
|
Pattern A1205
|
|
|
|
*Y kill one string!
|
|
XO
|
|
|
|
:8,s,value(75)
|
|
|
|
*Y
|
|
AO
|
|
|
|
;wormsize(A)>3 && does_attack(*,A)
|
|
|
|
|
|
Pattern A1206
|
|
|
|
*Y kill one string, possibly with ko!
|
|
XO
|
|
|
|
:8,Cs,value(30)
|
|
|
|
*Y
|
|
AO
|
|
|
|
;wormsize(A)<=3 && does_attack(*,A)
|
|
;&& (olib(*) > 1 || ko(*))
|
|
|
|
|
|
Pattern A1207
|
|
|
|
..X attack one stone
|
|
.*Y
|
|
.XO
|
|
|
|
:8,C,value(45)
|
|
|
|
..X
|
|
.*Y
|
|
.AO
|
|
|
|
; does_attack(*,A)
|
|
|
|
|
|
Pattern A1208
|
|
|
|
?Ooo cut off one stone
|
|
Y..o
|
|
.*XO
|
|
....
|
|
----
|
|
|
|
:8,C,value(40)
|
|
|
|
|
|
Pattern A1209
|
|
|
|
OYX*
|
|
.O..
|
|
----
|
|
|
|
:8,-,value(65)
|
|
|
|
OYX*
|
|
.O..
|
|
----
|
|
|
|
;owl_proper_eye(*)
|
|
|
|
|
|
Pattern A1210
|
|
# gf New pattern. (3.7.1)
|
|
# See ld_owl:318.
|
|
|
|
?O? not always found as lunch defense
|
|
Y*X
|
|
|
|
:8,-,value(65)
|
|
|
|
?a?
|
|
B*C
|
|
|
|
;attack(a) && !oplay_attack(*,a) && !oplay_defend_both(*,B,C)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Specific corner attacks #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern A1301
|
|
|
|
|..o???
|
|
|.Oooo? kill corner
|
|
|.XOO.o
|
|
|.XY..O
|
|
|...*..
|
|
|......
|
|
+------
|
|
|
|
:8,-,value(90)
|
|
|
|
|..a???
|
|
|.Oboo?
|
|
|.XOO.o
|
|
|.XY..O
|
|
|...*..
|
|
|......
|
|
+------
|
|
|
|
; o_somewhere(a,b)
|
|
|
|
|
|
Pattern A1302
|
|
|
|
|..X? corner clamp, often resourceful
|
|
|.*YO
|
|
|....
|
|
+----
|
|
|
|
:8,s,value(30)
|
|
|
|
|
|
Pattern A1303
|
|
#tm - modified (3.1.15) (see ld_owl:152)
|
|
|
|
|..X? obligatory corner attack
|
|
|X.Yo
|
|
|.*.?
|
|
+----
|
|
|
|
:8,s,value(90)
|
|
|
|
|
|
Pattern A1303b
|
|
|
|
|..X? followup
|
|
|X*YO
|
|
|.OX?
|
|
+----
|
|
|
|
:8,s,value(50)
|
|
|
|
|
|
Pattern A1303c
|
|
# gf New pattern. (3.5.3)
|
|
|
|
|..X? variation
|
|
|XOYo
|
|
|.*.?
|
|
+----
|
|
|
|
:8,s,value(85)
|
|
|
|
|..X?
|
|
|XaYo
|
|
|.*.?
|
|
+----
|
|
|
|
;defend(a) != WIN
|
|
|
|
|
|
Pattern A1304
|
|
# gf Revised constraint. (3.1.18)
|
|
|
|
|.YO throw in threatening to destroy two corner eye vertices
|
|
|.*X
|
|
+---
|
|
|
|
:8,s,value(60)
|
|
|
|
|bYO
|
|
|.*A
|
|
+---
|
|
|
|
;lib(A)==2 && !obvious_false_xeye(b)
|
|
|
|
|
|
Pattern A1305
|
|
|
|
|XXY? try to kill corner formation
|
|
|.*.X
|
|
|...X
|
|
+----
|
|
|
|
:8,s,value(90)
|
|
|
|
|
|
Pattern A1305b
|
|
|
|
|XY.? try to kill corner formation
|
|
|.*.X
|
|
|...X
|
|
+----
|
|
|
|
:8,s,value(35)
|
|
|
|
|
|
Pattern A1306
|
|
|
|
|XXY? try to make ko in corner
|
|
|...X
|
|
|.*.X
|
|
+----
|
|
|
|
:8,s,value(85)
|
|
|
|
|
|
Pattern A1307
|
|
|
|
|XxY? kill one eye
|
|
|.X.X
|
|
|.O*X
|
|
+----
|
|
|
|
:8,s,value(85)
|
|
|
|
|
|
Pattern A1308
|
|
|
|
|Xx?? attack bent four in the corner
|
|
|.YXx
|
|
|.*.X
|
|
+----
|
|
|
|
:8,s,value(90)
|
|
|
|
|
|
Pattern A1309
|
|
|
|
|.YxX try to damage corner eye space
|
|
|.*Ox
|
|
+----
|
|
|
|
:8,s,value(90)
|
|
|
|
|bYxX
|
|
|.*ax
|
|
+----
|
|
|
|
;lib(a)>1 && !obvious_false_xeye(b)
|
|
|
|
|
|
Pattern A1310
|
|
|
|
|*X.Y try to make ko or bent four in the corner
|
|
|.OOx
|
|
+----
|
|
|
|
:8,s,value(30)
|
|
|
|
|
|
Pattern A1310b
|
|
|
|
|XxX?
|
|
|.Y.X better to kill without ko if we can
|
|
|*OOX
|
|
+----
|
|
|
|
:8,s,value(31)
|
|
|
|
|
|
Pattern A1311
|
|
|
|
|.XY?
|
|
|XO.X set up corner ko
|
|
|..*.
|
|
+----
|
|
|
|
:8,s,value(80)
|
|
|
|
|
|
Pattern A1311b
|
|
# gf New pattern. (3.3.13)
|
|
|
|
|.XY??
|
|
|XO.XO kill without ko
|
|
|.*..?
|
|
+-----
|
|
|
|
:8,s,value(81)
|
|
|
|
|
|
Pattern A1312
|
|
|
|
|OX??
|
|
|.YX? try to kill corner formation
|
|
|.*.X
|
|
|...x
|
|
+----
|
|
|
|
:8,s,value(35)
|
|
|
|
|
|
Pattern A1313
|
|
|
|
|.??Ooo attack 3-3 invasion
|
|
|.xY.oo
|
|
|...*..
|
|
|......
|
|
+------
|
|
|
|
:8,-,value(50)
|
|
|
|
|
|
Pattern A1314
|
|
# gf Added constraint. (3.5.5)
|
|
|
|
|x.X? sometimes correct attack in corner
|
|
|..YO
|
|
|.*.o
|
|
+----
|
|
|
|
:8,s,value(45)
|
|
|
|
|x.X?
|
|
|..Ya
|
|
|.*.o
|
|
+----
|
|
|
|
;!attack(a)
|
|
|
|
|
|
Pattern A1315
|
|
|
|
|.XO? attack corner eye space
|
|
|..Y?
|
|
|.X*O
|
|
|....
|
|
+----
|
|
|
|
:8,-,value(55)
|
|
|
|
|
|
Pattern A1316
|
|
|
|
|.XY? try to make ko in corner
|
|
|.*.X
|
|
|..OX
|
|
+----
|
|
|
|
:8,s,value(35)
|
|
|
|
|
|
Pattern A1317
|
|
|
|
|..X? try to make ko in corner
|
|
|.XYO
|
|
|.*.O
|
|
+----
|
|
|
|
:8,s,value(55)
|
|
|
|
|..A?
|
|
|.AAO
|
|
|.*.O
|
|
+----
|
|
|
|
;lib(A) == 4 && attack(A) != WIN
|
|
|
|
|
|
Pattern A1318
|
|
|
|
|..X? create ko
|
|
|*XYO
|
|
|.OXO
|
|
+----
|
|
|
|
:8,s,value(55)
|
|
|
|
|..A?
|
|
|*AAO
|
|
|.OXO
|
|
+----
|
|
|
|
;lib(A) == 2 && attack(A) != WIN
|
|
|
|
|
|
Pattern A1319
|
|
|
|
|.XO? critical point, might give ko
|
|
|*.Y?
|
|
|..Xx
|
|
|....
|
|
+----
|
|
|
|
:8,s,value(61)
|
|
|
|
|.AO?
|
|
|*.Y?
|
|
|..Xx
|
|
|....
|
|
+----
|
|
|
|
;!attack(A)
|
|
|
|
|
|
Pattern A1319b
|
|
|
|
|.XO critical point, might kill
|
|
|O.Y
|
|
|*.X
|
|
|...
|
|
+---
|
|
|
|
:8,s,value(30)
|
|
|
|
|
|
Pattern A1319c
|
|
# gf New pattern. (3.1.11)
|
|
|
|
|.XO? critical point, might give ko
|
|
|O.Y?
|
|
|X*Xx
|
|
|....
|
|
+----
|
|
|
|
:8,s,value(61)
|
|
|
|
|.AO?
|
|
|O.Y?
|
|
|X*Xx
|
|
|....
|
|
+----
|
|
|
|
;!attack(A)
|
|
|
|
|
|
Pattern A1320
|
|
|
|
|X?? try to make nakade instead of playing ko
|
|
|OYX
|
|
|*O.
|
|
+---
|
|
|
|
:8,s,value(80)
|
|
|
|
|
|
Pattern A1321
|
|
|
|
|X?? prevent throwin for ko
|
|
|.YX
|
|
|*O.
|
|
+---
|
|
|
|
:8,s,value(45)
|
|
|
|
|
|
Pattern A1322
|
|
|
|
|X.X sometimes correct attack point
|
|
|..Y
|
|
|.*.
|
|
+---
|
|
|
|
:8,s,value(40)
|
|
|
|
|
|
Pattern A1323
|
|
|
|
|XXO eye stealing move might kill
|
|
|..Y
|
|
|*.X
|
|
|...
|
|
+---
|
|
|
|
:8,s,value(50)
|
|
|
|
|
|
Pattern A1324
|
|
|
|
|oo???
|
|
|..O.. even if another attack works, try this first
|
|
|...O.
|
|
|..Y*.
|
|
|.....
|
|
|.....
|
|
+-----
|
|
|
|
:8,-,value(90)
|
|
|
|
|
|
Pattern A1325
|
|
# This pattern could be generalized
|
|
|
|
OOO.| kill the eye
|
|
.X*.|
|
|
X.Y.|
|
|
?X..|
|
|
----+
|
|
|
|
:8,-,value(50)
|
|
|
|
|
|
Pattern A1326
|
|
|
|
+----- block to kill
|
|
|.....
|
|
|...X*
|
|
|..Y.O
|
|
|..OO.
|
|
|oo???
|
|
|
|
:8,-,value(85)
|
|
|
|
|
|
Pattern A1327
|
|
|
|
+----- try to kill without ko
|
|
|.....
|
|
|.*.XO
|
|
|..Y.O
|
|
|.XOO.
|
|
|oo???
|
|
|oo???
|
|
|
|
:8,Cs,value(85)
|
|
|
|
|
|
Pattern A1328
|
|
|
|
|xX?? almost certain life if defender plays here
|
|
|xoY?
|
|
|.*oX
|
|
|..xx
|
|
+----
|
|
|
|
:8,s,value(45)
|
|
|
|
|
|
Pattern A1329
|
|
|
|
|X?? try to make nakade
|
|
|OY?
|
|
|*Ox
|
|
|Oox
|
|
+---
|
|
|
|
:8,s,value(45)
|
|
|
|
|
|
Pattern A1330
|
|
|
|
|XX? take ko to maybe kill
|
|
|*YX
|
|
|XOX
|
|
|OoO
|
|
+---
|
|
|
|
:8,s,value(75)
|
|
|
|
|AA?
|
|
|*AA
|
|
|XaA
|
|
|OoO
|
|
+---
|
|
|
|
;lib(A)<=3 && defend(a) != WIN
|
|
|
|
|
|
Pattern A1331
|
|
|
|
|*Y? capture to deny X trivial life
|
|
|XOX
|
|
|O.O
|
|
+---
|
|
|
|
:8,s,value(55)
|
|
|
|
|*Y?
|
|
|XOX
|
|
|OaO
|
|
+---
|
|
|
|
;oplay_attack(a,a)
|
|
|
|
|
|
Pattern A1332
|
|
|
|
|xYx? make nakade or escape
|
|
|O.*X
|
|
|.X.x
|
|
+----
|
|
|
|
:8,s,value(55)
|
|
|
|
|xYx?
|
|
|Oa*X
|
|
|.X.x
|
|
+----
|
|
|
|
;oplay_defend(*,a,*)
|
|
|
|
|
|
Pattern A1333
|
|
|
|
|XXY? try to get ko
|
|
|.*.X
|
|
|XOOX
|
|
|...X
|
|
+----
|
|
|
|
:8,s,value(55)
|
|
|
|
|XXYa
|
|
|.*.B
|
|
|XOOB
|
|
|...B
|
|
+----
|
|
|
|
;!x_somewhere(a) || (lib(B) <= 6)
|
|
|
|
|
|
Pattern A1334
|
|
|
|
|XXY? try to get ko
|
|
|XO.X
|
|
|XOOX
|
|
|..*X
|
|
+----
|
|
|
|
:8,s,value(55)
|
|
|
|
|
|
Pattern A1335
|
|
|
|
|..X? vital point
|
|
|*.YO
|
|
|.XOO
|
|
+----
|
|
|
|
:8,s,value(41)
|
|
|
|
|..X?
|
|
|*aYb
|
|
|.Xbb
|
|
+----
|
|
|
|
;oplay_attack(a,a) != 0 && !oplay_attack(a,b)
|
|
|
|
|
|
Pattern A1335b
|
|
# gf New pattern. (3.1.1)
|
|
|
|
|..X? vital point
|
|
|*OYO
|
|
|.X.O
|
|
+----
|
|
|
|
:8,s,value(41)
|
|
|
|
|..X?
|
|
|*cYO
|
|
|.XaO
|
|
+----
|
|
|
|
;oplay_attack(a,c) != 0 || oplay_attack(a,a)
|
|
|
|
|
|
Pattern A1336
|
|
|
|
|XXYO very special pattern
|
|
|...X
|
|
|*XO.
|
|
+----
|
|
|
|
:8,s,value(35)
|
|
|
|
|XXYO
|
|
|acbX
|
|
|*Xd.
|
|
+----
|
|
|
|
;!oplay_attack(*,a,b,b) && oplay_defend(*,c,d)
|
|
|
|
|
|
Pattern A1337
|
|
|
|
|XXx? kill without ko
|
|
|.OYx
|
|
|XOOX
|
|
|.*oX
|
|
+----
|
|
|
|
:8,s,value(35)
|
|
|
|
|
|
Pattern A1338
|
|
|
|
|OOo
|
|
|OXO kill without ko
|
|
|X.X
|
|
|.Yx
|
|
|*OX
|
|
+---
|
|
|
|
:8,s,value(35)
|
|
|
|
|
|
Pattern A1339
|
|
|
|
|xXx strange things happen at the 1-2 point
|
|
|X.Y
|
|
|.*x
|
|
+---
|
|
|
|
:8,s,value(75)
|
|
|
|
|
|
Pattern A1340
|
|
# gf New pattern. (3.1.13)
|
|
|
|
|X.X? destroy eyespace
|
|
|.OYx
|
|
|.*.X
|
|
+----
|
|
|
|
:8,s,value(40)
|
|
|
|
|
|
Pattern A1341
|
|
# tm new pattern 3.1.13
|
|
# Useful for manyfaces:8
|
|
|
|
?X?| vital corner point
|
|
X.X|
|
|
Y..|
|
|
X.*|
|
|
...|
|
|
---+
|
|
|
|
:8,s,value(40)
|
|
|
|
|
|
Pattern A1342
|
|
# tm new pattern (3.1.14)
|
|
|
|
|.XO
|
|
|..X
|
|
|*.X
|
|
|.YX
|
|
|.O?
|
|
|
|
:8,Cs,value(50)
|
|
|
|
|
|
Pattern A1343
|
|
# gf New pattern. (3.1.14)
|
|
# tm modified (3.1.15) (cho1:150)
|
|
|
|
|xxx? destroy eyespace
|
|
|..YX
|
|
|.*.x
|
|
+----
|
|
|
|
:8,s,value(46)
|
|
|
|
|
|
Pattern A1344
|
|
# tm new pattern (3.1.15) (see cho1:150)
|
|
# This pattern shouldn't be necessary. It's definitely a vital move
|
|
# for the eyespace.
|
|
|
|
XXY? consolidate or destroy eyespace
|
|
X.*O
|
|
----
|
|
|
|
:8,s,value(46)
|
|
|
|
|
|
Pattern A1345
|
|
# tm new pattern (3.1.15) (see cho1:160)
|
|
|
|
|.X.O special corner shape
|
|
|.*YO
|
|
|...O
|
|
+----
|
|
|
|
:8,s,value(46)
|
|
|
|
|
|
Pattern A1346
|
|
# tm new pattern (3.1.15) (see cho1:200)
|
|
|
|
??Xx| important 1-2 attack.
|
|
XY.x|
|
|
x.*.|
|
|
----+
|
|
|
|
:8,s,value(75)
|
|
|
|
|
|
Pattern A1347
|
|
# gf New pattern. (3.1.15)
|
|
|
|
|xx?
|
|
|..X destroy eyespace
|
|
|*.Y
|
|
|OX?
|
|
+---
|
|
|
|
:8,s,value(35)
|
|
|
|
|
|
Pattern A1348
|
|
# gf New pattern. (3.1.15)
|
|
|
|
|xX? fighting ko is only chance to kill
|
|
|OxX
|
|
|OYX
|
|
|X*X
|
|
+---
|
|
|
|
:8,s,value(75)
|
|
|
|
|xX?
|
|
|axB
|
|
|aBB
|
|
|X*B
|
|
+---
|
|
|
|
;lib(a)==1 && lib(B)<=3 && defend(a)!=WIN
|
|
|
|
|
|
Pattern A1349a
|
|
# gf New pattern. (3.3.20)
|
|
|
|
|.O? only chance to kill, sometimes tesuji
|
|
|.XO
|
|
|X.Y
|
|
|..X
|
|
|*.X
|
|
|.X?
|
|
+---
|
|
|
|
:8,s,value(75)
|
|
|
|
|.O?
|
|
|.XO
|
|
|X.Y
|
|
|..X
|
|
|*.X
|
|
|.A?
|
|
+---
|
|
|
|
;!attack(A)
|
|
|
|
|
|
Pattern A1349b
|
|
# gf New pattern. (3.3.20)
|
|
|
|
|oO? only chance to kill, sometimes tesuji
|
|
|OXO
|
|
|.XO
|
|
|X.Y
|
|
|..X
|
|
|*.X
|
|
|.X?
|
|
+---
|
|
|
|
:8,s,value(75)
|
|
|
|
|oO?
|
|
|OXO
|
|
|.XO
|
|
|X.Y
|
|
|..X
|
|
|*.X
|
|
|.A?
|
|
+---
|
|
|
|
;!attack(A)
|
|
|
|
|
|
Pattern A1350
|
|
# gf New pattern. (3.3.20)
|
|
# See ld_owl:68.
|
|
|
|
|XXX? try to kill without ko
|
|
|O.X?
|
|
|X.YX
|
|
|.*.O
|
|
+----
|
|
|
|
:8,s,value(75)
|
|
|
|
|AAA?
|
|
|O.A?
|
|
|X.AA
|
|
|.*.O
|
|
+----
|
|
|
|
;lib(A)==3
|
|
|
|
|
|
Pattern A1351
|
|
# mh New Pattern (3.5.4)
|
|
# see ld_owl:406-412
|
|
|
|
|OO?? better than capturing
|
|
|XOX?
|
|
|.Y.X
|
|
|*.X?
|
|
|..X?
|
|
+----
|
|
|
|
:8,s,value(75)
|
|
|
|
|
|
Pattern A1352a
|
|
# gf New pattern. (3.7.3)
|
|
|
|
|?X?? destroy eyespace
|
|
|X.Y?
|
|
|.*YX
|
|
|...x
|
|
+----
|
|
|
|
:8,s,value(55)
|
|
|
|
|?X??
|
|
|XaY?
|
|
|.*YX
|
|
|...x
|
|
+----
|
|
|
|
;proper_eye(a)
|
|
|
|
|
|
Pattern A1352b
|
|
# gf New pattern. (3.7.3)
|
|
|
|
|?X?? destroy eyespace
|
|
|X.Y?
|
|
|.*YX
|
|
|...x
|
|
+----
|
|
|
|
:8,s,value(75)
|
|
|
|
|?X??
|
|
|XaY?
|
|
|c*YX
|
|
|.b.x
|
|
+----
|
|
|
|
;proper_eye(a) && oplay_defend(*,b,c,*)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Invasion patterns #
|
|
# #
|
|
#########################################################
|
|
# #
|
|
# These are not ordinary owl attack patterns. #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern A1401
|
|
# nn Increased value a bit (3.3.12)
|
|
|
|
Y...| don't let opponent live easily in the corner
|
|
.*..|
|
|
....|
|
|
....|
|
|
----+
|
|
|
|
:\,-,value(46)
|
|
|
|
|
|
Pattern A1403
|
|
#evand new pattern 3.3.13
|
|
|
|
Y.O.|
|
|
.*..|
|
|
o...|
|
|
....|
|
|
----+
|
|
|
|
:8,-,value(55)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Ko patterns #
|
|
# #
|
|
#########################################################
|
|
|
|
Pattern A1501
|
|
# Necessary to have one O stone in the pattern to identify the goal.
|
|
# The helper is reused from a similar defense pattern.
|
|
|
|
?O fill outer liberty in two-step ko
|
|
Y*
|
|
|
|
:8,-,value(35)
|
|
|
|
?O
|
|
A*
|
|
|
|
;lib(A)==2 && olib(*)>1 && finish_ko_helper(A)
|
|
|
|
|
|
Pattern A1502
|
|
# Necessary to have one O stone in the pattern to identify the goal.
|
|
# The helper is reused from a similar defense pattern.
|
|
|
|
Y*O fill outer liberty in two-step ko
|
|
|
|
:-,-,value(35)
|
|
|
|
A*O
|
|
|
|
;lib(A)==2 && olib(*)>1 && finish_ko_helper(A)
|
|
|
|
|
|
Pattern A1503
|
|
|
|
OX? capture ko to stop escape
|
|
Y*X
|
|
OXO
|
|
?O?
|
|
|
|
:8,Cs,value(75)
|
|
|
|
OX?
|
|
A*B
|
|
OXO
|
|
?O?
|
|
|
|
;owl_escape_value(A) > 0 || owl_escape_value(B) > 0
|
|
|
|
|
|
Pattern A1503a
|
|
#Same as 1503 - differnt anchor.
|
|
|
|
OX? capture ko to stop escape
|
|
X*Y
|
|
OXO
|
|
?O?
|
|
|
|
:8,Cs,value(75)
|
|
|
|
OX?
|
|
A*B
|
|
OXO
|
|
?O?
|
|
|
|
;owl_escape_value(A) > 0 || owl_escape_value(B) > 0
|
|
|
|
|
|
Pattern A1504
|
|
# nn New pattern (3.3.13)
|
|
# redundant, as long as A1107c isn't removed
|
|
|
|
OXXXO threaten to take an eye by ko
|
|
.OY.X
|
|
*..X.
|
|
-----
|
|
|
|
:8,-,value(60)
|
|
|
|
OXXXa
|
|
bcY.X
|
|
*..X.
|
|
-----
|
|
|
|
;!attack(a) && !xplay_defend(b,c)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Specific edge attacks #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern A1601
|
|
|
|
?xx
|
|
Y..
|
|
.*X
|
|
---
|
|
|
|
:8,s,value(35)
|
|
|
|
?xx
|
|
Yac
|
|
b*X
|
|
---
|
|
|
|
;!safe_omove(a) && oplay_defend(*,a,*) && !oplay_attack(*,b,c,c)
|
|
|
|
|
|
Pattern A1602
|
|
|
|
.YO? peep to destroy eyeshape
|
|
*.XO
|
|
.X.?
|
|
----
|
|
|
|
:8,Cs,value(55)
|
|
|
|
aYO?
|
|
*bCO
|
|
.X.?
|
|
----
|
|
|
|
;!oplay_defend(*,a,b,C)
|
|
|
|
|
|
Pattern A1603
|
|
|
|
.YO? peep to destroy eyeshape
|
|
*.XO
|
|
..X?
|
|
----
|
|
|
|
:8,Cs,value(55)
|
|
|
|
aYO?
|
|
*bCO
|
|
..X?
|
|
----
|
|
|
|
;!oplay_defend(*,a,b,C)
|
|
|
|
|
|
Pattern A1604
|
|
|
|
?XYO? peep to destroy eyeshape
|
|
O*.XO
|
|
..X.?
|
|
-----
|
|
|
|
:8,Cs,value(55)
|
|
|
|
?XYO?
|
|
O*aBO
|
|
..X.?
|
|
-----
|
|
|
|
;!oplay_defend(*,?,a,B)
|
|
|
|
|
|
Pattern A1605
|
|
|
|
?XYO? peep to destroy eyeshape
|
|
O*.XO
|
|
...X?
|
|
-----
|
|
|
|
:8,Cs,value(55)
|
|
|
|
?XYO?
|
|
O*aBO
|
|
...B?
|
|
-----
|
|
|
|
;!oplay_defend(*,?,a,B)
|
|
|
|
|
|
Pattern A1606
|
|
|
|
XYO? peep to destroy eyeshape
|
|
*.XO
|
|
.X.?
|
|
----
|
|
|
|
:8,Cs,value(35)
|
|
|
|
XYO?
|
|
*aBO
|
|
.X.?
|
|
----
|
|
|
|
;!oplay_defend(*,?,a,B)
|
|
|
|
|
|
Pattern A1607
|
|
|
|
XYO? peep to destroy eyeshape
|
|
*.XO
|
|
..X?
|
|
----
|
|
|
|
:8,s,value(35)
|
|
|
|
XYO?
|
|
*aBO
|
|
..X?
|
|
----
|
|
|
|
;!oplay_defend(*,?,a,B)
|
|
|
|
|
|
Pattern A1608
|
|
|
|
XYO? throw in to destroy eyespace
|
|
.*XO
|
|
.X.O
|
|
----
|
|
|
|
:8,s,value(45)
|
|
|
|
|
|
Pattern A1608b
|
|
|
|
xXYO? atari to reduce eyespace, with further reduction as followup
|
|
...XO
|
|
..X*O
|
|
-----
|
|
|
|
:8,s,value(50)
|
|
|
|
|
|
# nn Removal candidate (3.3.13)
|
|
# Success rate in regressions : 0% (0/35)
|
|
|
|
Pattern A1609
|
|
|
|
?OOY?
|
|
O.X.X
|
|
OX.*.
|
|
-----
|
|
|
|
:8,s,value(35)
|
|
|
|
|
|
Pattern A1610
|
|
# gf New pattern. (3.1.11)
|
|
|
|
OXYX? edge tesuji
|
|
X...O
|
|
.X.*.
|
|
-----
|
|
|
|
:8,-,value(45)
|
|
|
|
bAAA?
|
|
XedfO
|
|
.Xc*.
|
|
-----
|
|
|
|
;lib(A)==3 && !attack(b) && !oplay_attack(*,c,d,e,f,f)
|
|
|
|
|
|
Pattern A1611
|
|
# gf New pattern. (3.1.12)
|
|
|
|
OXYXx? edge tesuji
|
|
X...XO
|
|
..*...
|
|
------
|
|
|
|
:8,-,value(35)
|
|
|
|
OXYXx?
|
|
X.edXf
|
|
.a*cb.
|
|
------
|
|
|
|
;oplay_attack(*,a,b,c,d,e,e) && !oplay_attack(*,f)
|
|
|
|
|
|
Pattern A1612
|
|
# tm New pattern (3.1.15)
|
|
|
|
?*Y??
|
|
?X.X.
|
|
?.X.O
|
|
-----
|
|
|
|
:8,-,value(45)
|
|
|
|
?*Y??
|
|
?eDX.
|
|
?BXCA
|
|
-----
|
|
|
|
;lib(A) > 2 && !oplay_defend(*,?,B,?,C,?,D,e)
|
|
|
|
|
|
Pattern A1613
|
|
# tm New Pattern (3.1.17)
|
|
|
|
?XY?
|
|
XO.x
|
|
OX*X
|
|
----
|
|
|
|
:8,s,value(75)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Threats to capture #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern AC01
|
|
# pp New pattern (3.5.5).
|
|
|
|
xXO threaten a snapback
|
|
x.Y
|
|
*.X
|
|
---
|
|
|
|
:8,cs, threatens_to_capture(A), value(25)
|
|
|
|
xXB
|
|
x.A
|
|
*.A
|
|
---
|
|
|
|
; lib(A) == 2 && lib(B) > 1 && olib(*) > 1
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Threats to destroy eyes #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern AE01
|
|
# pp New pattern (3.5.5).
|
|
|
|
|OXx threaten to destroy the eye in ko
|
|
|X.X
|
|
|.Yx
|
|
|.*.
|
|
+---
|
|
|
|
:8,cs, threatens_eye(a), value(20)
|
|
|
|
|BXx
|
|
|XaX
|
|
|.Yx
|
|
|.*.
|
|
+---
|
|
|
|
; owl_proper_eye(a) && !attack(B)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Reverse sente attacking moves #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
# END OF FILE
|