7643 lines
82 KiB
Plaintext
7643 lines
82 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 defensive 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.
|
|
#
|
|
# B : This move is not connected to the goal dragon and should
|
|
# therefore not be included in the goal.
|
|
#
|
|
# b : This move is maybe not connected to the goal dragon and should
|
|
# therefore be included only after closer examination.
|
|
#
|
|
# a : This move connects all O stones in the pattern to the goal.
|
|
#
|
|
#################
|
|
#
|
|
# The patterns in this database are sorted into the following
|
|
# categories:
|
|
#
|
|
# Dxx Expanding moves on the fourth line
|
|
# D1xx Expanding moves on the third line
|
|
# D2xx Expanding moves on the second line
|
|
# D3xx Expanding moves in the center
|
|
# D4xx Expanding moves in the corner
|
|
# D5xx Defend one worm of the dragon
|
|
# D6xx Make eyeshape on the edge
|
|
# D7xx Make eyeshape in the center
|
|
# D8xx Make eyeshape in the corner
|
|
# D9xx Prevent intrusion
|
|
# D10xx Prevent a cut
|
|
# D11xx Attack a defect in the perimeter
|
|
# D12xx Kikashi
|
|
# D13xx Escape
|
|
# D14xx Ko
|
|
#
|
|
# DCxx Threats to capture
|
|
# DExx Threats to create eyes
|
|
# DRxx Reverse sente defending moves
|
|
|
|
|
|
attribute_map owl_defense
|
|
|
|
goal_elements Oo
|
|
callback_data none
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Expanding moves on the fourth line #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern D1
|
|
|
|
?X.. jump out safely
|
|
O.*.
|
|
O...
|
|
....
|
|
....
|
|
----
|
|
|
|
:8,-,value(75)
|
|
|
|
?X..
|
|
Oa*.
|
|
Obc.
|
|
....
|
|
....
|
|
----
|
|
|
|
; oplay_attack(*,a,b,c,c)
|
|
|
|
|
|
Pattern D2
|
|
|
|
.... hane if attached
|
|
.*X.
|
|
..Oo
|
|
....
|
|
....
|
|
----
|
|
|
|
:8,-,value(55)
|
|
|
|
|
|
Pattern D3
|
|
|
|
..X? push to expand
|
|
..*O
|
|
....
|
|
....
|
|
....
|
|
----
|
|
|
|
:8,-,value(77)
|
|
|
|
|
|
Pattern D4
|
|
|
|
.X.. extend along the fourth line
|
|
oO*.
|
|
....
|
|
....
|
|
....
|
|
----
|
|
|
|
:8,-,value(83)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Expanding moves on the third line #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern D100
|
|
|
|
?XX? Push along third line
|
|
?O*.
|
|
....
|
|
....
|
|
----
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D101
|
|
|
|
?Xx?? Slide from fourth to third line
|
|
OO..?
|
|
...*.
|
|
.....
|
|
.....
|
|
-----
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D102
|
|
|
|
?x.?
|
|
XX*. Escape!
|
|
OO..
|
|
....
|
|
----
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D103
|
|
|
|
?O.?
|
|
XX*. Escape!
|
|
OO..
|
|
....
|
|
----
|
|
|
|
:8,-,value(85)
|
|
|
|
|
|
Pattern D104
|
|
|
|
??*O save one stone
|
|
XO..
|
|
....
|
|
----
|
|
|
|
:8,-,value(75)
|
|
|
|
??*O
|
|
Xa..
|
|
....
|
|
----
|
|
|
|
;attack(a) && !oplay_attack(*,a)
|
|
|
|
|
|
Pattern D104b
|
|
|
|
?O.O* save two stones while extending
|
|
XO...
|
|
.....
|
|
-----
|
|
|
|
:8,-,value(80)
|
|
|
|
?a.O*
|
|
Xa...
|
|
.....
|
|
-----
|
|
|
|
;attack(a) && !oplay_attack(*,a)
|
|
|
|
|
|
Pattern D105
|
|
|
|
|..O?
|
|
|..O? try before extension
|
|
|.OXo
|
|
|..*?
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D106
|
|
|
|
X.OX? hanging connection on third line
|
|
.*.OO
|
|
.....
|
|
.....
|
|
-----
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D107
|
|
|
|
?..x attach
|
|
.X.O
|
|
.*..
|
|
....
|
|
....
|
|
----
|
|
|
|
:8,B,value(70)
|
|
|
|
|
|
Pattern D108
|
|
|
|
?..x pull back
|
|
.X.O
|
|
XO*.
|
|
....
|
|
....
|
|
----
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D109
|
|
# gf Added b classification. (3.3.17)
|
|
|
|
?..x extend
|
|
.X.O
|
|
*O..
|
|
....
|
|
....
|
|
----
|
|
|
|
:8,b,value(95)
|
|
|
|
|
|
Pattern D110
|
|
|
|
.....X. one space jump to live
|
|
.*.O.oX
|
|
.....OO
|
|
.......
|
|
-------
|
|
|
|
:8,-,value(75)
|
|
|
|
|
|
Pattern D111
|
|
|
|
.Xx push on third line
|
|
.*O
|
|
...
|
|
...
|
|
---
|
|
|
|
:8,-,value(79)
|
|
|
|
|
|
Pattern D112
|
|
|
|
o....? two space jump
|
|
O..*.?
|
|
o...oo
|
|
.....o
|
|
------
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D113
|
|
|
|
?xX.. draw back on the third line
|
|
X.O*.
|
|
.....
|
|
.....
|
|
-----
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D114
|
|
|
|
..X push to defend
|
|
X*O
|
|
...
|
|
...
|
|
---
|
|
|
|
:8,-,value(77)
|
|
|
|
|
|
Pattern D115
|
|
|
|
?X.? knight's move if safe
|
|
?.*.
|
|
O..o
|
|
....
|
|
----
|
|
|
|
:8,-,value(76)
|
|
|
|
?X.?
|
|
?b*.
|
|
Oa.o
|
|
....
|
|
----
|
|
|
|
; !oplay_defend(*,a,b,a)
|
|
|
|
|
|
Pattern D116
|
|
|
|
O*X climb to third line
|
|
..O
|
|
...
|
|
---
|
|
|
|
:8,-,value(50)
|
|
|
|
O*X
|
|
..a
|
|
...
|
|
---
|
|
|
|
;lib(a) >= 4
|
|
|
|
|
|
Pattern D117
|
|
# tm modified (3.1.22)
|
|
# gf Fixed diagram inconsistency. (3.1.23)
|
|
|
|
?*O.X extend on third line
|
|
o...O
|
|
?....
|
|
-----
|
|
|
|
:8,-,value(70)
|
|
|
|
?*O.X
|
|
o...a
|
|
?....
|
|
-----
|
|
|
|
;lib(a) >= 4
|
|
|
|
|
|
Pattern D118
|
|
# This is usually better than D213 when both match.
|
|
|
|
?OX? hane to expand
|
|
O.*.
|
|
....
|
|
....
|
|
----
|
|
|
|
:8,-,value(81)
|
|
|
|
?aX?
|
|
O.*.
|
|
....
|
|
....
|
|
----
|
|
|
|
;lib(a)>1
|
|
|
|
|
|
Pattern D119
|
|
# This is usually better than D213 when both match.
|
|
|
|
OOX?? hane to expand
|
|
..O*.
|
|
.....
|
|
.....
|
|
-----
|
|
|
|
:8,-,value(81)
|
|
|
|
|
|
Pattern D120
|
|
|
|
??xxx? better to make a base than jump in the center
|
|
?O...X
|
|
o..*..
|
|
......
|
|
......
|
|
------
|
|
|
|
:8,-,value(82)
|
|
|
|
|
|
Pattern D121
|
|
|
|
...... jump to maximum eyespace on third line
|
|
O.*.X.
|
|
......
|
|
......
|
|
------
|
|
|
|
:8,-,value(40)
|
|
|
|
|
|
Pattern D122
|
|
|
|
??... hane moving out
|
|
XX*..
|
|
OO...
|
|
.....
|
|
.....
|
|
-----
|
|
|
|
:8,-,value(80)
|
|
|
|
??...
|
|
XX*..
|
|
OOa..
|
|
.....
|
|
.....
|
|
-----
|
|
|
|
; oplay_attack(*,a,a)
|
|
|
|
|
|
Pattern D123
|
|
# tm New Pattern (3.1.17)
|
|
# tm Modified (3.1.18)
|
|
# spl modified (3.3.23)
|
|
|
|
??x??
|
|
??*O? expand eye shape, not in corner
|
|
oO.O?
|
|
?...?
|
|
-----
|
|
|
|
:8,-,value(65)
|
|
|
|
|
|
Pattern D124
|
|
# tm New Pattern (3.1.20) (see trevorb:660)
|
|
# ab Revised constraint.
|
|
|
|
?X.. split off weak stones
|
|
o*OO
|
|
o.Xx
|
|
o...
|
|
----
|
|
|
|
:8,-,value(81)
|
|
|
|
?X..
|
|
a*OO
|
|
obcx
|
|
o...
|
|
----
|
|
|
|
;oplay_attack(*,a,b,c) && !attack(c)
|
|
|
|
|
|
Pattern D125
|
|
# gf New pattern. (3.5.3)
|
|
|
|
?oo?
|
|
...X escape or build further on the edge
|
|
.X*.
|
|
.o.O
|
|
....
|
|
----
|
|
|
|
:8,-,value(77)
|
|
|
|
?ab?
|
|
...X
|
|
.X*.
|
|
.o.O
|
|
....
|
|
----
|
|
|
|
;owl_escape_value(a)>0 || owl_escape_value(b)>0
|
|
|
|
|
|
Pattern D126
|
|
# gf New pattern. (3.5.5)
|
|
# See ld_owl:501.
|
|
|
|
|..?Ooo
|
|
|.XX.oo
|
|
|...X.X peep in the corner
|
|
|..O.*.
|
|
|......
|
|
|......
|
|
+------
|
|
|
|
:8,-,value(85)
|
|
|
|
|
|
Pattern D127
|
|
# ab New pattern (3.7.1)
|
|
|
|
???..o
|
|
?..*Oo
|
|
oO.X.o
|
|
o....o
|
|
------
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Expanding moves on the second line #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern D200
|
|
|
|
?XX?? Slide
|
|
OO...
|
|
...*.
|
|
.....
|
|
-----
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D201
|
|
|
|
?XX?? Slide
|
|
OO..X
|
|
...*.
|
|
.....
|
|
-----
|
|
|
|
:8,-,value(81)
|
|
|
|
|
|
Pattern D202
|
|
|
|
?X.. Hane on second line
|
|
OOX.
|
|
..*.
|
|
....
|
|
----
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D203
|
|
|
|
XX.. Push!
|
|
O*..
|
|
....
|
|
----
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D204
|
|
# tm Pattern revised. (3.1.13)
|
|
# tm Pattern revised. (3.1.14)
|
|
|
|
??X? push
|
|
?O*.
|
|
?.x.
|
|
----
|
|
|
|
:8,-,value(60)
|
|
|
|
??X?
|
|
AO*.
|
|
?.x.
|
|
----
|
|
|
|
;!x_somewhere(A) || !defend(A)
|
|
|
|
|
|
Pattern D205
|
|
|
|
?X? hane
|
|
?OX
|
|
O.*
|
|
...
|
|
---
|
|
|
|
:8,-,value(60)
|
|
|
|
|
|
Pattern D206
|
|
#tm revised 3.1.14
|
|
|
|
?XxX? extend
|
|
oO*?x
|
|
?....
|
|
-----
|
|
|
|
:8,-,value(65)
|
|
|
|
|
|
Pattern D207
|
|
# tm reduced value (3.1.22) (see nngs:710)
|
|
# gf Modified. (3.3.6)
|
|
|
|
?O.X second line kosumi
|
|
o.*x
|
|
o...
|
|
----
|
|
|
|
:8,-,value(66)
|
|
|
|
|
|
Pattern D208
|
|
# db reduced slightly (3.1.8)
|
|
# tm reduced some more (3.1.22) (see nngs:710)
|
|
|
|
???o second line keima
|
|
X..O
|
|
.*..
|
|
....
|
|
----
|
|
|
|
:8,-,value(65)
|
|
|
|
|
|
Pattern D209
|
|
|
|
?OO block on edge
|
|
X*.
|
|
...
|
|
---
|
|
|
|
:8,n,value(70)
|
|
|
|
|
|
Pattern D209a
|
|
# tm New pattern (3.1.15)
|
|
|
|
?OO sente block on first line.
|
|
X..
|
|
.*.
|
|
---
|
|
|
|
:8,n,value(35)
|
|
|
|
?OO
|
|
B..
|
|
.*.
|
|
---
|
|
|
|
; oplay_attack(*,B)
|
|
|
|
|
|
Pattern D209b
|
|
#spl modified 3.5.1
|
|
|
|
?O.o block on edge
|
|
X*.o
|
|
....
|
|
----
|
|
|
|
:8,n,value(70)
|
|
|
|
|
|
Pattern D210
|
|
|
|
?OO? expand eyespace
|
|
X*.O
|
|
....
|
|
----
|
|
|
|
:8,-,value(70)
|
|
|
|
|
|
Pattern D211
|
|
|
|
|..O
|
|
|..O try before hanging connection
|
|
|.OX
|
|
|.*x
|
|
|.x?
|
|
|
|
:8,-,value(71)
|
|
|
|
|
|
Pattern D212
|
|
# gf FIXME: This is not a second line move. Move the pattern.
|
|
|
|
??O??? capture one stone to improve eye space
|
|
?..OX?
|
|
.XOX*o
|
|
------
|
|
|
|
:8,-,value(75)
|
|
|
|
|
|
Pattern D213
|
|
|
|
??X? slide
|
|
O..x
|
|
..*.
|
|
....
|
|
----
|
|
|
|
:8,-,value(80)
|
|
|
|
??X?
|
|
Oa.x
|
|
cb*.
|
|
....
|
|
----
|
|
|
|
;oplay_attack_either(*,a,b,c,a,c)
|
|
|
|
|
|
Pattern D214
|
|
|
|
oOx
|
|
.*X
|
|
...
|
|
---
|
|
|
|
:8,-,value(50)
|
|
|
|
|
|
Pattern D215
|
|
|
|
??.. urgent hane
|
|
..XX
|
|
.XOO
|
|
.*..
|
|
....
|
|
----
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D216
|
|
|
|
.O.?
|
|
O.*. make eye on edge
|
|
....
|
|
----
|
|
|
|
:8,-,value(75)
|
|
|
|
|
|
Pattern D217
|
|
# tm Pattern revised. (3.1.13)
|
|
# tm Pattern revised. (3.1.17)
|
|
# gf FIXME: This constraint is weird. (3.1.23)
|
|
|
|
o...
|
|
O.*. expand eyespace
|
|
xx..
|
|
----
|
|
|
|
:8,-,value(60)
|
|
|
|
o...
|
|
O.*.
|
|
Ax..
|
|
----
|
|
|
|
; oplay_attack(*,A)
|
|
|
|
|
|
Pattern D217a
|
|
# tm Pattern added (3.1.14)
|
|
# see owl:170
|
|
|
|
?...
|
|
O.*.
|
|
.x..
|
|
----
|
|
|
|
:8,-,value(50)
|
|
|
|
?...
|
|
O.*.
|
|
.A..
|
|
----
|
|
|
|
; !oplay_defend(*,A)
|
|
|
|
|
|
Pattern D217b
|
|
|
|
O.XO
|
|
O.*. expand eyespace
|
|
....
|
|
----
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D217c
|
|
# tm added (3.1.14)
|
|
# see trevor:401
|
|
# Possible to sacrifice to gain tempo here.
|
|
# nn Modified (3.3.13)
|
|
|
|
O.X? expand eye-space
|
|
O.*.
|
|
.x.o
|
|
----
|
|
|
|
:8,s,value(10)
|
|
|
|
|
|
Pattern D218
|
|
|
|
xx...X. slide (usually inferior to play on third line)
|
|
...O.oX
|
|
.*...OO
|
|
.......
|
|
-------
|
|
|
|
:8,-,value(70)
|
|
|
|
|
|
Pattern D220
|
|
# tm modified (3.1.17)
|
|
|
|
?oo.x jump to enlarge eyespace
|
|
oO.*x
|
|
....x
|
|
-----
|
|
|
|
:8,-,value(40)
|
|
|
|
abo.x
|
|
cO.*x
|
|
....x
|
|
-----
|
|
|
|
; o_somewhere(a,b,c)
|
|
|
|
|
|
Pattern D221
|
|
|
|
oo?x jump along second line
|
|
O.*.
|
|
....
|
|
----
|
|
|
|
:8,-,value(35)
|
|
|
|
|
|
Pattern D221b
|
|
# gf New pattern. (3.5.3)
|
|
|
|
oo?x jump along second line
|
|
O.*.
|
|
O...
|
|
----
|
|
|
|
:8,-,value(45)
|
|
|
|
|
|
Pattern D222
|
|
# tm Pattern revised. (3.1.13)
|
|
|
|
???? come straight out
|
|
xX.?
|
|
OO*.
|
|
..x.
|
|
----
|
|
|
|
:8,-,value(75)
|
|
|
|
|
|
Pattern D223
|
|
|
|
O.XX? push
|
|
..O*o
|
|
....o
|
|
-----
|
|
|
|
:8,-,value(70)
|
|
|
|
ObXX?
|
|
.ac*o
|
|
....o
|
|
-----
|
|
|
|
;xplay_attack(a,b,c) && !oplay_attack(*,a,b,c)
|
|
|
|
|
|
Pattern D224
|
|
|
|
??xX extend
|
|
oO*.
|
|
o...
|
|
----
|
|
|
|
:8,-,value(30)
|
|
|
|
|
|
Pattern D225
|
|
|
|
??X?? draw back
|
|
.O.OO
|
|
XO*..
|
|
.X...
|
|
-----
|
|
|
|
:8,-,value(45)
|
|
|
|
|
|
Pattern D226
|
|
# gf New pattern. (3.1.12)
|
|
|
|
?oO threaten to escape and cut
|
|
X.o
|
|
O*X
|
|
...
|
|
---
|
|
|
|
:8,E,value(45)
|
|
|
|
?ob
|
|
X.o
|
|
a*X
|
|
...
|
|
---
|
|
|
|
;owl_goal_dragon(a) && owl_escape_value(b)>0
|
|
|
|
|
|
Pattern D227
|
|
# gf New pattern. (3.1.13)
|
|
|
|
X.O. jump and threaten to cut, connect, or force
|
|
OX..
|
|
O.*.
|
|
o...
|
|
----
|
|
|
|
:8,-,value(65)
|
|
|
|
X.O.
|
|
aX..
|
|
a.*.
|
|
o...
|
|
----
|
|
|
|
;owl_goal_dragon(a) && !oplay_attack(*,a)
|
|
|
|
|
|
Pattern D228
|
|
# gf New pattern. (3.1.13)
|
|
|
|
X.O. followup
|
|
OXX*
|
|
O.O.
|
|
o...
|
|
----
|
|
|
|
:8,-,value(65)
|
|
|
|
X.O.
|
|
aXX*
|
|
a.O.
|
|
o...
|
|
----
|
|
|
|
;owl_goal_dragon(a) && !oplay_attack(*,a)
|
|
|
|
|
|
Pattern D229
|
|
# gf New pattern. (3.1.14)
|
|
|
|
XOoo capture or threaten to capture, improving eyespace
|
|
OX*o
|
|
....
|
|
----
|
|
|
|
:8,-,value(76)
|
|
|
|
XOoo
|
|
OX*o
|
|
...a
|
|
----
|
|
|
|
;owl_eyespace(a)
|
|
|
|
|
|
Pattern D230
|
|
# tm New Pattern (3.1.16)
|
|
# gf Not down to edge. (3.3.20)
|
|
# gf Not if it can be cut off. Constraint added. (3.5.3)
|
|
|
|
?OO...? expand along edge.
|
|
o....*?
|
|
?.....?
|
|
-------
|
|
|
|
:8,-,value(80)
|
|
|
|
?Ob...?
|
|
o...a*?
|
|
?.....?
|
|
-------
|
|
|
|
;oplay_connect(*,a,*,b)
|
|
|
|
|
|
Pattern D231
|
|
# tm New Pattern (3.1.20) (see nngs:1320 owl_does_attack L15 M17)
|
|
|
|
---- attach under
|
|
.ooo
|
|
*..o
|
|
X.Oo
|
|
..??
|
|
????
|
|
|
|
:8,sbE,value(70)
|
|
|
|
----
|
|
.ooo
|
|
*a.o
|
|
XbOo
|
|
c.??
|
|
ed??
|
|
|
|
; safe_omove(*) ||
|
|
; ((owl_escape_value(c) > 0 || owl_escape_value(d) >0 || owl_escape_value(e)>0)
|
|
; && oplay_attack(*,a,b,a))
|
|
|
|
|
|
Pattern D232
|
|
# gf New pattern. (3.1.23)
|
|
# See nngs:1630.
|
|
|
|
??O?? defend eye against edge descent tesuji
|
|
XO.O*
|
|
..O.X
|
|
-----
|
|
|
|
:8,-,value(45)
|
|
|
|
??O??
|
|
XOab*
|
|
cdOeF
|
|
-----
|
|
|
|
;lib(F)>=3 && owl_topological_eye(a,b)<=2 && !xplay_attack(c,d,e,c)
|
|
|
|
|
|
Pattern D233
|
|
# evand New pattern. (3.3.18)
|
|
# see owl:257
|
|
|
|
oooO? block
|
|
oo.*X
|
|
ooo..
|
|
-----
|
|
|
|
:8,n,value(35)
|
|
|
|
|
|
Pattern D234
|
|
# gf New pattern. (3.5.3).
|
|
# See e.g. nngs:1090.
|
|
|
|
...x?
|
|
..*X?
|
|
...Oo
|
|
-----
|
|
|
|
:8,-,value(35)
|
|
|
|
...x?
|
|
ba*C?
|
|
...Oo
|
|
-----
|
|
|
|
;oplay_disconnect(*,a,a,C) && oplay_disconnect(*,b,b,C)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Expanding moves in the center #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern D300
|
|
# gf Revised pattern. (3.1.15)
|
|
|
|
X..?? push into the open
|
|
O*..?
|
|
x..??
|
|
|
|
:8,E,value(80)
|
|
|
|
X..??
|
|
O*.a?
|
|
x..??
|
|
|
|
;owl_escape_value(a) > 1
|
|
|
|
|
|
Pattern D301
|
|
|
|
X..?
|
|
O.*.
|
|
O..?
|
|
|
|
:8,E,value(80)
|
|
|
|
X..?
|
|
O.*a
|
|
O..?
|
|
|
|
;owl_escape_value(a) > 1
|
|
|
|
|
|
Pattern D302
|
|
# FIXME: This pattern looks way too general (see owl:23)
|
|
|
|
XX.? push along
|
|
O*..
|
|
?..?
|
|
|
|
:8,-,value(50)
|
|
|
|
|
|
Pattern D303
|
|
# The b classification inhibits the addition of * to the dragon.
|
|
|
|
XX.? hane to try to escape
|
|
OOX.
|
|
?.*.
|
|
??.?
|
|
|
|
:8,b,value(70)
|
|
|
|
|
|
Pattern D304
|
|
|
|
OO? block
|
|
X.?
|
|
*..
|
|
|
|
:8,-,value(75)
|
|
|
|
OO?
|
|
a.?
|
|
*..
|
|
|
|
; does_attack(*,a)
|
|
|
|
|
|
Pattern D305
|
|
|
|
??.? attach
|
|
..X.
|
|
O.*.
|
|
....
|
|
|
|
:8,-,value(75)
|
|
|
|
|
|
Pattern D306
|
|
|
|
???o keima to expand shape
|
|
X..O
|
|
.*..
|
|
....
|
|
|
|
:8,-,value(75)
|
|
|
|
???o
|
|
XdaO
|
|
.*bc
|
|
....
|
|
|
|
;oplay_attack_either(*,a,b,c,a,c) && oplay_attack_either(*,b,a,d,b,d)
|
|
|
|
|
|
Pattern D307
|
|
|
|
??.?? block
|
|
.*X..
|
|
O.OX?
|
|
|
|
:8,-,value(75)
|
|
|
|
??b??
|
|
.*Xc.
|
|
O.OD?
|
|
|
|
; oplay_attack(*,?,c,b,D)
|
|
|
|
|
|
Pattern D308
|
|
# tm added b category (3.1.17)
|
|
# tm modified & increased value (3.1.20)
|
|
|
|
o.O chimera
|
|
.*X
|
|
|
|
:8,nsb,value(77)
|
|
|
|
ocO
|
|
b*X
|
|
|
|
; oplay_attack(*,b,b) && oplay_attack(*,c,c) && safe_xmove(*)
|
|
|
|
|
|
Pattern D309
|
|
# tm modified (3.1.16)
|
|
# tm reduced value (3.1.20) (see dniwog:5)
|
|
# FIXME: Adding B attribute solve niki:14 - not sure why -tm.
|
|
# adding it breaks a lot, however (i.e. trevorb:590)
|
|
|
|
?O? block off area
|
|
X*.
|
|
ooo
|
|
|
|
:8,-,value(65)
|
|
|
|
?O?
|
|
b*a
|
|
ooo
|
|
|
|
;oplay_attack(*,b) && oplay_attack(*,a,a)
|
|
|
|
|
|
Pattern D309a
|
|
# tm modified (3.1.16)
|
|
# tm modified (3.1.22)
|
|
# tm modified (3.1.23) (added b attribute)
|
|
|
|
?O? block off area
|
|
X*.
|
|
ooo
|
|
|
|
:8,b,value(60)
|
|
|
|
?O?
|
|
X*a
|
|
ooo
|
|
|
|
; oplay_attack(*,a,a)
|
|
; && !obvious_false_oeye(a)
|
|
|
|
|
|
Pattern D309b
|
|
|
|
?O? block off area
|
|
X..
|
|
.*.
|
|
???
|
|
|
|
:8,-,value(61)
|
|
|
|
?O?
|
|
Xba
|
|
.*.
|
|
???
|
|
|
|
;oplay_attack(*,a,a) && oplay_attack(*,b,b)
|
|
|
|
|
|
Pattern D310a
|
|
|
|
?o?
|
|
*.O hanging connection to make eye
|
|
.OX
|
|
oo?
|
|
|
|
:8,-,value(55)
|
|
|
|
?o?
|
|
*ba
|
|
.OX
|
|
oo?
|
|
|
|
; lib(a)>1 && safe_xmove(b) && oplay_attack(*,b,b)
|
|
|
|
|
|
Pattern D310b
|
|
# More worth if safe from atari.
|
|
# tm Reduced value (3.1.22) (see owl:153)
|
|
|
|
?o?
|
|
*.O hanging connection to make eye
|
|
.OX
|
|
oo?
|
|
|
|
:8,-,value(65)
|
|
|
|
?o?
|
|
*ba
|
|
.cX
|
|
oo?
|
|
|
|
; lib(a)>2 && lib(c)>2 && safe_xmove(b) && oplay_attack(*,b,b)
|
|
|
|
|
|
Pattern D311
|
|
# gf Added n classification. (3.5.4)
|
|
|
|
OX? try to seal off some space
|
|
.*O
|
|
.??
|
|
|
|
:8,n,value(60)
|
|
|
|
OX?
|
|
a*O
|
|
.??
|
|
|
|
; oplay_attack(*,a,a)
|
|
|
|
|
|
Pattern D313
|
|
|
|
..X move out and separate
|
|
.*O
|
|
...
|
|
?XX
|
|
|
|
:8,-,value(75)
|
|
|
|
|
|
Pattern D314
|
|
|
|
??.XX push to defend!
|
|
.XXOO
|
|
.*O..
|
|
.....
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D315
|
|
|
|
X*o hane starting an eye
|
|
O.o
|
|
OOo
|
|
|
|
:8,-,value(60)
|
|
|
|
X*o
|
|
Oao
|
|
OOo
|
|
|
|
; oplay_attack(*,a,a)
|
|
|
|
|
|
Pattern D316
|
|
|
|
?X? connect to protect
|
|
O*O
|
|
...
|
|
|
|
:8,-,value(50)
|
|
|
|
?X?
|
|
O*O
|
|
.a.
|
|
|
|
; oplay_attack(*,a,a)
|
|
|
|
|
|
Pattern D317
|
|
|
|
OO? urgent block
|
|
X*?
|
|
...
|
|
|
|
:8,-,value(95)
|
|
|
|
bb?
|
|
A*?
|
|
...
|
|
|
|
;does_attack(*,A) && does_defend(*,b)
|
|
|
|
|
|
Pattern D318
|
|
# nn Modified (3.3.12)
|
|
|
|
OOXx descend - don't capture
|
|
OXOX
|
|
o.*.
|
|
|
|
:8,-,value(82)
|
|
|
|
OOXx
|
|
OAOX
|
|
o.*.
|
|
|
|
; does_attack(*,A)
|
|
|
|
|
|
Pattern D319
|
|
# db added (3.1.8)
|
|
|
|
...X atari!
|
|
.*XO
|
|
X.Oo
|
|
|
|
:8,-,value(80)
|
|
|
|
...X
|
|
.*XA
|
|
X.Oo
|
|
|
|
; lib(A)>1
|
|
|
|
|
|
Pattern D320
|
|
# db added (3.1.8)
|
|
|
|
.*.? jump out
|
|
...?
|
|
XO.o
|
|
o.O?
|
|
|
|
:8,-,value(50)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Expanding moves in the corner #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern D400
|
|
|
|
--+ sagari in corner
|
|
..|
|
|
O*|
|
|
Xx|
|
|
|
|
:8,-,value(70)
|
|
|
|
--+
|
|
..|
|
|
O*|
|
|
Ax|
|
|
|
|
;!attack(A)
|
|
|
|
|
|
Pattern D401
|
|
|
|
--+ capture in corner
|
|
..|
|
|
O.|
|
|
X*|
|
|
|
|
:8,-,value(80)
|
|
|
|
--+
|
|
..|
|
|
O.|
|
|
A*|
|
|
|
|
;lib(A)==1
|
|
|
|
|
|
Pattern D402
|
|
|
|
..O..| enclose corner to live
|
|
*....|
|
|
.....|
|
|
.....|
|
|
-----+
|
|
|
|
:8,-,value(60)
|
|
|
|
|
|
Pattern D403
|
|
|
|
|.O?? isolate corner stone
|
|
|..Ox
|
|
|.X*.
|
|
|....
|
|
+----
|
|
|
|
:8,-,value(70)
|
|
|
|
|
|
Pattern D404
|
|
|
|
?.O.| proceed into corner for almost certain life
|
|
X.o.|
|
|
.*..|
|
|
....|
|
|
....|
|
|
----+
|
|
|
|
:8,-,value(90)
|
|
|
|
|
|
Pattern D405
|
|
|
|
?Oo.| proceed into corner for almost certain life
|
|
X.o.|
|
|
.*..|
|
|
....|
|
|
....|
|
|
----+
|
|
|
|
:8,-,value(90)
|
|
|
|
?Oc.|
|
|
Xab.|
|
|
.*d.|
|
|
....|
|
|
....|
|
|
----+
|
|
|
|
; o_somewhere(b,c)||!oplay_defend(*,a,b,c,d,c)
|
|
|
|
|
|
Pattern D406
|
|
|
|
|ooOO? realize eyespace in corner
|
|
|....?
|
|
|...*x
|
|
|....?
|
|
+-----
|
|
|
|
:8,-,value(70)
|
|
|
|
|
|
Pattern D407
|
|
|
|
|..X?? easy life in corner
|
|
|.*OX?
|
|
|...OO
|
|
|.....
|
|
+-----
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D408
|
|
|
|
|ooO? slightly expand corner eyespace
|
|
|.O*X
|
|
|....
|
|
+----
|
|
|
|
:8,-,value(30)
|
|
|
|
|
|
Pattern D409
|
|
#evand new pattern (3.3.13)
|
|
|
|
oO.X.| move to corner to make life
|
|
..*..|
|
|
.....|
|
|
.....|
|
|
-----+
|
|
|
|
:8,-,value(45)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Defend one worm of the dragon #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern D500
|
|
|
|
xXOO descend to defend
|
|
XO..
|
|
.*..
|
|
----
|
|
|
|
:8,-,value(60)
|
|
|
|
|
|
Pattern D502
|
|
|
|
?X.O sagari
|
|
XO.O
|
|
.*..
|
|
----
|
|
|
|
:8,-,value(75)
|
|
|
|
|
|
Pattern D503
|
|
# The first constraint is necessary because the lower O stone
|
|
# may be short on liberties. It might work to replace it with
|
|
# a liberty constraint.
|
|
# tm modified (3.1.22)
|
|
|
|
|..O
|
|
|*.O hanging connection to protect eyespace
|
|
|?OX
|
|
|
|
:8,-,value(70)
|
|
|
|
|.bO
|
|
|*aO
|
|
|?Oc
|
|
|
|
; oplay_attack(*,a,a)
|
|
; && !xplay_attack_either(a,a,c)
|
|
; && oplay_attack(*,b,a,b)
|
|
|
|
|
|
Pattern D503b
|
|
# gf New pattern. (3.7.1)
|
|
# See ld_owl:319. Cf. D1004b.
|
|
|
|
|o.O try to get second eye through ko
|
|
|.*O
|
|
|..O
|
|
|?OX
|
|
|
|
:8,s,value(45)
|
|
|
|
|oaO
|
|
|.*O
|
|
|c.O
|
|
|bOX
|
|
|
|
;owl_proper_eye(a)
|
|
;&& oplay_attack(*,b,c,b)
|
|
|
|
|
|
Pattern D504
|
|
# Don't apply this pattern on the edge. See patterns D505 and D506
|
|
# gf Revised constraint. (3.3.18)
|
|
|
|
?*.O hanging connection to defend and make eye
|
|
?.OX
|
|
|
|
:8,-,value(85)
|
|
|
|
?*ba
|
|
?.cX
|
|
|
|
; lib(a)>1 && safe_xmove(b) && !obvious_false_oeye(b)
|
|
; && oplay_attack(*,b,b) && does_attack(b,c)
|
|
|
|
|
|
Pattern D505
|
|
#tm modified (3.1.22)
|
|
# gf Changed does_attack to xplay_defend for better ko handling. (3.3.13)
|
|
|
|
OOX hanging connection to defend and make eye
|
|
..O
|
|
.*.
|
|
---
|
|
|
|
:8,-,value(85)
|
|
|
|
OaX
|
|
dbc
|
|
.*.
|
|
---
|
|
|
|
; lib(a)>1 && safe_xmove(b) && oplay_attack(*,d,b,d)
|
|
; && xplay_defend(b,c) != WIN
|
|
|
|
|
|
Pattern D506
|
|
# Smaller value in this case since it leaves substantial aji. In
|
|
# particular we want to try the solid connection (pattern D44, value
|
|
# 80) before this pattern.
|
|
|
|
.OX hanging connection to defend and make eye
|
|
..O
|
|
.*.
|
|
---
|
|
|
|
:8,-,value(75)
|
|
|
|
.aX
|
|
dbc
|
|
.*.
|
|
---
|
|
|
|
; lib(a)>1 && safe_xmove(b) && oplay_attack(*,b,b) && does_attack(b,c)
|
|
; && oplay_attack(*,d,d)
|
|
|
|
|
|
Pattern D507
|
|
|
|
?XX.o defend two stones
|
|
XOO*.
|
|
?....
|
|
-----
|
|
|
|
:8,-,value(80)
|
|
|
|
?XX.o
|
|
Xaa*.
|
|
?....
|
|
-----
|
|
|
|
;does_defend(*,a)
|
|
|
|
|
|
Pattern D508
|
|
|
|
?XX*o
|
|
XOO.O defend
|
|
?....
|
|
-----
|
|
|
|
:8,-,value(90)
|
|
|
|
?XX*o
|
|
Xaa.O
|
|
?....
|
|
-----
|
|
|
|
;does_defend(*,a)
|
|
|
|
|
|
Pattern D509
|
|
# FIXME: (see trevor:360)
|
|
# nn Fixed constraint (3.3.12)
|
|
# does_defend() doesn't return WIN
|
|
|
|
XO? capture to defend
|
|
*XO
|
|
---
|
|
|
|
:8,-,value(90)
|
|
|
|
Xa?
|
|
*XO
|
|
---
|
|
|
|
;does_defend(*,a)
|
|
|
|
|
|
Pattern D510
|
|
# gf Devalued. (3.1.12)
|
|
|
|
?OX capture to defend
|
|
*XO
|
|
?O?
|
|
|
|
:8,-,value(75)
|
|
|
|
?aX
|
|
*XO
|
|
?O?
|
|
|
|
;does_defend(*,a)
|
|
|
|
|
|
Pattern D511
|
|
|
|
O.o rescue one stone
|
|
OX.
|
|
XO*
|
|
xXO
|
|
|
|
:8,-,value(75)
|
|
|
|
A.o
|
|
AX.
|
|
XO*
|
|
xXO
|
|
|
|
; !oplay_attack(*,A)
|
|
|
|
|
|
Pattern D512
|
|
|
|
..*.. atari before defending
|
|
X.XO.
|
|
.XO..
|
|
.....
|
|
.....
|
|
-----
|
|
|
|
:8,-,value(85)
|
|
|
|
|
|
Pattern D513
|
|
|
|
??... connect
|
|
XXO.o
|
|
XO*.o
|
|
....o
|
|
....o
|
|
-----
|
|
|
|
:8,-,value(85)
|
|
|
|
|
|
Pattern D514
|
|
# gf New pattern. (3.1.14)
|
|
|
|
?*.o avoid double atari
|
|
XO..
|
|
?XOO
|
|
|
|
:8,-,value(76)
|
|
|
|
?*.o
|
|
AO..
|
|
?Bcc
|
|
|
|
;lib(A)>1 && lib(B)>1 && lib(c)==2
|
|
|
|
|
|
Pattern D515
|
|
# gf New pattern. (3.3.20)
|
|
|
|
?OOX? hanging connection to defend and make eye
|
|
O..OX
|
|
.*...
|
|
-----
|
|
|
|
:8,-,value(61)
|
|
|
|
?OOX?
|
|
O.aOX
|
|
.*.b.
|
|
-----
|
|
|
|
;!oplay_defend(*,a,b,a)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Make eyeshape on the edge #
|
|
# #
|
|
#########################################################
|
|
# #
|
|
# Moves that do not necessarily expand the eyeshape #
|
|
# but try to make what exists yield two eyes #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern D600
|
|
# tm modified (3.1.20) (see strategy4:203)
|
|
|
|
oOX? eye with reverse sente
|
|
OxOX
|
|
o*..
|
|
----
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D600a
|
|
# tm New Pattern (3.1.15)
|
|
# tm modified (3.1.20)
|
|
|
|
oOX?? eye with reverse sente, avoid ko
|
|
OxOX?
|
|
o.*.X
|
|
-----
|
|
|
|
:8,-,value(81)
|
|
|
|
|
|
Pattern D602
|
|
|
|
?OO make eye
|
|
O.O
|
|
.*.
|
|
---
|
|
|
|
:8,-,value(35)
|
|
|
|
?OO
|
|
O.O
|
|
a*b
|
|
---
|
|
|
|
;oplay_attack(*,a,a) && oplay_attack(*,b,b)
|
|
|
|
|
|
Pattern D603
|
|
|
|
XO. make eye
|
|
O.O
|
|
.*.
|
|
---
|
|
|
|
:8,-,value(35)
|
|
|
|
XOc
|
|
O.O
|
|
a*b
|
|
---
|
|
|
|
;oplay_attack(*,a,a) && oplay_attack(*,b,b) && oplay_attack(*,c,c)
|
|
|
|
|
|
Pattern D604
|
|
# tm Modified (3.1.17)
|
|
|
|
oOOX descend to close eyeshape
|
|
?.*x
|
|
----
|
|
|
|
:8,-,value(35)
|
|
|
|
oOOA
|
|
?b*x
|
|
----
|
|
|
|
#;owl_eyespace(b) &&
|
|
;(!obvious_false_oeye(b) || oplay_attack(*,A))
|
|
;&& !xplay_attack(*,A)
|
|
|
|
|
|
Pattern D604a
|
|
#tm New Pattern (3.1.15) (see maeda:70)
|
|
|
|
OOOOOX make eye by threatening large capture
|
|
XX..*.
|
|
------
|
|
|
|
:8,-,value(35)
|
|
|
|
OOOOOX
|
|
XCAb*.
|
|
------
|
|
|
|
; !oplay_defend(*,A,b,C)
|
|
|
|
|
|
Pattern D605
|
|
|
|
oOo?
|
|
O.*O make an eye and threaten another, while preventing atari
|
|
XO..
|
|
----
|
|
|
|
:8,-,value(35)
|
|
|
|
|
|
Pattern D606
|
|
|
|
XOX try to partition eyespace rather than defend
|
|
O.O
|
|
.*.
|
|
---
|
|
|
|
:8,-,value(65)
|
|
|
|
XaX
|
|
O.O
|
|
b*c
|
|
---
|
|
|
|
;lib(a) == 1 && !obvious_false_oeye(b) && !obvious_false_oeye(c)
|
|
|
|
|
|
Pattern D607
|
|
|
|
OXO avoid nakade while probably securing eyes
|
|
X*X
|
|
---
|
|
|
|
:8,-,value(70)
|
|
|
|
OBO
|
|
A*C
|
|
---
|
|
|
|
;lib(A)==1 && lib(B)==1 && lib(C)==2
|
|
|
|
|
|
Pattern D608
|
|
|
|
oOOX eat lunch in the right direction
|
|
.X*.
|
|
----
|
|
|
|
:8,-,value(50)
|
|
|
|
oOOX
|
|
.A*.
|
|
----
|
|
|
|
;does_attack(*,A)
|
|
|
|
|
|
Pattern D608b
|
|
# gf New pattern. (3.1.11)
|
|
|
|
ooO.X eat lunch in the right direction
|
|
.X*..
|
|
-----
|
|
|
|
:8,-,value(50)
|
|
|
|
ooO.X
|
|
aB*..
|
|
-----
|
|
|
|
;owl_eyespace(a) && does_attack(*,B)
|
|
|
|
|
|
Pattern D609
|
|
|
|
?X? preserve eyespace
|
|
O*O
|
|
...
|
|
---
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D610
|
|
|
|
??oOX get out of liberty shortage
|
|
oOO.O
|
|
*XXO.
|
|
-----
|
|
|
|
:8,-,value(45)
|
|
|
|
??oOX
|
|
oOO.O
|
|
*XXOa
|
|
-----
|
|
|
|
;olib(a)==1
|
|
|
|
|
|
Pattern D611
|
|
|
|
xXOo forestall snapback threat, securing eye
|
|
XO.O
|
|
.O*X
|
|
----
|
|
|
|
:8,-,value(60)
|
|
|
|
xXOo
|
|
XO.O
|
|
.O*A
|
|
----
|
|
|
|
;lib(A) == 2
|
|
|
|
|
|
Pattern D612
|
|
|
|
?OOO? comb formation
|
|
O.X.O
|
|
O.*.O
|
|
-----
|
|
|
|
:8,-,value(50)
|
|
|
|
|
|
Pattern D613
|
|
|
|
?OOO? comb formation
|
|
O.*.O
|
|
O.X.O
|
|
-----
|
|
|
|
:8,-,value(50)
|
|
|
|
|
|
Pattern D614
|
|
|
|
oOo initiate ko to attempt for an extra eye
|
|
*.O
|
|
XOX
|
|
---
|
|
|
|
:8,-,value(30)
|
|
|
|
oOo
|
|
*.O
|
|
AOX
|
|
---
|
|
|
|
;oplay_defend(*,A) != WIN
|
|
|
|
|
|
Pattern D614b
|
|
# gf New pattern. (3.1.9)
|
|
|
|
ooOOo attempt to live without ko
|
|
o...O
|
|
.*XOX
|
|
-----
|
|
|
|
:8,-,value(31)
|
|
|
|
|
|
Pattern D615
|
|
|
|
XOo? secure eye shape against snapback threat
|
|
O.O?
|
|
O.*.
|
|
----
|
|
|
|
:8,-,value(50)
|
|
|
|
XOo?
|
|
A.O?
|
|
A.*b
|
|
----
|
|
|
|
;lib(A)==2 && xplay_attack(*,b,b)
|
|
|
|
|
|
Pattern D616
|
|
|
|
oOX?? secure eye with ko
|
|
O.OX?
|
|
*O.oX
|
|
-----
|
|
|
|
:8,-,value(25)
|
|
|
|
oOX??
|
|
O.OX?
|
|
*O.oX
|
|
-----
|
|
|
|
;xlib(*)>1
|
|
|
|
|
|
Pattern D616a
|
|
# higher value than D616 for owl.tst number 183 where this defense
|
|
# gives fewer ko threats
|
|
|
|
??oOX?? secure one eye with ko
|
|
?.O.OX?
|
|
.X*O.oX
|
|
-------
|
|
|
|
:8,-,value(45)
|
|
|
|
??oOX??
|
|
?.O.OX?
|
|
.X*O.oX
|
|
-------
|
|
|
|
;xlib(*)>1
|
|
|
|
|
|
Pattern D617
|
|
|
|
ooOX?? secure eye with ko
|
|
*O.OX?
|
|
XXO.oX
|
|
------
|
|
|
|
:8,-,value(25)
|
|
|
|
ooOX??
|
|
*O.OX?
|
|
AAO.oX
|
|
------
|
|
|
|
;lib(A)<=2
|
|
|
|
|
|
Pattern D618
|
|
|
|
oOX?? take ko to make eye
|
|
O.OX?
|
|
XOX*X
|
|
-----
|
|
|
|
:8,-,value(25)
|
|
|
|
oOX??
|
|
O.OX?
|
|
AOX*X
|
|
-----
|
|
|
|
;lib(A)<=2
|
|
|
|
|
|
Pattern D619
|
|
|
|
oOX capture to defend and maybe make eye
|
|
OX*
|
|
.OX
|
|
---
|
|
|
|
:8,-,value(39)
|
|
|
|
|
|
Pattern D620
|
|
|
|
XOo? defend eye from collapse
|
|
O.O*
|
|
OO.X
|
|
----
|
|
|
|
:8,-,value(72)
|
|
|
|
XOo?
|
|
a.O*
|
|
aa.B
|
|
----
|
|
|
|
;lib(a)==2 && lib(B)==3
|
|
|
|
|
|
Pattern D621
|
|
|
|
?O?? threaten two eyes simultaneously
|
|
O.O?
|
|
oO*X
|
|
O..?
|
|
----
|
|
|
|
:8,-,value(45)
|
|
|
|
|
|
Pattern D622
|
|
|
|
*OX? solidify eye and threaten to make more on the edge
|
|
OXOo
|
|
....
|
|
----
|
|
|
|
:8,n,value(45)
|
|
|
|
*OA?
|
|
OXOo
|
|
b...
|
|
----
|
|
|
|
;!attack(A) && oplay_attack(*,b,b)
|
|
|
|
|
|
Pattern D623
|
|
|
|
?XxOO? make one eye
|
|
?XO.*X
|
|
..xO..
|
|
------
|
|
|
|
:8,s,value(95)
|
|
|
|
?XbOO?
|
|
?XO.*X
|
|
..aO..
|
|
------
|
|
|
|
; !x_somewhere(a) || !x_somewhere(b)
|
|
|
|
|
|
Pattern D624
|
|
# tm added (3.1.14)
|
|
# Needed in trevor:403
|
|
|
|
O.?? Block on first line to make eye.
|
|
O.OX
|
|
ox*?
|
|
----
|
|
|
|
:8,-,value(40)
|
|
|
|
|
|
Pattern D625
|
|
# gf New pattern. (3.1.14)
|
|
# gf Revised constraint. (3.3.6)
|
|
|
|
O*o prevent eye stealing capture
|
|
XO.
|
|
---
|
|
|
|
:8,n,value(45)
|
|
|
|
a*o
|
|
XOb
|
|
---
|
|
|
|
;lib(a)==1 && !obvious_false_oeye(b)
|
|
|
|
|
|
Pattern D626
|
|
# tm New pattern. (3.1.15)
|
|
# special position - see ld_owl:188
|
|
|
|
OOX.|
|
|
*..X|
|
|
----+
|
|
|
|
:8,-,value(45)
|
|
|
|
|
|
Pattern D627
|
|
# tm New pattern (3.1.15) (see maeda:100)
|
|
|
|
|.OX
|
|
|O.O
|
|
|..O
|
|
|X*.
|
|
|
|
:8,-,value(45)
|
|
|
|
|.OX
|
|
|O.O
|
|
|B.O
|
|
|A*.
|
|
|
|
; oplay_defend(*,A) && oplay_attack(*,B,A)
|
|
|
|
|
|
Pattern D628
|
|
# tm New pattern (3.1.15)
|
|
|
|
|OO
|
|
|.*
|
|
|O.
|
|
|
|
:8,-,value(80)
|
|
|
|
|OO
|
|
|.*
|
|
|OA
|
|
|
|
; !xplay_attack(*,*) && oplay_attack(*,A,A)
|
|
|
|
|
|
Pattern D629
|
|
# tm New Pattern (3.1.15)
|
|
|
|
|xX? make an eye on the edge.
|
|
|.OO
|
|
|*.O
|
|
|..O
|
|
|..O
|
|
|xX?
|
|
|
|
:8,s,value(65)
|
|
|
|
|
|
Pattern D630
|
|
# tm New Pattern (3.1.15)
|
|
# gf This was classified as a 0 (zero) pattern. Removed class. (3.1.18)
|
|
# tm added b category (3.1.18)
|
|
|
|
.*O Cut off black stone
|
|
OX?
|
|
???
|
|
---
|
|
|
|
:8,b,value(65)
|
|
|
|
.*O
|
|
OA?
|
|
???
|
|
---
|
|
|
|
; defend(A) && oplay_attack(*,A)
|
|
|
|
|
|
Pattern D631
|
|
# tm New Pattern (3.1.15)
|
|
|
|
OOOO funny edge capture.
|
|
.XX.
|
|
.*O.
|
|
----
|
|
|
|
:8,s,value(75)
|
|
|
|
OOOO
|
|
.XC.
|
|
A*OB
|
|
----
|
|
|
|
; oplay_attack(*,C)
|
|
; && oplay_defend(*,A,*)
|
|
; && oplay_defend(*,B,*)
|
|
|
|
|
|
Pattern D632
|
|
# tm New Pattern (3.1.15)
|
|
|
|
OOX? Eat lunch with snapback.
|
|
OXOX
|
|
OX.*
|
|
----
|
|
|
|
:8,-,value(65)
|
|
|
|
OOX?
|
|
OXOA
|
|
OX.*
|
|
----
|
|
|
|
; oplay_attack(*,A)
|
|
|
|
|
|
Pattern D633
|
|
# tm New pattern (3.1.15)
|
|
|
|
OOoO? vital point for eye shape
|
|
O..OO
|
|
..*..
|
|
-----
|
|
|
|
:8,-,value(65)
|
|
|
|
|
|
Pattern D634
|
|
# tm New pattern (3.1.15)
|
|
# only really useful if short of liberties.
|
|
|
|
XXO Hane in sente
|
|
.*.
|
|
---
|
|
|
|
:8,-,value(70)
|
|
|
|
BBA
|
|
.*.
|
|
---
|
|
|
|
; lib(A) < 4 && oplay_attack(*,B)
|
|
|
|
|
|
Pattern D635
|
|
# tm New Pattern (3.1.15)
|
|
|
|
?OO?
|
|
O..O
|
|
O*.O
|
|
....
|
|
----
|
|
|
|
:8,-,value(65)
|
|
|
|
?OO?
|
|
O.BO
|
|
O*FO
|
|
aecD
|
|
----
|
|
|
|
; !oplay_defend(*,a,B,c,D,e,F,a)
|
|
|
|
|
|
Pattern D636
|
|
# tm New Pattern (3.1.15)
|
|
|
|
OOO.X special eye shape on edge.
|
|
...*.
|
|
-----
|
|
|
|
:8,-,value(65)
|
|
|
|
OOOaX
|
|
..B*.
|
|
-----
|
|
|
|
; oplay_attack(*,a,B,a)
|
|
|
|
|
|
Pattern D637
|
|
# tm New Pattern (3.1.20) (see strategy4:171)
|
|
# FIXME: This is due to a defect in the eye space handing.
|
|
# This point should come through as a vital point.
|
|
|
|
O*.
|
|
XO?
|
|
|
|
:8,-,value(65)
|
|
|
|
A*d
|
|
bO?
|
|
|
|
; ko(b) && owl_topological_eye(*,A) > 2 && !obvious_false_oeye(d)
|
|
|
|
|
|
Pattern D638
|
|
#evand new pattern 3.3.12
|
|
|
|
?o.x attempt to escape or make eyeshape by forcing.
|
|
oOX*
|
|
O.O.
|
|
----
|
|
|
|
:8,-,value(45)
|
|
|
|
|
|
Pattern D639
|
|
# gf New pattern. See owl1:285. (3.3.17)
|
|
|
|
oO*X eat lunch without getting a false eye
|
|
XX..
|
|
----
|
|
|
|
:8,-,value(50)
|
|
|
|
oO*X
|
|
AA..
|
|
----
|
|
|
|
;!oplay_defend(*,A)
|
|
|
|
|
|
Pattern D640
|
|
# gf New pattern. (3.3.20)
|
|
# Compare D720.
|
|
|
|
?O*.o try to make eye on edge
|
|
O....
|
|
-----
|
|
|
|
:8,-,value(56)
|
|
|
|
?O*bo
|
|
Oa...
|
|
-----
|
|
|
|
;!obvious_false_oeye(a) && !oplay_attack(b,*,*)
|
|
|
|
|
|
Pattern D641
|
|
# evand New pattern. (3.3.20)
|
|
|
|
xXOO.
|
|
..X*O
|
|
.....
|
|
-----
|
|
|
|
:8,-,value(75)
|
|
|
|
xXOOa
|
|
..X*O
|
|
....b
|
|
-----
|
|
|
|
;!obvious_false_oeye(a) || !obvious_false_oeye(b)
|
|
|
|
|
|
Pattern D642
|
|
# tm New Pattern (3.1.22) (see trevord:910)
|
|
# gf Revised constraint. (3.5.3)
|
|
|
|
X*O? Extend side eye-space in sente
|
|
?..o
|
|
----
|
|
|
|
:8,-,value(80)
|
|
|
|
C*O?
|
|
?bao
|
|
----
|
|
|
|
;!obvious_false_oeye(a)
|
|
;&& oplay_attack(*,b,C) && !attack(C)
|
|
|
|
|
|
Pattern D643
|
|
# spl added 3.3.22
|
|
|
|
?oO try to make 2 eyes
|
|
OO.
|
|
o.*
|
|
---
|
|
|
|
:8,-,value(40)
|
|
|
|
|
|
Pattern D643b
|
|
# gf New pattern. (3.5.5)
|
|
|
|
??OO try to make 2 eyes
|
|
OO..
|
|
o.*.
|
|
----
|
|
|
|
:8,-,value(40)
|
|
|
|
|
|
Pattern D644
|
|
# gf New pattern. (3.5.3)
|
|
# See seki:111.
|
|
|
|
oOOo make one definite eye
|
|
.*.O
|
|
X..O
|
|
----
|
|
|
|
:8,-,value(30)
|
|
|
|
|
|
Pattern D645
|
|
# gf New pattern. (3.7.2)
|
|
# See semeai:117-119.
|
|
|
|
OOX secure eye and capture lunch
|
|
.*.
|
|
---
|
|
|
|
:8,-,value(96)
|
|
|
|
OOB
|
|
a*.
|
|
---
|
|
|
|
;owl_proper_eye(a) && does_attack(*,B) && !obvious_false_oeye(B)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Make eyeshape in the center #
|
|
# #
|
|
#########################################################
|
|
# #
|
|
# Moves that do not necessarily expand the eyeshape #
|
|
# but try to make what exists yield two eyes #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern D700
|
|
|
|
oOo make eyeshape
|
|
O.O
|
|
.*.
|
|
|
|
:|,-,value(75)
|
|
|
|
|
|
Pattern D701
|
|
|
|
?*? half eye sometimes missed by optics
|
|
O.O
|
|
?O.
|
|
|
|
:8,-,value(70)
|
|
|
|
?*?
|
|
OaB
|
|
?Ob
|
|
|
|
; (owl_topological_eye(a,B)>=2) && (owl_topological_eye(b,B)==2)
|
|
|
|
|
|
Pattern D702
|
|
|
|
?X? half eye sometimes missed by optics
|
|
O*O
|
|
.O.
|
|
|
|
:8,n,value(70)
|
|
|
|
?X?
|
|
O*B
|
|
aOb
|
|
|
|
; (owl_topological_eye(a,B)==2)
|
|
; && ((owl_topological_eye(b,B)==2) || (owl_topological_eye(b,B)==3))
|
|
|
|
|
|
Pattern D703
|
|
|
|
?O* defend half eye (reverse sente)
|
|
o.O
|
|
?o?
|
|
|
|
:8,-,value(70)
|
|
|
|
?O*
|
|
oaB
|
|
?o?
|
|
|
|
;owl_topological_eye(a,B)==3 && does_attack(*,B)
|
|
|
|
|
|
Pattern D704
|
|
|
|
oO. half eye sometimes missed
|
|
O.*
|
|
?o?
|
|
|
|
:8,-,value(35)
|
|
|
|
oOb
|
|
Ba*
|
|
?o?
|
|
|
|
; owl_topological_eye(a,B)==3
|
|
; && safe_xmove(b) && safe_xmove(*) && oplay_attack(*,b,b)
|
|
|
|
|
|
Pattern D704b
|
|
# gf Revised constraint. (3.1.15)
|
|
# gf Revised constraint. (3.1.23)
|
|
# pp Revised pattern. (3.3.18)
|
|
|
|
oO.? half eye sometimes missed
|
|
O.*?
|
|
----
|
|
|
|
:8,-,value(35)
|
|
|
|
cOb?
|
|
O.*?
|
|
----
|
|
|
|
; (safe_xmove(b) || safe_xmove(*)) && oplay_attack(*,b,b)
|
|
; && (o_somewhere(c) || !safe_xmove(c))
|
|
|
|
|
|
Pattern D705
|
|
|
|
O.X block to cut off one stone
|
|
X*o
|
|
---
|
|
|
|
:8,-,value(45)
|
|
|
|
O.X
|
|
a*o
|
|
---
|
|
|
|
; does_attack(*,a)
|
|
|
|
|
|
Pattern D706
|
|
|
|
?O* save a half eye against an atari
|
|
o.O
|
|
?o?
|
|
|
|
:8,n,value(35)
|
|
|
|
?B*
|
|
oba
|
|
?o?
|
|
|
|
; lib(a)==2 && owl_topological_eye(b,B)==3
|
|
|
|
|
|
Pattern D707
|
|
|
|
XX? make half eye with sente
|
|
O*O
|
|
O.O
|
|
o?o
|
|
|
|
:8,-,value(77)
|
|
|
|
AA?
|
|
O*O
|
|
O.O
|
|
o?o
|
|
|
|
; oplay_attack(*,A)
|
|
|
|
|
|
Pattern D708
|
|
|
|
?X?? make half eye with sente
|
|
O*O?
|
|
O.O?
|
|
?.oo
|
|
??Oo
|
|
|
|
:8,-,value(77)
|
|
|
|
?A??
|
|
O*O?
|
|
O.O?
|
|
?.oo
|
|
??Oo
|
|
|
|
; oplay_attack(*,A)
|
|
|
|
|
|
Pattern D709
|
|
|
|
oOOx eat lunch in the right direction
|
|
.X*.
|
|
?OOx
|
|
|
|
:8,-,value(50)
|
|
|
|
oOOx
|
|
.A*a
|
|
?OOx
|
|
|
|
;olib(a)<=2 && does_attack(*,A)
|
|
|
|
|
|
Pattern D710
|
|
# gf Revised constraint. (3.1.15)
|
|
|
|
OO* try to make center eye
|
|
O..
|
|
?OO
|
|
|
|
:8,-,value(30)
|
|
|
|
OO*
|
|
O.a
|
|
?OO
|
|
|
|
;!owl_big_eyespace(a) && !obvious_false_oeye(a)
|
|
|
|
|
|
Pattern D711
|
|
|
|
O? capture nakade, might give new possibilities
|
|
X*
|
|
|
|
:8,-,value(25)
|
|
|
|
O?
|
|
A*
|
|
|
|
;lib(A)==1 && wormsize(A)>=3
|
|
|
|
|
|
Pattern D712
|
|
|
|
?O capture nakade, might give new possibilities
|
|
X*
|
|
|
|
:8,-,value(25)
|
|
|
|
?O
|
|
A*
|
|
|
|
;lib(A)==1 && wormsize(A)>=3
|
|
|
|
|
|
Pattern D713
|
|
|
|
.OO? make one eye
|
|
*..O
|
|
.OO?
|
|
|
|
:-,-,value(50)
|
|
|
|
.OO?
|
|
*.aB
|
|
.OO?
|
|
|
|
;owl_topological_eye(a,B)==3
|
|
|
|
|
|
Pattern D714
|
|
|
|
?O*? make one eye
|
|
O..O
|
|
.OO?
|
|
|
|
:8,n,value(35)
|
|
|
|
|
|
Pattern D715
|
|
|
|
O* defend against atari inside eyespace
|
|
|
|
:-,-,value(35)
|
|
|
|
a*
|
|
|
|
; lib(a)==2 && xlib(*)>1 && owl_big_eyespace(*)
|
|
|
|
|
|
Pattern D715b
|
|
# gf New pattern. (3.1.15)
|
|
|
|
O.*
|
|
XO. defend against atari inside eyespace on edge
|
|
---
|
|
|
|
:8,-,value(36)
|
|
|
|
O.*
|
|
XOa
|
|
---
|
|
|
|
;xlib(a)>1 && owl_big_eyespace(a) && oplay_attack(*,a,a)
|
|
|
|
|
|
Pattern D715c
|
|
# gf New pattern. (3.3.20)
|
|
|
|
.X* defend against atari inside eyespace
|
|
O.O
|
|
XOo
|
|
|
|
:8,-,value(60)
|
|
|
|
.B*
|
|
a.O
|
|
XOo
|
|
|
|
;lib(a)==2 && lib(B)==3 && owl_big_eyespace(*)
|
|
|
|
|
|
Pattern D716
|
|
# gf New pattern. (3.1.11)
|
|
|
|
?*OO secure eye
|
|
O..o
|
|
?oOX
|
|
|
|
:8,-,value(60)
|
|
|
|
?*OO
|
|
O.ao
|
|
?oOX
|
|
|
|
;owl_eyespace(a) && !owl_big_eyespace(a)
|
|
|
|
|
|
Pattern D717
|
|
# gf New pattern. (3.1.12)
|
|
# pp Modified (3.3.16)
|
|
|
|
oOXx eat lunch to make certain eye
|
|
OXOx
|
|
O.*x
|
|
|
|
:8,-,value(81)
|
|
|
|
oOXx
|
|
OAOx
|
|
O.*x
|
|
|
|
;!oplay_defend(*,A)
|
|
|
|
|
|
Pattern D718
|
|
# tm New pattern (3.1.14)
|
|
# see owl:111
|
|
|
|
?X?
|
|
O*O Expand eye space
|
|
...
|
|
OO.
|
|
|
|
:8,-,value(60)
|
|
|
|
|
|
Pattern D720
|
|
# tm New pattern (3.1.16)
|
|
|
|
?O.o
|
|
O.*o
|
|
|
|
:8,-,value(55)
|
|
|
|
?O.o
|
|
Oa*o
|
|
|
|
;owl_proper_eye(a)
|
|
|
|
|
|
Pattern D721
|
|
# nn New pattern. (3.3.9)
|
|
|
|
OoO good shape can help
|
|
o.O
|
|
O*X
|
|
|
|
:8,-,value(55)
|
|
|
|
|
|
Pattern D722
|
|
# evand New pattern. (3.3.18)
|
|
|
|
?O*X #half eye in sente
|
|
O.O?
|
|
?O??
|
|
|
|
:8,-,value(65)
|
|
|
|
?O*A
|
|
ObO?
|
|
?O??
|
|
|
|
;!obvious_false_oeye(b) && oplay_attack(*,A)
|
|
|
|
|
|
Pattern D723
|
|
# gf New pattern. (3.7.9)
|
|
|
|
?..o
|
|
.*.O protect eyespace
|
|
...O
|
|
oOOX
|
|
|
|
:8,-,value(75)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Make eyeshape in the corner #
|
|
# #
|
|
#########################################################
|
|
# #
|
|
# Moves that do not necessarily expand the eyeshape #
|
|
# but try to make what exists yield two eyes #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern D800
|
|
|
|
O...| claim the corner to live
|
|
.*..|
|
|
....|
|
|
....|
|
|
----+
|
|
|
|
:8,-,value(60)
|
|
|
|
|
|
Pattern D801
|
|
|
|
XO.| defend corner eye
|
|
.*.|
|
|
---+
|
|
|
|
:8,-,value(35)
|
|
|
|
|
|
Pattern D802
|
|
|
|
Oo.| defend corner eye
|
|
X*.|
|
|
---+
|
|
|
|
:8,-,value(35)
|
|
|
|
|
|
Pattern D803
|
|
|
|
.O.| defend corner eye
|
|
X*.|
|
|
---+
|
|
|
|
:8,-,value(35)
|
|
|
|
|
|
Pattern D804
|
|
# We need this pattern because the optics can't be relied on coming up
|
|
# with it when it's vital. Taking it out should cause some failures
|
|
# in the ld_owl test suite.
|
|
|
|
OOO| take corner eye
|
|
.*.|
|
|
---+
|
|
|
|
:8,-,value(25)
|
|
|
|
OOO|
|
|
a*.|
|
|
---+
|
|
|
|
;!obvious_false_oeye(a)
|
|
|
|
|
|
Pattern D804a
|
|
#spl 3.5.1 owl1:320
|
|
|
|
|OO? defend eye in the corner
|
|
|.*X
|
|
+---
|
|
|
|
:8,-,value(75)
|
|
|
|
|aa?
|
|
|.*X
|
|
+---
|
|
|
|
;lib(a) > 2
|
|
|
|
|
|
Pattern D804b
|
|
# This is kind of obscure, but sometimes D804 leads to a shortage of
|
|
# liberties, e.g. in the position
|
|
#
|
|
# .XXXXX..|
|
|
# .X.OOXXX|
|
|
# XXOOXOOO|
|
|
# X.O.X...|
|
|
# --------+
|
|
#
|
|
# After O playing on the 1-2 point, X fills an outer liberty and O dies.
|
|
# This pattern avoids that bitter fate.
|
|
|
|
XOOO| take corner eye
|
|
X*..|
|
|
----+
|
|
|
|
:8,-,value(26)
|
|
|
|
|
|
Pattern D805
|
|
# tm modified (3.1.15)
|
|
# s category incorrectly necessary - see ld_owl:53
|
|
# see also trevor:590 for underlying problem.
|
|
# tm modified back (3.1.16)
|
|
# trevor:590 solved.
|
|
|
|
|oOO?
|
|
|...O try to secure corner
|
|
|.*.o
|
|
+----
|
|
|
|
:8,-,value(98)
|
|
|
|
|
|
Pattern D805a
|
|
|
|
|oOOo
|
|
|...o try to secure corner
|
|
|.*.o
|
|
+----
|
|
|
|
:8,-,value(45)
|
|
|
|
|
|
Pattern D805b
|
|
|
|
|oO.?
|
|
|.*.O try to secure corner
|
|
|...o
|
|
+----
|
|
|
|
:8,-,value(30)
|
|
|
|
|
|
Pattern D806
|
|
|
|
|.XOO miai eyes
|
|
|.*..
|
|
+----
|
|
|
|
:8,-,value(60)
|
|
|
|
|bAOO
|
|
|.*.a
|
|
+----
|
|
|
|
;attack(A) && !oplay_defend(*,a,b,A)
|
|
|
|
|
|
Pattern D807
|
|
|
|
|.XOO miai eyes with ko
|
|
|.*..
|
|
+----
|
|
|
|
:8,-,value(60)
|
|
|
|
|bAOO
|
|
|.*.a
|
|
+----
|
|
|
|
;attack(A) && oplay_defend(*,a,b,A) != WIN
|
|
|
|
|
|
Pattern D808
|
|
|
|
|.XOO life (but possibly unnecessarily small)
|
|
|.*.O
|
|
+----
|
|
|
|
:8,-,value(65)
|
|
|
|
|.AOO
|
|
|.*.O
|
|
+----
|
|
|
|
;does_attack(*,A)
|
|
|
|
|
|
Pattern D809
|
|
|
|
|.XOO might give seki
|
|
|.*.O
|
|
+----
|
|
|
|
:8,-,value(25)
|
|
|
|
|.AOO
|
|
|.*.O
|
|
+----
|
|
|
|
;oplay_attack(*,A)
|
|
|
|
|
|
Pattern D810
|
|
|
|
|.XOoo miai eyes or better
|
|
|.*...
|
|
+-----
|
|
|
|
:8,-,value(55)
|
|
|
|
|aXOoo
|
|
|.*...
|
|
+-----
|
|
|
|
;!oplay_defend(*,a,a)
|
|
|
|
|
|
Pattern D811
|
|
|
|
|ooO? miai eyes or better
|
|
|o.Oo
|
|
|.*..
|
|
+----
|
|
|
|
:8,-,value(60)
|
|
|
|
|
|
Pattern D811a
|
|
# tm New Pattern (3.1.15) (see cho1:200)
|
|
|
|
|oO?? miai eyes or better
|
|
|o.O?
|
|
|.*.?
|
|
+----
|
|
|
|
:8,-,value(60)
|
|
|
|
|
|
Pattern D812
|
|
|
|
|oo? work around eyespace generation weakness
|
|
|.OX
|
|
|*XO
|
|
+---
|
|
|
|
:8,-,value(70)
|
|
|
|
|
|
Pattern D813
|
|
|
|
|.OX descend in corner
|
|
|.*?
|
|
+---
|
|
|
|
:8,-,value(30)
|
|
|
|
|
|
Pattern D814
|
|
|
|
|.O? proper defense of L+1 shape
|
|
|.OO
|
|
|..O
|
|
|.*O
|
|
|...
|
|
+---
|
|
|
|
:8,-,value(85)
|
|
|
|
|
|
Pattern D815
|
|
|
|
|.OO? proper defense of L+1 shape
|
|
|..O?
|
|
|*.OO
|
|
|....
|
|
+----
|
|
|
|
:8,-,value(85)
|
|
|
|
|
|
Pattern D816
|
|
|
|
|.OX important shape point
|
|
|X.O
|
|
|*.O
|
|
|...
|
|
+---
|
|
|
|
:8,s,value(35)
|
|
|
|
|
|
Pattern D817
|
|
|
|
|.OX important shape point
|
|
|X.O
|
|
|*.O
|
|
|...
|
|
+---
|
|
|
|
:8,s,value(45)
|
|
|
|
|.aX
|
|
|X.O
|
|
|*.O
|
|
|...
|
|
+---
|
|
|
|
;attack(a) && ! oplay_attack(*,a)
|
|
|
|
|
|
Pattern D818
|
|
|
|
|O?? throw in to improve eye potential
|
|
|.OO
|
|
|*X.
|
|
+---
|
|
|
|
:8,s,value(75)
|
|
|
|
|O??
|
|
|.OO
|
|
|*A.
|
|
+---
|
|
|
|
;oplay_defend(*,A) != WIN
|
|
|
|
|
|
Pattern D818b
|
|
|
|
|O?? throwin risky, try to live without
|
|
|.OO
|
|
|.X*
|
|
+---
|
|
|
|
:8,s,value(76)
|
|
|
|
|a??
|
|
|.OO
|
|
|.X*
|
|
+---
|
|
|
|
;lib(a) == 2
|
|
|
|
|
|
Pattern D819
|
|
|
|
|ooO
|
|
|*.O secure corner eye
|
|
|.O.
|
|
+---
|
|
|
|
:8,-,value(30)
|
|
|
|
|
|
Pattern D820
|
|
|
|
|oo?? play ko to enlarge eyespace
|
|
|.OX?
|
|
|OX*X
|
|
+----
|
|
|
|
:8,s,value(40)
|
|
|
|
|
|
Pattern D820b
|
|
|
|
|oXO? play ko to enlarge eyespace
|
|
|.OX?
|
|
|OX*X
|
|
+----
|
|
|
|
:8,s,value(40)
|
|
|
|
|oAO?
|
|
|.OX?
|
|
|OX*X
|
|
+----
|
|
|
|
;!oplay_defend(*,A)
|
|
|
|
|
|
Pattern D821
|
|
|
|
|oO?? might be passive, but almost certain life
|
|
|o.O?
|
|
|.*.O
|
|
|..oo
|
|
+----
|
|
|
|
:8,-,value(60)
|
|
|
|
|
|
Pattern D822
|
|
|
|
|o.O? often best way to capture lunch
|
|
|O*OO
|
|
|.X.X
|
|
+----
|
|
|
|
:8,-,value(60)
|
|
|
|
|o.O?
|
|
|O*OO
|
|
|.X.A
|
|
+----
|
|
|
|
;lib(A)==1
|
|
|
|
|
|
Pattern D823a
|
|
|
|
|OOO? form false eye trying to at least get seki
|
|
|.*.O
|
|
|OXXO
|
|
|.xxO
|
|
+----
|
|
|
|
:8,-,value(45)
|
|
|
|
|
|
Pattern D823b
|
|
|
|
|OOOO at least seki
|
|
|*xxO
|
|
|OXXO
|
|
|.XxO
|
|
+----
|
|
|
|
:8,-,value(46)
|
|
|
|
|
|
Pattern D824
|
|
|
|
|OOO? at least secure seki
|
|
|.O*O
|
|
|OXXO
|
|
|.X.O
|
|
+----
|
|
|
|
:8,-,value(45)
|
|
|
|
|
|
Pattern D825
|
|
|
|
|ooO threaten to make eyes in the corner
|
|
|.OX
|
|
|*X.
|
|
|...
|
|
+---
|
|
|
|
:8,-,value(85)
|
|
|
|
|ooO
|
|
|.aX
|
|
|*B.
|
|
|...
|
|
+---
|
|
|
|
;!oplay_attack(*,a) && oplay_attack(*,B)
|
|
|
|
|
|
Pattern D826
|
|
|
|
|ooo if nothing else works, make an eye in the corner
|
|
|*.o
|
|
|.O?
|
|
+---
|
|
|
|
:8,-,value(25)
|
|
|
|
|ooo
|
|
|*ao
|
|
|.O?
|
|
+---
|
|
|
|
;oplay_attack(*,a,a)
|
|
|
|
|
|
Pattern D827
|
|
|
|
|.XX??? special corner shape
|
|
|.OOXX?
|
|
|.*.OOX
|
|
|.....o
|
|
+------
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D828
|
|
|
|
|ooO? block on 1-2 with atari
|
|
|o.OX
|
|
|.*X.
|
|
+----
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D829
|
|
|
|
|OO?? special corner shape, setting up ko
|
|
|..O?
|
|
|.O..
|
|
|..*.
|
|
+----
|
|
|
|
:8,-,value(55)
|
|
|
|
|aa??
|
|
|..O?
|
|
|.O..
|
|
|..*.
|
|
+----
|
|
|
|
;lib(a)==2
|
|
|
|
|
|
Pattern D830
|
|
# gf New pattern. (3.1.1)
|
|
|
|
|OO? special corner shape, setting up ko
|
|
|..O
|
|
|XOo
|
|
|*.O
|
|
+---
|
|
|
|
:8,-,value(55)
|
|
|
|
|aa?
|
|
|..O
|
|
|XOo
|
|
|*.O
|
|
+---
|
|
|
|
;lib(a)==2
|
|
|
|
|
|
Pattern D831
|
|
|
|
|OOo? (at least) ko
|
|
|.XOo
|
|
|OXXO
|
|
|.*xO
|
|
+----
|
|
|
|
:8,s,value(35)
|
|
|
|
|
|
Pattern D832
|
|
# gf New pattern. (3.1.9)
|
|
|
|
|O?? throw in to improve eye potential
|
|
|.Oo
|
|
|*XX
|
|
+---
|
|
|
|
:8,s,value(35)
|
|
|
|
|O??
|
|
|.Oo
|
|
|*AX
|
|
+---
|
|
|
|
;oplay_defend(*,A) != WIN
|
|
|
|
|
|
Pattern D833
|
|
# tm added (3.1.13)
|
|
# useful in manyfaces:8
|
|
# gf Revised pattern. (3.1.14)
|
|
|
|
?O?| vital corner point.
|
|
O.O|
|
|
O.x|
|
|
O.*|
|
|
o..|
|
|
---+
|
|
|
|
:8,-,value(40)
|
|
|
|
|
|
Pattern D834
|
|
# gf New pattern. (3.1.14)
|
|
|
|
?O?| often best defense
|
|
O.O|
|
|
O..|
|
|
O*X|
|
|
...|
|
|
---+
|
|
|
|
:8,-,value(40)
|
|
|
|
|
|
Pattern D835
|
|
# tm New Pattern (3.1.15) (see trevora:400)
|
|
|
|
|.*. Special corner pattern
|
|
|.XO
|
|
|...
|
|
|...
|
|
+---
|
|
|
|
:8,-,value(65)
|
|
|
|
|
|
Pattern D836
|
|
# tm New Pattern (3.1.15)
|
|
|
|
|O.
|
|
|.*
|
|
+--
|
|
|
|
:8,-,value(65)
|
|
|
|
|OA
|
|
|.*
|
|
+--
|
|
|
|
; oplay_attack(*,A,A)
|
|
|
|
|
|
Pattern D837
|
|
# tm New Pattern (3.1.16)
|
|
# see trevor:200
|
|
|
|
??oO.| special corner defend at 2-2
|
|
?O...|
|
|
o.X..|
|
|
O..*.|
|
|
.....|
|
|
-----+
|
|
|
|
:8,-,value(55)
|
|
|
|
|
|
Pattern D838
|
|
# tm New Pattern (3.1.16)
|
|
|
|
|.*?
|
|
|.XO
|
|
|OXO
|
|
|.O?
|
|
+---
|
|
|
|
:8,-,value(55)
|
|
|
|
|.*?
|
|
|.AO
|
|
|OXO
|
|
|.O?
|
|
+---
|
|
|
|
;oplay_attack(*,A)
|
|
|
|
|
|
Pattern D839
|
|
# gf New pattern. (3.3.18)
|
|
|
|
|.X?? Capture lunch with threat to make second eye
|
|
|.OO?
|
|
|.XO?
|
|
|*XOo
|
|
|...o
|
|
+----
|
|
|
|
:8,-,value(88)
|
|
|
|
|.X??
|
|
|cOO?
|
|
|.AO?
|
|
|*AOo
|
|
|.b.o
|
|
+----
|
|
|
|
;does_attack(*,A) && xplay_attack(b,*,c,A)
|
|
|
|
|
|
Pattern D840
|
|
# gf New pattern. (3.5.3)
|
|
# See seki:203.
|
|
|
|
|OO??
|
|
|.*O?
|
|
|XXOO make seki
|
|
|.O.O
|
|
+----
|
|
|
|
:8,-,value(25)
|
|
|
|
|
|
Pattern D841
|
|
# gf New pattern. (3.5.5)
|
|
# See ld_owl:503.
|
|
|
|
|..O?
|
|
|..O? make eyeshape
|
|
|..OX
|
|
|.*..
|
|
|....
|
|
+----
|
|
|
|
:8,-,value(45)
|
|
|
|
|
|
Pattern D842
|
|
# gf New pattern. (3.5.5)
|
|
|
|
???X.|
|
|
?XXO.| aim for ko
|
|
XOO..|
|
|
...*.|
|
|
.....|
|
|
-----+
|
|
|
|
:8,-,value(76)
|
|
|
|
|
|
Pattern D843
|
|
# pp New pattern (3.5.5)
|
|
|
|
|OOOOO workaround lunch problem (the eye is not considered a unit)
|
|
|..*.O
|
|
|.X..O
|
|
+-----
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D844
|
|
# gf New pattern. (3.7.2)
|
|
|
|
|.OO partition corner eyespace to avoid bent four complications
|
|
|.*.
|
|
+---
|
|
|
|
:8,-,value(40)
|
|
|
|
|bOO
|
|
|.*a
|
|
+---
|
|
|
|
;owl_proper_eye(a) && owl_proper_eye(b) && owl_big_eyespace(a)
|
|
|
|
|
|
Pattern D845
|
|
# gf New pattern. (3.7.2)
|
|
# See ld_owl:321.
|
|
|
|
|OO.o converse to A1305b
|
|
|*X.O
|
|
|...O
|
|
+----
|
|
|
|
:8,s,value(35)
|
|
|
|
|aa.o
|
|
|*X.O
|
|
|...O
|
|
+----
|
|
|
|
;lib(a)==2
|
|
|
|
|
|
Pattern D846
|
|
# gf New pattern. (3.7.2)
|
|
# See ld_owl:321.
|
|
|
|
|OO.o followup
|
|
|OX.O
|
|
|.*.O
|
|
+----
|
|
|
|
:8,-,value(35)
|
|
|
|
|
|
Pattern D847
|
|
# gf New pattern. (3.7.2)
|
|
# See ld_owl:321.
|
|
|
|
|OO.o followup
|
|
|OX*O
|
|
|.X.O
|
|
+----
|
|
|
|
:8,-,value(35)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Prevent intrusion #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern D900
|
|
# gf Added constraint. (3.3.20)
|
|
|
|
??O? block on edge
|
|
XO.?
|
|
xX*o
|
|
----
|
|
|
|
:8,-,value(75)
|
|
|
|
??O?
|
|
Xa.?
|
|
xX*o
|
|
----
|
|
|
|
;oplay_attack(*,a)!=WIN
|
|
|
|
|
|
Pattern D902
|
|
|
|
XO. stop connection under
|
|
.*X
|
|
---
|
|
|
|
:8,-,value(80)
|
|
|
|
XO.
|
|
.*A
|
|
---
|
|
|
|
; does_attack(*,A)
|
|
|
|
|
|
#FIXME: D903 & D904 often both match, reducing the number
|
|
# of patterns available for other options. Perhaps reduce
|
|
# the value of one or the other?
|
|
|
|
Pattern D903
|
|
# tm modified (3.1.17)
|
|
|
|
XOX descend to prevent connection
|
|
.*.
|
|
---
|
|
|
|
:8,-,value(85)
|
|
|
|
AOX
|
|
.*.
|
|
---
|
|
|
|
; does_attack(*,A)
|
|
|
|
|
|
Pattern D904
|
|
|
|
XOX hane to prevent connection
|
|
*..
|
|
---
|
|
|
|
:8,-,value(84)
|
|
|
|
AOX
|
|
*..
|
|
---
|
|
|
|
; does_attack(*,A)
|
|
|
|
|
|
Pattern D905
|
|
|
|
*XOX clamp to prevent connection
|
|
....
|
|
----
|
|
|
|
:8,-,value(86)
|
|
|
|
*AOX
|
|
....
|
|
----
|
|
|
|
; does_attack(*,A)
|
|
|
|
|
|
Pattern D906
|
|
# O dragons may not be amalgamated
|
|
|
|
O..O? block connection
|
|
..XOX
|
|
...*.
|
|
-----
|
|
|
|
:8,-,value(45)
|
|
|
|
|
|
Pattern D907
|
|
# O dragons may not be amalgamated
|
|
|
|
O..O? threaten one stone
|
|
.*XOX
|
|
.....
|
|
-----
|
|
|
|
:8,-,value(45)
|
|
|
|
|
|
Pattern D908
|
|
|
|
?OO?? threaten one stone
|
|
O..O?
|
|
.*XOX
|
|
.....
|
|
-----
|
|
|
|
:8,-,value(75)
|
|
|
|
?OO??
|
|
O.aO?
|
|
.*XOX
|
|
.....
|
|
-----
|
|
|
|
;oplay_attack(*,a,a)
|
|
|
|
|
|
Pattern D909
|
|
# gf New pattern. (3.1.14)
|
|
|
|
O* stop capture inside eyespace, not ko
|
|
|
|
:-,-,value(55)
|
|
|
|
a*
|
|
|
|
;lib(a)==1 && owl_eyespace(*) && olib(*) > 0
|
|
|
|
|
|
Pattern D910a
|
|
# gf New pattern. (3.1.15)
|
|
|
|
o.O.X block
|
|
.*X..
|
|
.....
|
|
-----
|
|
|
|
:8,-,value(65)
|
|
|
|
|
|
Pattern D910b
|
|
# gf New pattern. (3.1.15)
|
|
|
|
o.O.X block in sente
|
|
.*X..
|
|
.....
|
|
-----
|
|
|
|
:8,-,value(75)
|
|
|
|
obO.X
|
|
.*Xa.
|
|
.....
|
|
-----
|
|
|
|
;xplay_attack(a,*,b,b)
|
|
|
|
|
|
Pattern D911
|
|
# db added (3.3.4)
|
|
|
|
oo???? stop the monkey jump
|
|
oooo??
|
|
.*...X
|
|
..X...
|
|
------
|
|
|
|
:8,-,value(70)
|
|
|
|
ob????
|
|
acdo??
|
|
.*...X
|
|
..X...
|
|
------
|
|
|
|
; o_somewhere(a,b,c,d)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Prevent a cut #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern D1000
|
|
# tm modified (3.1.22)
|
|
|
|
O* prevent opponent's safe cut
|
|
XO
|
|
|
|
:/,-,value(60)
|
|
|
|
B*
|
|
aC
|
|
|
|
; (wormsize(B) > 1 && wormsize(C) > 1)
|
|
; && safe_xmove(*) && !xplay_attack(*,a)
|
|
|
|
|
|
Pattern D1000a
|
|
|
|
O* save large section
|
|
|
|
:-,-,value(95)
|
|
|
|
A*
|
|
|
|
; lib(A) == 1 && wormsize(A) > 2
|
|
|
|
|
|
Pattern D1001
|
|
|
|
X*O connect
|
|
?OX
|
|
|
|
:8,n,value(70)
|
|
|
|
X*O
|
|
?Oa
|
|
|
|
;!attack(a) || (wormsize(a)<=2 && does_attack(*,a))
|
|
|
|
|
|
Pattern D1001b
|
|
|
|
?XOOo
|
|
XO.X*
|
|
x.O..
|
|
-----
|
|
|
|
:8,n,value(71)
|
|
|
|
|
|
Pattern D1002
|
|
# Smaller value if opponent can't cut.
|
|
# gf Revised constraint. (3.1.11)
|
|
|
|
X*O connect
|
|
?OX
|
|
|
|
:8,-,value(35)
|
|
|
|
X*O
|
|
?Oa
|
|
|
|
; !attack(a) && xlib(*) > 1
|
|
|
|
|
|
Pattern D1003
|
|
# Notice similarity with D310a, D310b.
|
|
# tm reduced value (3.1.22) (see trevorc:1440)
|
|
|
|
????
|
|
?*.O hanging connection to protect eyespace
|
|
?.OX
|
|
?oo?
|
|
|
|
:8,-,value(55)
|
|
|
|
????
|
|
?*ab
|
|
?.Oc
|
|
?oo?
|
|
|
|
;lib(b)>1 && oplay_attack(*,a,a) && !xplay_attack_either(*,?,a,a,c)
|
|
|
|
|
|
Pattern D1004
|
|
# Less attractive when making empty triangle.
|
|
# gf Added n classification. (3.1.14)
|
|
# tm Modified constraint (3.1.16)
|
|
# tm Modified constraint (3.1.23)
|
|
# nn Modified constraint (3.3.11)
|
|
|
|
????
|
|
?*.O hanging connection to protect eyespace
|
|
?OOX
|
|
|
|
:8,n,value(69)
|
|
|
|
??D?
|
|
?*ab
|
|
?OOc
|
|
|
|
;(lib(b)>1 && oplay_attack(*,a,a) && !xplay_attack_either(*,?,a,a,c))
|
|
;&& (!x_somewhere(D) || oplay_attack(*,a,D))
|
|
;&& (!legal_xmove(D) || oplay_attack(*,D,D))
|
|
|
|
|
|
Pattern D1004b
|
|
# gf New pattern. (3.1.14)
|
|
|
|
----
|
|
oooo sometimes useful to partion eyespace on edge or in corner
|
|
.*.O
|
|
oOOX
|
|
|
|
:8,-,value(45)
|
|
|
|
|
|
Pattern D1005
|
|
|
|
.... repair shape in center
|
|
.*OX
|
|
.OXx
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D1006
|
|
# gf Added n classification. (3.1.11)
|
|
# gf Revised constraint. (3.3.6)
|
|
|
|
OXO connect underneath
|
|
.*.
|
|
---
|
|
|
|
:|,n,value(60)
|
|
|
|
aCb
|
|
.*.
|
|
---
|
|
|
|
;lib(a)>1 && lib(b)>1 && !attack(C)
|
|
|
|
|
|
Pattern D1006b
|
|
# gf New pattern. (3.1.14)
|
|
# gf Revised constraint. (3.1.32)
|
|
|
|
OXO connect underneath
|
|
.*.
|
|
---
|
|
|
|
:|,nE,value(80)
|
|
|
|
aXb
|
|
.*.
|
|
---
|
|
|
|
;(owl_escape_value(a)>0 || owl_escape_value(b)>0) && lib(a)>1 && lib(b)>1
|
|
|
|
|
|
Pattern D1007
|
|
# gf Revised constraint. (3.1.14)
|
|
# gf Revised constraint. (3.3.20)
|
|
|
|
OXO connect underneath in sente
|
|
.*.
|
|
---
|
|
|
|
:|,a,value(90)
|
|
|
|
bAc
|
|
.*.
|
|
---
|
|
|
|
;lib(A) == 2 && lib(b)>1 && lib(c)>1 && !attack(A) && !oplay_disconnect(*,b,c)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Attack a defect in the perimeter #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern D1100
|
|
# gf Split and revised pattern. (3.5.5)
|
|
# gf Revised constraint. (3.7.9)
|
|
|
|
X* attack the surrounding chain
|
|
OX
|
|
|
|
:/,b,value(88)
|
|
|
|
A*
|
|
OB
|
|
|
|
;vital_chain(A) && vital_chain(B) && !ko(*) && !oplay_defend_both(*,A,B)
|
|
|
|
|
|
Pattern D1100b
|
|
# gf Split and revised pattern. (3.5.5)
|
|
|
|
X* attack the surrounding chain
|
|
OX
|
|
|
|
:/,b,value(92)
|
|
|
|
A*
|
|
OB
|
|
|
|
;vital_chain(A)>1 && vital_chain(B)>1 && !oplay_defend_both(*,A,B)
|
|
|
|
|
|
Pattern D1101
|
|
|
|
... try to break out
|
|
X*X
|
|
?O?
|
|
|
|
:|,-,value(95)
|
|
|
|
.a.
|
|
b*c
|
|
?O?
|
|
|
|
; oplay_break_through(*,a,b,a,c) == WIN
|
|
|
|
|
|
Pattern D1102
|
|
# tm reduced value (3.1.16)
|
|
# gf Revised constraint. (3.5.3)
|
|
|
|
... create cutting points
|
|
X*X
|
|
?O?
|
|
|
|
:|,-,value(50)
|
|
|
|
c.d
|
|
A*B
|
|
?O?
|
|
|
|
;(lib(A)<=3 && olib(c)>2) || (lib(B)<=3 && olib(d)>2)
|
|
|
|
|
|
Pattern D1102a
|
|
# nn New pattern (3.3.11)
|
|
|
|
..... create cutting points
|
|
.X*X.
|
|
..O..
|
|
|
|
:|,-,value(45)
|
|
|
|
|
|
Pattern D1103
|
|
|
|
?OO.
|
|
OXX* capture or cut
|
|
?...
|
|
....
|
|
----
|
|
|
|
:8,-,value(85)
|
|
|
|
?OOa
|
|
OBB*
|
|
?...
|
|
....
|
|
----
|
|
|
|
;oplay_attack_either(*,a,B,a)
|
|
|
|
|
|
Pattern D1104
|
|
# The two O's may be in different dragons.
|
|
# Normally this is enough to live.
|
|
|
|
??oo? kill one stone
|
|
.O..O
|
|
...*X
|
|
.....
|
|
-----
|
|
|
|
:8,-,value(100)
|
|
|
|
??oo?
|
|
.O..O
|
|
...*a
|
|
.....
|
|
-----
|
|
|
|
; does_attack(*,a)
|
|
|
|
|
|
Pattern D1105
|
|
|
|
??o? cut off stone on second line
|
|
?X*o
|
|
OOXo
|
|
....
|
|
----
|
|
|
|
:8,b,value(35)
|
|
|
|
|
|
Pattern D1106
|
|
|
|
.O? hane, threatening capture
|
|
...
|
|
X*.
|
|
O.X
|
|
|
|
:8,-,value(77)
|
|
|
|
.O?
|
|
...
|
|
B*.
|
|
OaX
|
|
|
|
; oplay_attack(*,a,B)
|
|
|
|
|
|
Pattern D1107
|
|
|
|
XOXx capture to defend
|
|
*XO.
|
|
----
|
|
|
|
:8,-,value(35)
|
|
|
|
|
|
Pattern D1108
|
|
|
|
X.... surrounding chain collapses
|
|
OXX*.
|
|
.OOX.
|
|
.....
|
|
|
|
:8,B,value(95)
|
|
|
|
Ba...
|
|
OCC*.
|
|
eOODf
|
|
.....
|
|
|
|
; !oplay_defend_both(*,f,a,B,C) && oplay_attack(*,D) && !safe_xmove(e)
|
|
|
|
|
|
Pattern D1108b
|
|
|
|
X*... surrounding chain collapses
|
|
OXXO.
|
|
.OOXX
|
|
.....
|
|
|
|
:8,B,value(95)
|
|
|
|
B*...
|
|
OCCO.
|
|
.aaXX
|
|
.....
|
|
|
|
;owl_goal_dragon(a) && !oplay_defend_both(*,B,C)
|
|
|
|
|
|
Pattern D1109
|
|
|
|
?O? capture left or right
|
|
X*X
|
|
.X.
|
|
|
|
:8,-,value(60)
|
|
|
|
?O?
|
|
A*B
|
|
.X.
|
|
|
|
; oplay_attack(*,A) && oplay_attack(*,B)
|
|
|
|
|
|
Pattern D1110
|
|
# may overlap with D1333 and D1335
|
|
|
|
OOX. double atari
|
|
OX*.
|
|
X..?
|
|
|
|
:8,b,value(75)
|
|
|
|
OOB.
|
|
OX*.
|
|
Xa.?
|
|
|
|
; oplay_attack(*,a,B)
|
|
|
|
|
|
Pattern D1111
|
|
|
|
?..?? cutting combination
|
|
OX*.?
|
|
?OX..
|
|
?OX..
|
|
?oOX.
|
|
|
|
:8,Bs,value(90)
|
|
|
|
?a.??
|
|
OX*g?
|
|
?hXcf
|
|
?OXbd
|
|
?oiXe
|
|
|
|
;owl_goal_dragon(h) && lib(i)>1 && oplay_attack(*,a,b,c,d,e,f,g,e)
|
|
|
|
|
|
Pattern D1112
|
|
|
|
??O.? cutting combination, followup
|
|
?OX..
|
|
?OX*.
|
|
?oOX.
|
|
|
|
:8,B,value(90)
|
|
|
|
??Oe?
|
|
?fXad
|
|
?OX*b
|
|
?ogXc
|
|
|
|
;owl_goal_dragon(f) && lib(g)>1 && oplay_attack(*,a,b,c,d,e,c)
|
|
|
|
|
|
Pattern D1113
|
|
|
|
??O.? cutting combination, followup
|
|
?OXX.
|
|
?OXO*
|
|
?oOX.
|
|
|
|
:8,B,value(90)
|
|
|
|
??Oc?
|
|
?dXXb
|
|
?OXO*
|
|
?oeXa
|
|
|
|
;owl_goal_dragon(d) && lib(e)>1 && oplay_attack(*,a,b,c,a)
|
|
|
|
|
|
Pattern D1114
|
|
|
|
??O.? cutting combination, followup
|
|
?OXX*
|
|
?OXOO
|
|
?oOXX
|
|
|
|
:8,B,value(90)
|
|
|
|
??Oa?
|
|
?cXX*
|
|
?OXOO
|
|
?odBB
|
|
|
|
;owl_goal_dragon(c) && lib(d)>1 && oplay_attack(*,a,B)
|
|
|
|
|
|
Pattern D1115
|
|
|
|
o.X? continue ladder
|
|
.*OX
|
|
.XOO
|
|
?.X?
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D1116
|
|
|
|
XXOo capture (possibly with ko)
|
|
.*XO
|
|
...X
|
|
----
|
|
|
|
:8,-,value(65)
|
|
|
|
XXOo
|
|
.*XO
|
|
..aX
|
|
----
|
|
|
|
;oplay_attack(*,a,a)
|
|
|
|
|
|
Pattern D1117
|
|
|
|
.xX? try to push out
|
|
..*O
|
|
..XO
|
|
..xx
|
|
----
|
|
|
|
:8,-,value(75)
|
|
|
|
.xX?
|
|
.a*O
|
|
..BO
|
|
..xx
|
|
----
|
|
|
|
;oplay_attack(*,a,B)
|
|
|
|
|
|
Pattern D1117a
|
|
# tm New Pattern (3.1.15)
|
|
# continuation of D1117
|
|
|
|
.xX? try to push out
|
|
.*OO
|
|
.XXO
|
|
..xX
|
|
----
|
|
|
|
:8,-,value(75)
|
|
|
|
.xX?
|
|
a*OO
|
|
.XXO
|
|
..xB
|
|
----
|
|
|
|
;oplay_attack(*,a,B) && wormsize(B) > 2
|
|
|
|
|
|
Pattern D1118
|
|
|
|
ooo? capture to defend and threaten escape
|
|
X*X?
|
|
OXOX
|
|
?O.?
|
|
|
|
:8,-,value(85)
|
|
|
|
|
|
Pattern D1119
|
|
|
|
oOX.? might break through somewhere
|
|
?*..?
|
|
X.X.?
|
|
...o?
|
|
?????
|
|
|
|
:8,E,value(70)
|
|
|
|
oOX.?
|
|
?*..b
|
|
X.X.?
|
|
...o?
|
|
?a???
|
|
|
|
;owl_escape_value(a)>0 || owl_escape_value(b)>0
|
|
|
|
|
|
Pattern D1120
|
|
|
|
ooX.? might break through
|
|
?O*.?
|
|
X.X.?
|
|
...o?
|
|
?????
|
|
|
|
:8,E,value(81)
|
|
|
|
ooX.?
|
|
?O*.b
|
|
X.X.?
|
|
...o?
|
|
?a???
|
|
|
|
;owl_escape_value(a)>0 || owl_escape_value(b)>0
|
|
|
|
|
|
Pattern D1120b
|
|
|
|
ooX. might break through
|
|
?OOX
|
|
X*X.
|
|
...o
|
|
|
|
:8,-,value(81)
|
|
|
|
|
|
Pattern D1121a
|
|
# gf Split pattern. (3.3.17)
|
|
|
|
OoXo push into the open
|
|
.*.o
|
|
X..o
|
|
oooo
|
|
|
|
:8,-,value(70)
|
|
|
|
|
|
Pattern D1121b
|
|
# gf Split pattern. (3.3.17)
|
|
|
|
OOXo push into the open
|
|
X*.o
|
|
X..o
|
|
oooo
|
|
|
|
:8,-,value(70)
|
|
|
|
|
|
Pattern D1121c
|
|
# gf Split pattern. (3.3.17)
|
|
|
|
O.Xo push into the open
|
|
X*.o
|
|
X..o
|
|
oooo
|
|
|
|
:8,-,value(70)
|
|
|
|
OaXo
|
|
B*.o
|
|
B..o
|
|
oooo
|
|
|
|
;oplay_attack_either(*,a,a,B)
|
|
|
|
|
|
Pattern D1122
|
|
# gf Repaired constraint. (3.3.6)
|
|
|
|
?O? Cut and maybe capture to make eye
|
|
X*X
|
|
---
|
|
|
|
:|,-,value(45)
|
|
|
|
?O?
|
|
A*B
|
|
---
|
|
|
|
;oplay_attack(*,A) || oplay_attack(*,B)
|
|
|
|
|
|
Pattern D1123
|
|
# tm modified (3.1.17) added b classification
|
|
|
|
oX*o break through
|
|
OOX.
|
|
OX..
|
|
X..?
|
|
|
|
:8,b,value(86)
|
|
|
|
oB*o
|
|
OOXa
|
|
OX..
|
|
X..?
|
|
|
|
;oplay_attack(*,a,B)
|
|
|
|
|
|
Pattern D1124
|
|
|
|
OXO double atari
|
|
X*?
|
|
|
|
:8,bE,value(90)
|
|
|
|
OAc
|
|
B*?
|
|
|
|
;lib(A)==2 && owl_escape_value(c)>0 && !oplay_defend_both(*,A,B)
|
|
|
|
|
|
Pattern D1125
|
|
|
|
ooo?
|
|
...o
|
|
.*X.
|
|
?OOX
|
|
|
|
:8,E,value(79)
|
|
|
|
abc?
|
|
...o
|
|
.*X.
|
|
?OOX
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
|
|
|
|
|
|
Pattern D1126
|
|
# gf Revised constraint and added B classification. (3.1.8)
|
|
|
|
OX. cut to capture something
|
|
X*.
|
|
..?
|
|
|
|
:8,b,value(82)
|
|
|
|
cB.
|
|
A*.
|
|
b.?
|
|
|
|
;lib(c)>1 && oplay_attack(*,A) && oplay_attack(*,b,B)
|
|
|
|
|
|
Pattern D1127
|
|
# gf Added constraint and B classification. (3.1.8)
|
|
|
|
.O. atari!
|
|
X*X
|
|
OX.
|
|
oO?
|
|
|
|
:8,b,value(35)
|
|
|
|
.O.
|
|
X*X
|
|
aX.
|
|
oO?
|
|
|
|
;lib(a)>1
|
|
|
|
|
|
Pattern D1128
|
|
# gf Added B classification. (3.1.8)
|
|
|
|
...o set up multiple ataris
|
|
...O
|
|
.*XO
|
|
?XO?
|
|
|
|
:8,B,value(45)
|
|
|
|
|
|
Pattern D1129
|
|
# db added B class (3.1.8)
|
|
|
|
..*o set up multiple ataris
|
|
..XO
|
|
.OXO
|
|
?XO?
|
|
|
|
:8,B,value(77)
|
|
|
|
|
|
Pattern D1130
|
|
|
|
O.?? prevent cut
|
|
XO*X
|
|
xXO?
|
|
|
|
:8,-,value(35)
|
|
|
|
Oa??
|
|
XO*X
|
|
xbO?
|
|
|
|
; !safe_xmove(a) && lib(b)>1
|
|
|
|
|
|
Pattern D1131
|
|
|
|
OX cut to capture something and escape
|
|
X*
|
|
?O
|
|
|
|
:8,E,value(90)
|
|
|
|
bC
|
|
D*
|
|
?a
|
|
|
|
;owl_goal_dragon(a) && owl_escape_value(b)>0
|
|
;&& oplay_attack(*,C) && oplay_attack(*,D)
|
|
|
|
|
|
Pattern D1132
|
|
# db added (3.1.7)
|
|
# tm reduced value (3.1.18) (see trevorb:590)
|
|
|
|
?X*O cut to find defects
|
|
OOX.
|
|
|
|
:8,b,value(45)
|
|
|
|
?A*O
|
|
OOB.
|
|
|
|
; oplay_attack_either(*,A,B)
|
|
|
|
|
|
Pattern D1133
|
|
# gf New pattern. (3.1.9)
|
|
|
|
?X.o
|
|
Ox*. escape
|
|
oO..
|
|
----
|
|
|
|
:8,E,value(65)
|
|
|
|
?X.o
|
|
Ox*a
|
|
oO..
|
|
----
|
|
|
|
;owl_escape_value(a)>0
|
|
|
|
|
|
Pattern D1134
|
|
# tm new pattern (3.1.14)
|
|
# Give a very low value, unless add lots of constraints.
|
|
# See trevor:520.
|
|
|
|
XXO Cut!
|
|
O*X
|
|
OX.
|
|
?..
|
|
|
|
:8,b,value(5)
|
|
|
|
|
|
Pattern D1135
|
|
# tm new pattern (3.1.14)
|
|
# See trevor:330
|
|
|
|
O*. connect out, threaten cut
|
|
X.?
|
|
|
|
:8,E,value(35)
|
|
|
|
O*a
|
|
B.?
|
|
|
|
; owl_escape_value(a)>0
|
|
; && oplay_attack(*,a,B)
|
|
|
|
|
|
Pattern D1137
|
|
# gf New pattern. (3.1.14)
|
|
# gf Bugfix. (3.1.18)
|
|
# See buzco:6
|
|
|
|
?oo?
|
|
?..o
|
|
X*.o
|
|
O.??
|
|
|
|
:8,BE,value(65)
|
|
|
|
?oc?
|
|
?..d
|
|
B*.o
|
|
Oa??
|
|
|
|
;lib(B)<=4 && owl_escape_value(c) + owl_escape_value(d) > 0
|
|
;&& oplay_attack_either(*,a,a,B)
|
|
|
|
|
|
Pattern D1138
|
|
# tm New Pattern (3.1.17)
|
|
# tm modified (3.1.23)
|
|
|
|
????
|
|
.X*? breakout!
|
|
XOX?
|
|
|
|
:8,sbE,value(85)
|
|
|
|
e?f?
|
|
.B*?
|
|
AOCd
|
|
|
|
; lib(C) == 2
|
|
; && (owl_escape_value(e) > 0 || vital_chain(A))
|
|
; && (owl_escape_value(f) > 0 || vital_chain(C))
|
|
; && olib(*) > 1
|
|
; && oplay_attack_either(*,d,B,A)
|
|
|
|
|
|
Pattern D1139
|
|
# tm New Pattern (3.1.20) (see nngs:110)
|
|
# gf Added n classification. (3.3.20)
|
|
|
|
?*
|
|
XO
|
|
OX
|
|
|
|
:8,bEn,value(75)
|
|
|
|
?*
|
|
aO
|
|
Ob
|
|
|
|
; (owl_escape_value(*) > 0) && !oplay_defend_both(*,a,b)
|
|
|
|
|
|
Pattern D1140
|
|
# tm New Pattern (3.1.20) (see nngs:1320 owl_does_attack L15 M17)
|
|
|
|
?XO
|
|
?*.
|
|
???
|
|
|
|
:8,bE,value(70)
|
|
|
|
?aO
|
|
b*.
|
|
cd?
|
|
|
|
;(owl_escape_value(b) > 0
|
|
; || owl_escape_value(c) > 0
|
|
; || owl_escape_value(d) > 0)
|
|
;&& oplay_attack(*,a)
|
|
|
|
|
|
Pattern D1141
|
|
# tm New Pattern (3.1.22)
|
|
# (see nngs:1810 owl_attack M17, result 3 L16)
|
|
|
|
... atari for tempo
|
|
O.X
|
|
OX.
|
|
X*.
|
|
|
|
:8,-,value(45)
|
|
|
|
...
|
|
O.X
|
|
OX.
|
|
a*.
|
|
|
|
; lib(a) == 2 || oplay_attack(*,a)
|
|
|
|
|
|
Pattern D1142
|
|
# pp New pattern (3.5.3). See nngs4:420.
|
|
# gf Fixed symmetry. (3.7.1)
|
|
|
|
?X? split boundary in hope that it will help;
|
|
*OX low value because it's not guaranteed it will
|
|
?XO
|
|
|
|
:8,b,value(30)
|
|
|
|
?C?
|
|
*AX
|
|
?XB
|
|
|
|
; does_defend(*,A) && !oplay_attack(*,B)
|
|
; && !same_string(B,C) && vital_chain(B) && vital_chain(C)
|
|
; && (oplay_attack(*,B) || oplay_attack(*,C)) && !oplay_connect(*,B,C)
|
|
|
|
|
|
Pattern D1143
|
|
# gf New pattern. (3.5.3).
|
|
# See e.g. nngs:1090.
|
|
|
|
.*XO
|
|
XOXO
|
|
..Oo
|
|
----
|
|
|
|
:8,-,value(65)
|
|
|
|
.*Ac
|
|
BOAc
|
|
..do
|
|
----
|
|
|
|
;lib(A)==2 && lib(c)>1 && lib(d)>1 && oplay_attack(*,B)
|
|
|
|
|
|
Pattern D1144
|
|
# gf New pattern. (3.5.3).
|
|
# See 13x13b:23.
|
|
|
|
OXO escape by capturing
|
|
.*X
|
|
---
|
|
|
|
:8,-,value(82)
|
|
|
|
bXc
|
|
.*A
|
|
---
|
|
|
|
; lib(A) == 1 && (owl_escape_value(b) > 0 || owl_escape_value(c) > 0)
|
|
|
|
|
|
Pattern D1144b
|
|
# gf New pattern. (3.5.3).
|
|
# See 13x13b:23.
|
|
|
|
OXO escape by capturing
|
|
.*X
|
|
---
|
|
|
|
:8,-,value(40)
|
|
|
|
OXO
|
|
.*A
|
|
---
|
|
|
|
; lib(A) == 1
|
|
|
|
|
|
########################################################
|
|
# #
|
|
# Kikashi #
|
|
# #
|
|
#########################################################
|
|
# #
|
|
# Forcing moves that may improve the eyespace #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern D1200
|
|
|
|
.X...| forcing move
|
|
.*X..|
|
|
.OOX.|
|
|
.....|
|
|
-----+
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D1201a
|
|
# gf Split pattern. (3.5.3)
|
|
|
|
XOo atari to build eyespace
|
|
*.O
|
|
ooo
|
|
|
|
:8,-,value(50)
|
|
|
|
AOo
|
|
*.O
|
|
ooo
|
|
|
|
; lib(A)==2
|
|
|
|
|
|
Pattern D1201b
|
|
# gf Split pattern and revised constraint. (3.5.3)
|
|
|
|
XOo atari to build eyespace
|
|
*.O
|
|
Xoo
|
|
|
|
:8,-,value(50)
|
|
|
|
AOo
|
|
*.O
|
|
Boo
|
|
|
|
; lib(A)==2 && !oplay_defend_both(*,A,B)
|
|
|
|
|
|
Pattern D1202
|
|
# tm modified (3.1.22) (see owl:152)
|
|
|
|
o*X? move up with atari
|
|
o.OO
|
|
....
|
|
----
|
|
|
|
:8,-,value(75)
|
|
|
|
o*A?
|
|
B.OO
|
|
....
|
|
----
|
|
|
|
;lib(A) <= 2 && (o_somewhere(B) || !attack(A) || defend(A))
|
|
|
|
|
|
Pattern D1203
|
|
|
|
OOX block in sente
|
|
.*x
|
|
---
|
|
|
|
:8,-,value(80)
|
|
|
|
OOA
|
|
b*x
|
|
---
|
|
|
|
;!attack(A) && oplay_attack(*,A) && !obvious_false_oeye(b)
|
|
|
|
|
|
Pattern D1204
|
|
|
|
OOo block in sente
|
|
.*X
|
|
---
|
|
|
|
:8,-,value(85)
|
|
|
|
OOo
|
|
b*A
|
|
---
|
|
|
|
;wormsize(A)>=3 && !attack(A) && oplay_attack(*,A) && !obvious_false_oeye(b)
|
|
|
|
|
|
Pattern D1205
|
|
|
|
?X? connect, cut, and threaten to capture
|
|
O*O
|
|
?X?
|
|
|
|
:|,-,value(50)
|
|
|
|
?A?
|
|
O*O
|
|
?X?
|
|
|
|
;oplay_attack(*,A)
|
|
|
|
|
|
Pattern D1206
|
|
|
|
oOo capture, threatening to take again
|
|
OXO
|
|
?*X
|
|
|
|
:8,-,value(40)
|
|
|
|
oOo
|
|
OXO
|
|
?*A
|
|
|
|
; oplay_attack(*,A)
|
|
|
|
|
|
Pattern D1207
|
|
# gf New pattern. (3.7.3)
|
|
|
|
o..x sacrifice a stone to gain tempo
|
|
.X*.
|
|
....
|
|
----
|
|
|
|
:8,s,value(40)
|
|
|
|
ob.x
|
|
aX*.
|
|
....
|
|
----
|
|
|
|
;oplay_attack(*,a,a) && oplay_attack(*,b,b)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Escape #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern D1300
|
|
|
|
OX connect out
|
|
.*
|
|
XO
|
|
|
|
:8,Ea,value(90)
|
|
|
|
cb
|
|
a*
|
|
XO
|
|
|
|
;owl_escape_value(c)>0 && oplay_attack_either(*,a,a,b)
|
|
|
|
|
|
Pattern D1300b
|
|
|
|
OX connect out
|
|
*.
|
|
XO
|
|
|
|
:8,Ea,value(89)
|
|
|
|
cX
|
|
*a
|
|
BO
|
|
|
|
;owl_escape_value(c)>0 && oplay_attack_either(*,a,a,B)
|
|
|
|
|
|
Pattern D1301
|
|
|
|
?X.? connect to another dragon
|
|
O*.O
|
|
....
|
|
|
|
:8,a,value(90)
|
|
|
|
?Xc?
|
|
f*ag
|
|
.ebd
|
|
|
|
;(!owl_goal_dragon(f) || !owl_goal_dragon(g))
|
|
;&& (oplay_attack(*,a,b,c,d,e,e) || oplay_attack(*,a,b,c,e,d,d))
|
|
|
|
|
|
Pattern D1301b
|
|
# gf New pattern. (3.3.7)
|
|
|
|
?Xo? connect to another dragon
|
|
O*.O
|
|
.xo?
|
|
|
|
:8,a,value(90)
|
|
|
|
?Xo?
|
|
a*.b
|
|
.xo?
|
|
|
|
;(!owl_goal_dragon(a) || !owl_goal_dragon(b))
|
|
;&& !oplay_disconnect(*,a,b)
|
|
|
|
|
|
Pattern D1302
|
|
# gf Revised constraint. (3.1.15)
|
|
|
|
OX? try to connect out
|
|
.*O
|
|
.??
|
|
|
|
:8,a,value(80)
|
|
|
|
bX?
|
|
a*c
|
|
.de
|
|
|
|
;!(o_somewhere(d) && o_somewhere(e))
|
|
;&& (!owl_goal_dragon(b) || !owl_goal_dragon(c)) && oplay_attack(*,a,a)
|
|
|
|
|
|
Pattern D1303
|
|
|
|
?????
|
|
oooo? try to escape
|
|
X.*o?
|
|
?O.o?
|
|
??Xo?
|
|
|
|
:/,E,value(80)
|
|
|
|
?????
|
|
ooca?
|
|
X.*b?
|
|
?O.o?
|
|
??Xo?
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
|
|
|
|
|
|
Pattern D1304
|
|
|
|
ooooo try to escape
|
|
....o
|
|
X.*.o
|
|
?O..o
|
|
??X.o
|
|
|
|
:/,E,value(80)
|
|
|
|
oooab
|
|
....c
|
|
X.*.o
|
|
?O..o
|
|
??X.o
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
|
|
|
|
|
|
Pattern D1305
|
|
|
|
????
|
|
oooo
|
|
..*. try to escape
|
|
X.Ox
|
|
?O.X
|
|
|
|
:8,E,value(75)
|
|
|
|
????
|
|
oabc
|
|
..*.
|
|
X.Ox
|
|
?O.X
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
|
|
|
|
|
|
Pattern D1306
|
|
|
|
??oo
|
|
xX*. try to escape
|
|
X.O.
|
|
?O.X
|
|
|
|
:8,E,value(79)
|
|
|
|
??ab
|
|
xX*.
|
|
X.O.
|
|
?O.X
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) > 0
|
|
|
|
|
|
Pattern D1307
|
|
|
|
???oo
|
|
xX.*o try to escape
|
|
X.O.?
|
|
?O.??
|
|
|
|
:8,E,value(80)
|
|
|
|
???oa
|
|
xX.*o
|
|
X.O.?
|
|
?O.??
|
|
|
|
;owl_escape_value(a) > 0
|
|
|
|
|
|
Pattern D1308
|
|
# gf Not towards edge. (3.1.15)
|
|
|
|
oooo?
|
|
O.*o? try to escape
|
|
....?
|
|
....?
|
|
-----
|
|
|
|
:8,E,value(75)
|
|
|
|
ooob?
|
|
O.*a?
|
|
....?
|
|
....?
|
|
-----
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) > 0
|
|
|
|
|
|
Pattern D1309
|
|
|
|
oo..o
|
|
O..*o try to escape
|
|
.....
|
|
.....
|
|
-----
|
|
|
|
:8,E,value(81)
|
|
|
|
oo..b
|
|
O..*a
|
|
.....
|
|
.....
|
|
-----
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) > 0
|
|
|
|
|
|
Pattern D1309b
|
|
# More positive shape than previous pattern.
|
|
|
|
?ooo? try to escape
|
|
o.*.o
|
|
O...O
|
|
.....
|
|
.....
|
|
-----
|
|
|
|
:8,E,value(82)
|
|
|
|
?ooo?
|
|
o.*.b
|
|
O...a
|
|
.....
|
|
.....
|
|
-----
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) > 0
|
|
|
|
|
|
Pattern D1310
|
|
#tm modified (3.1.15) (see trevora:400)
|
|
#tm added b constraint (3.1.17)
|
|
|
|
?ooo
|
|
?ooo try to escape
|
|
X*oo
|
|
?OX?
|
|
|
|
:8,E,value(80)
|
|
|
|
dabo
|
|
eooc
|
|
X*oo
|
|
?OX?
|
|
|
|
;(!x_somewhere(e) && !x_somewhere(d) && (owl_escape_value(a) > 0))
|
|
;|| owl_escape_value(b) > 0
|
|
;|| owl_escape_value(c) > 0
|
|
|
|
|
|
Pattern D1311
|
|
|
|
oooo
|
|
o.oo try to escape
|
|
.*.o
|
|
xOX?
|
|
|
|
:8,E,value(80)
|
|
|
|
oabo
|
|
o.oc
|
|
.*.o
|
|
xOX?
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
|
|
|
|
|
|
Pattern D1312
|
|
|
|
ooooo
|
|
....o
|
|
....o try to escape
|
|
X*..o
|
|
?OX??
|
|
|
|
:8,E,value(80)
|
|
|
|
ooabo
|
|
....c
|
|
....o
|
|
X*..o
|
|
?OX??
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
|
|
|
|
|
|
Pattern D1313
|
|
|
|
O...
|
|
O.*. run away
|
|
....
|
|
????
|
|
|
|
:8,E,value(55)
|
|
|
|
O..b
|
|
O.*a
|
|
....
|
|
????
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) > 0
|
|
|
|
|
|
Pattern D1314
|
|
# nn Modified (3.3.13)
|
|
# It's rather pointless to match at the edge
|
|
|
|
o.o?
|
|
O.O. run away
|
|
....
|
|
....
|
|
.*..
|
|
????
|
|
|
|
:8,E,value(55)
|
|
|
|
o.o?
|
|
O.O.
|
|
....
|
|
....
|
|
.*..
|
|
????
|
|
|
|
;owl_escape_value(*) > 0
|
|
|
|
|
|
Pattern D1315
|
|
# db generalized (3.3.14)
|
|
|
|
o.o
|
|
O.O run away
|
|
...
|
|
.*.
|
|
?oo
|
|
|
|
:8,E,value(50)
|
|
|
|
o.o
|
|
O.O
|
|
...
|
|
.*.
|
|
?ab
|
|
|
|
; owl_escape_value(a) > 0 || owl_escape_value(b) > 0
|
|
|
|
|
|
Pattern D1316
|
|
|
|
OX connect out
|
|
*O
|
|
|
|
:8,n,value(35)
|
|
|
|
OX
|
|
*a
|
|
|
|
;!owl_goal_dragon(a)
|
|
|
|
|
|
Pattern D1316b
|
|
# gf New pattern. (3.3.17)
|
|
|
|
OX connect out to strong dragon
|
|
*O
|
|
|
|
:8,n,value(90)
|
|
|
|
OX
|
|
*a
|
|
|
|
;owl_strong_dragon(a)
|
|
|
|
|
|
Pattern D1317
|
|
|
|
o..X move out, separate, and escape
|
|
o.*O
|
|
o...
|
|
??XX
|
|
|
|
:8,E,value(90)
|
|
|
|
o..X
|
|
a.*O
|
|
o...
|
|
??XX
|
|
|
|
;owl_escape_value(a)>0
|
|
|
|
|
|
Pattern D1318
|
|
# gf Too vague, reduced. (3.1.9)
|
|
# gf Still too vague, removed. (3.1.14)
|
|
# evand modified and reinstated, with lower value. (3.3.18)
|
|
|
|
??.... try to run towards center
|
|
??....
|
|
??..*.
|
|
??...O
|
|
|
|
:8,-,value(50)
|
|
|
|
??bce.
|
|
??a...
|
|
??d.*.
|
|
??...O
|
|
|
|
;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
|
|
|
|
|
|
Pattern D1319
|
|
|
|
... jump to the center
|
|
...
|
|
.*.
|
|
...
|
|
oOo
|
|
ooo
|
|
ooo
|
|
---
|
|
|
|
:8,-,value(82)
|
|
|
|
|
|
Pattern D1320
|
|
# tm modified (3.1.20)
|
|
|
|
O*O connect to friendly dragon
|
|
|
|
:+,n,value(35)
|
|
|
|
a*b
|
|
|
|
;!owl_goal_dragon(a) || !owl_goal_dragon(b)
|
|
|
|
|
|
Pattern D1320a
|
|
# tm New Pattern (3.1.20)
|
|
# gf Changed symmetry to accomodate for asymmetric constraint. (3.1.23)
|
|
|
|
?X?
|
|
O*O connect to friendly dragon
|
|
...
|
|
|
|
:8,n,value(70)
|
|
|
|
?X?
|
|
A*B
|
|
cd.
|
|
|
|
; (!owl_goal_dragon(A) || !owl_goal_dragon(B))
|
|
; && !xplay_attack_either(*,d,c,c,*)
|
|
|
|
|
|
Pattern D1320b
|
|
# gf New pattern. (3.3.17)
|
|
|
|
O*O connect to strong friendly dragon
|
|
|
|
:+,n,value(90)
|
|
|
|
a*b
|
|
|
|
;owl_strong_dragon(a) || owl_strong_dragon(b)
|
|
|
|
|
|
Pattern D1321
|
|
|
|
*.O
|
|
O.O connect to friendly dragon by bamboo joint
|
|
|
|
:8,na,value(36)
|
|
|
|
*.b
|
|
a.b
|
|
|
|
;!owl_goal_dragon(a) || !owl_goal_dragon(b)
|
|
|
|
|
|
Pattern D1321b
|
|
# gf New pattern. (3.3.17)
|
|
|
|
*.O
|
|
O.O connect to strong friendly dragon by bamboo joint
|
|
|
|
:8,na,value(91)
|
|
|
|
*.b
|
|
a.b
|
|
|
|
;owl_strong_dragon(a) || owl_strong_dragon(b)
|
|
|
|
|
|
Pattern D1322
|
|
# gf Constraint revised. (3.7.9)
|
|
|
|
.*O
|
|
OXO connect to friendly dragon by atari
|
|
|
|
:8,na,value(36)
|
|
|
|
.*b
|
|
aCb
|
|
|
|
;(!owl_goal_dragon(a) || !owl_goal_dragon(b)) && lib(C) <= 2 && lib(a) > 1
|
|
|
|
|
|
Pattern D1323
|
|
# without more context this is often an inferior
|
|
# solution (for example games/manner.sgf move 12).
|
|
# tm Modified (3.1.17)
|
|
# gf Removed safe_xmove(*) from constraint. This is redundant with n
|
|
# classification. (3.1.17)
|
|
|
|
O*O connect to escape
|
|
|
|
:+,nE,value(35)
|
|
|
|
a*b
|
|
|
|
;owl_escape_value(a)>0 || owl_escape_value(b)>0
|
|
|
|
|
|
Pattern D1323a
|
|
# tm New Pattern (3.1.17)
|
|
|
|
??X connect out in sente
|
|
?O*
|
|
?.O
|
|
|
|
:8,nE,value(55)
|
|
|
|
BCd
|
|
AO*
|
|
?.O
|
|
|
|
;(owl_escape_value(A) > 0
|
|
; || owl_escape_value(B) > 0
|
|
; || owl_escape_value(C) > 0)
|
|
;&& oplay_attack(*,d)
|
|
|
|
|
|
Pattern D1324
|
|
|
|
*.O
|
|
O.O connect by bamboo joint to escape
|
|
|
|
:8,nEa,value(86)
|
|
|
|
*.b
|
|
a.b
|
|
|
|
;owl_escape_value(a)>0 || owl_escape_value(b)>0
|
|
|
|
|
|
Pattern D1325
|
|
# gf Constraint revised. (3.7.9)
|
|
|
|
.*O
|
|
OXO connect to friendly dragon by atari to escape
|
|
|
|
:8,nEa,value(86)
|
|
|
|
.*b
|
|
aCb
|
|
|
|
;(owl_escape_value(a)>0 || owl_escape_value(b)>0) && lib(C) <= 2 && lib(a) > 1
|
|
|
|
|
|
Pattern D1326
|
|
|
|
O*O connect to escape
|
|
|
|
:+,E,value(35)
|
|
|
|
a*b
|
|
|
|
;owl_escape_value(a)>0 || owl_escape_value(b)>0
|
|
|
|
|
|
Pattern D1329
|
|
|
|
o.... jump towards safety
|
|
O.*..
|
|
o....
|
|
|
|
:8,-,value(35)
|
|
|
|
|
|
Pattern D1330
|
|
|
|
?O.x break out into the center
|
|
X*.X
|
|
....
|
|
oooo
|
|
|
|
:8,E,value(90)
|
|
|
|
?O.x
|
|
E*cX
|
|
dab.
|
|
ofoo
|
|
|
|
;owl_escape_value(f)>0 && !oplay_defend_both(*,a,b,c,d,a,E)
|
|
|
|
|
|
Pattern D1331
|
|
|
|
?O.x break out into the center, followup
|
|
XO.X
|
|
.X*.
|
|
oooo
|
|
|
|
:8,BE,value(90)
|
|
|
|
?O.x
|
|
COaX
|
|
bD*.
|
|
oeoo
|
|
|
|
;owl_escape_value(e)>0 && !oplay_defend_both(*,a,b,C,D)
|
|
|
|
|
|
Pattern D1332
|
|
# gf Revised. (3.1.12)
|
|
|
|
?O?x break out into the center, followup
|
|
XO*X
|
|
xXO.
|
|
oooo
|
|
|
|
:8,E,value(95)
|
|
|
|
?O?x
|
|
XO*X
|
|
xXO.
|
|
oaoo
|
|
|
|
;owl_escape_value(a)>0
|
|
|
|
|
|
Pattern D1333
|
|
|
|
?O? break out into the center, followup
|
|
XOX
|
|
*XO
|
|
ooo
|
|
|
|
:8,BE,value(90)
|
|
|
|
?O?
|
|
AdX
|
|
*BO
|
|
oco
|
|
|
|
;owl_escape_value(c)>0 && owl_goal_dragon(d) && !oplay_defend_both(*,A,B)
|
|
|
|
|
|
Pattern D1333b
|
|
|
|
?O? break out into the center, followup
|
|
XOX
|
|
*XO
|
|
?O?
|
|
|
|
:8,E,value(90)
|
|
|
|
?O?
|
|
XdX
|
|
*XO
|
|
?c?
|
|
|
|
;owl_escape_value(c)>0 && owl_goal_dragon(d)
|
|
|
|
|
|
Pattern D1334
|
|
# This is not handled as a lunch because capturing only gives a false eye.
|
|
|
|
XOX break out into the center, followup
|
|
OXO
|
|
o*o
|
|
|
|
:|,E,value(95)
|
|
|
|
XOX
|
|
OXO
|
|
o*o
|
|
|
|
;owl_escape_value(*)>0
|
|
|
|
|
|
Pattern D1335
|
|
|
|
?O?? double atari to escape
|
|
.XO?
|
|
o*XO
|
|
oo.?
|
|
|
|
:/,BE,value(95)
|
|
|
|
?O??
|
|
.Xb?
|
|
o*XO
|
|
ao.?
|
|
|
|
;owl_escape_value(a)>0 && owl_goal_dragon(b) && lib(b)>1
|
|
|
|
|
|
Pattern D1336
|
|
|
|
XOo capture to escape
|
|
*XO
|
|
oOX
|
|
|
|
:8,E,value(95)
|
|
|
|
XOo
|
|
*XO
|
|
aOX
|
|
|
|
; owl_escape_value(a)>0
|
|
|
|
|
|
Pattern D1337
|
|
|
|
?OO? break out into the center
|
|
X..X
|
|
..*.
|
|
oooo
|
|
|
|
:8,BE,value(90)
|
|
|
|
?OO?
|
|
EbaX
|
|
dc*.
|
|
ofoo
|
|
|
|
;owl_escape_value(f)>0 && !oplay_defend_both(*,a,b,c,d,c,E)
|
|
|
|
|
|
Pattern D1338
|
|
|
|
?OO? break out into the center, followup
|
|
X*XX
|
|
..O.
|
|
oooo
|
|
|
|
:8,E,value(90)
|
|
|
|
?OO?
|
|
C*XX
|
|
baO.
|
|
odoo
|
|
|
|
;owl_escape_value(d)>0 && !oplay_defend_both(*,a,b,a,C)
|
|
|
|
|
|
Pattern D1339
|
|
# tm modified (3.1.17)
|
|
|
|
?O? break out into the center, followup
|
|
X*X
|
|
oOo
|
|
|
|
:|,E,value(93)
|
|
|
|
?O?
|
|
X*X
|
|
odo
|
|
|
|
;owl_escape_value(d)>0
|
|
|
|
|
|
Pattern D1340
|
|
|
|
o.X? tunnel out
|
|
OX*O
|
|
....
|
|
----
|
|
|
|
:8,Ea,value(85)
|
|
|
|
obX?
|
|
cX*d
|
|
.a..
|
|
----
|
|
|
|
;(owl_escape_value(c)>0 || owl_escape_value(d)>0) && oplay_attack(*,a,a)
|
|
;&& !oplay_attack_either(*,b,a,*,a) && !oplay_attack_either(*,b,a,c,a)
|
|
|
|
|
|
Pattern D1341
|
|
|
|
?O?? break out into the center
|
|
X*.X
|
|
...?
|
|
ooo?
|
|
|
|
:8,E,value(60)
|
|
|
|
?O??
|
|
X*.X
|
|
...?
|
|
oao?
|
|
|
|
;owl_escape_value(a)>0
|
|
|
|
|
|
Pattern D1342
|
|
|
|
X..? miai to make eye or escape into center
|
|
O*X?
|
|
OX..
|
|
o...
|
|
----
|
|
|
|
:8,-,value(60)
|
|
|
|
|
|
Pattern D1343a
|
|
#tm reduced value (3.1.16)
|
|
|
|
ooo? escape into center
|
|
o..X
|
|
o.*.
|
|
?x.O
|
|
|
|
:8,E,value(77)
|
|
|
|
obo?
|
|
a..X
|
|
o.*.
|
|
?x.O
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) > 0
|
|
|
|
|
|
Pattern D1343b
|
|
#tm reduced value (3.1.16)
|
|
|
|
ooo? escape into center
|
|
o..X
|
|
o.*o
|
|
?XoO
|
|
|
|
:8,E,value(60)
|
|
|
|
obo?
|
|
a..X
|
|
o.*o
|
|
?XoO
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) > 0
|
|
|
|
|
|
Pattern D1343c
|
|
#tm reduced value (3.1.16)
|
|
|
|
ooo? escape into center
|
|
o..X
|
|
o*.o
|
|
?.oO
|
|
|
|
:8,E,value(60)
|
|
|
|
obo?
|
|
a..X
|
|
o*.c
|
|
?.dO
|
|
|
|
;o_somewhere(c,d) && (owl_escape_value(a) + owl_escape_value(b) > 0)
|
|
|
|
|
|
Pattern D1343d
|
|
#tm reduced value (3.1.16)
|
|
|
|
ooo? escape into center
|
|
o..X
|
|
o*..
|
|
?..O
|
|
|
|
:8,BE,value(55)
|
|
|
|
obo?
|
|
a..X
|
|
o*..
|
|
?..O
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) > 0
|
|
|
|
|
|
Pattern D1344
|
|
|
|
?XX?o
|
|
oO*.o escape along edge
|
|
o....
|
|
-----
|
|
|
|
:8,E,value(85)
|
|
|
|
?XX?o
|
|
oO*.a
|
|
o....
|
|
-----
|
|
|
|
;owl_escape_value(a)>0
|
|
|
|
|
|
Pattern D1345
|
|
# gf Revised constraint. (3.1.32)
|
|
|
|
OXO atari to connect
|
|
.*.
|
|
|
|
:8,bEa,value(85)
|
|
|
|
cDe
|
|
a*b
|
|
|
|
;lib(D)==2 && lib(c)>1 && lib(e)>1
|
|
;&& (owl_escape_value(c)>0 || owl_escape_value(e)>0)
|
|
;&& !oplay_disconnect(*,b,a,c,e)
|
|
|
|
|
|
Pattern D1346
|
|
|
|
?O.X break out into the center
|
|
X.*.
|
|
x...
|
|
oooo
|
|
|
|
:8,E,value(65)
|
|
|
|
?O.X
|
|
X.*.
|
|
x...
|
|
oabc
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
|
|
|
|
|
|
Pattern D1347
|
|
|
|
OX? capture (possibly with ko)
|
|
XO*
|
|
...
|
|
---
|
|
|
|
:8,a,value(75)
|
|
|
|
OX?
|
|
AO*
|
|
...
|
|
---
|
|
|
|
;!oplay_defend(*,A)
|
|
|
|
|
|
Pattern D1348
|
|
|
|
O.? connect to friendly dragon to escape
|
|
.*O
|
|
|
|
:8,nEa,value(36)
|
|
|
|
a.?
|
|
.*b
|
|
|
|
;owl_escape_value(a)>0 || owl_escape_value(b)>0
|
|
|
|
|
|
Pattern D1348b
|
|
# gf New pattern. (3.3.17)
|
|
|
|
O.? connect to strong friendly dragon to escape
|
|
.*O
|
|
|
|
:8,nEa,value(90)
|
|
|
|
a.?
|
|
.*b
|
|
|
|
;owl_strong_dragon(a) || owl_strong_dragon(b)
|
|
|
|
|
|
Pattern D1348c
|
|
# gf New pattern. (3.3.17)
|
|
|
|
Oxx connect to strong friendly dragon to escape
|
|
.*O
|
|
|
|
:8,nEa,value(90)
|
|
|
|
axx
|
|
.*b
|
|
|
|
;(owl_strong_dragon(a) || owl_strong_dragon(b)) && !oplay_disconnect(*,a,b)
|
|
|
|
|
|
Pattern D1348d
|
|
# gf New pattern. (3.3.17)
|
|
|
|
O.? connect to strong friendly dragon to escape
|
|
.*.
|
|
?.O
|
|
|
|
:8,nEa,value(90)
|
|
|
|
a.?
|
|
.*.
|
|
?.b
|
|
|
|
;owl_strong_dragon(a) || owl_strong_dragon(b)
|
|
|
|
|
|
Pattern D1350
|
|
|
|
?*.. capture lunch to escape (may be undervalued)
|
|
OXO.
|
|
|
|
:8,E,value(85)
|
|
|
|
?*bc
|
|
OAOd
|
|
|
|
;lib(A) == 1
|
|
;&& (owl_escape_value(b) + owl_escape_value(c) + owl_escape_value(d)) > 0
|
|
|
|
|
|
Pattern D1351
|
|
|
|
XO?
|
|
.*X
|
|
o.?
|
|
|
|
:8,E,value(65)
|
|
|
|
XO?
|
|
.*X
|
|
a.?
|
|
|
|
;owl_escape_value(a)>0
|
|
|
|
|
|
Pattern D1352
|
|
|
|
O.OX escape or threaten to
|
|
..*O
|
|
|
|
:8,a,value(80)
|
|
|
|
ObaX
|
|
dc*O
|
|
|
|
;!owl_goal_dragon(a) && xplay_attack_either(b,c,d,b,d)
|
|
|
|
|
|
Pattern D1353
|
|
|
|
X... hane to escape
|
|
.*..
|
|
OX..
|
|
....
|
|
----
|
|
|
|
:8,-,value(80)
|
|
|
|
|
|
Pattern D1354
|
|
|
|
?...? jump away
|
|
?.*.?
|
|
X...x
|
|
?OOO?
|
|
|
|
:8,E,value(65)
|
|
|
|
?abc?
|
|
?.*.?
|
|
X...x
|
|
?OOO?
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
|
|
|
|
|
|
Pattern D1355
|
|
|
|
OXXO connect out
|
|
.O*.
|
|
----
|
|
|
|
:8,-,value(70)
|
|
|
|
aXXb
|
|
.O*.
|
|
----
|
|
|
|
;lib(a)>1 && lib(b)>1
|
|
|
|
|
|
Pattern D1356
|
|
# nn Modified (3.3.13) see also D1356a
|
|
|
|
o.... jump towards safety
|
|
O.*..
|
|
o....
|
|
|
|
:-,E,value(90)
|
|
|
|
o..a.
|
|
d.*b.
|
|
o..c.
|
|
|
|
; (owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0)
|
|
; && !oplay_disconnect(*,d,*)
|
|
|
|
|
|
Pattern D1356a
|
|
# nn New pattern (3.3.13)
|
|
# B attribute since cut possible
|
|
|
|
o.... jump towards safety
|
|
O.*..
|
|
o....
|
|
|
|
:-,BE,value(80)
|
|
|
|
o..a.
|
|
d.*b.
|
|
o..c.
|
|
|
|
; (owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0)
|
|
; && oplay_disconnect(*,d,*)
|
|
|
|
|
|
Pattern D1356b
|
|
# gf New pattern. (3.5.3)
|
|
# See nngs4:40
|
|
|
|
?.... jump towards safety
|
|
O..*.
|
|
o....
|
|
.....
|
|
-----
|
|
|
|
:8,E,value(91)
|
|
|
|
?..a.
|
|
c..*.
|
|
o..b.
|
|
.....
|
|
-----
|
|
|
|
; (owl_escape_value(a) + owl_escape_value(*) + owl_escape_value(b) > 0)
|
|
; && !oplay_disconnect(*,c,*)
|
|
|
|
|
|
Pattern D1357
|
|
|
|
o...o block/connect to escape
|
|
O....
|
|
O.*..
|
|
?OXOo
|
|
|
|
:8,E,value(61)
|
|
|
|
o...a
|
|
O...b
|
|
O.*.c
|
|
?OXOo
|
|
|
|
; owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
|
|
|
|
|
|
Pattern D1358
|
|
|
|
O..? connect to escape
|
|
O.*O
|
|
|
|
:8,Ea,value(61)
|
|
|
|
bde?
|
|
bc*a
|
|
|
|
;(owl_escape_value(a) > 0 || owl_escape_value(b) > 0)
|
|
;&& oplay_attack_either(*,c,d,e,c,e)
|
|
|
|
|
|
Pattern D1359
|
|
|
|
?...?
|
|
.....
|
|
?.*X.
|
|
?..OX
|
|
?.Oo?
|
|
|
|
:8,E,value(65)
|
|
|
|
?bc.?
|
|
a....
|
|
?.*X.
|
|
?..OX
|
|
?.Oo?
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
|
|
|
|
|
|
Pattern D1360
|
|
|
|
??.. run while connecting
|
|
..*.
|
|
.O..
|
|
...x
|
|
.O.x
|
|
|
|
:8,E,value(65)
|
|
|
|
??ac
|
|
..*b
|
|
.O..
|
|
...x
|
|
.O.x
|
|
|
|
;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
|
|
|
|
|
|
Pattern D1361a
|
|
# too generic; see resultant A1121, see also trevor:1050
|
|
# gf Added constraint. (3.1.32)
|
|
# gf Split pattern. (3.5.7)
|
|
|
|
X.X push to expose weakness
|
|
O*.
|
|
?Xo
|
|
|
|
:8,-,value(65)
|
|
|
|
A.B
|
|
O*.
|
|
?Co
|
|
|
|
;!same_string(A,B) && (lib(A) <= 4 || lib(B) <= 4 || lib(C) <= 4)
|
|
|
|
|
|
Pattern D1361b
|
|
# too generic; see resultant A1121, see also trevor:1050
|
|
# gf Added constraint. (3.1.32)
|
|
# gf Split pattern and revised constraint. (3.5.7)
|
|
|
|
X.X push to expose weakness
|
|
O*.
|
|
?XX
|
|
|
|
:8,-,value(65)
|
|
|
|
A.B
|
|
O*.
|
|
?CX
|
|
|
|
;!same_string(A,B) && (lib(A) <= 4 || lib(B) <= 4 || lib(C) <= 4)
|
|
;&& !oplay_connect(*,A,C)
|
|
|
|
|
|
Pattern D1362
|
|
# db added (3.1.8)
|
|
|
|
?X.. try to escape
|
|
?.*.
|
|
O...
|
|
o...
|
|
....
|
|
----
|
|
|
|
:8,-,value(85)
|
|
|
|
|
|
Pattern D1363
|
|
# db added (3.1.8)
|
|
|
|
oOX? force the opponent to cut, exposing thinness
|
|
.*.?
|
|
.XOO
|
|
..X.
|
|
?...
|
|
|
|
:8,B,value(75)
|
|
|
|
|
|
Pattern D1364
|
|
# db added (3.1.8)
|
|
|
|
.OX? atari!
|
|
.XOO
|
|
.*X.
|
|
?...
|
|
|
|
:8,B,value(85)
|
|
|
|
|
|
Pattern D1365
|
|
# db added (3.1.8)
|
|
|
|
OX? atari!
|
|
XOO
|
|
OX*
|
|
...
|
|
|
|
:8,B,value(85)
|
|
|
|
|
|
Pattern D1366
|
|
# db added (3.1.8)
|
|
# gf Revised. (3.1.11)
|
|
|
|
XOO? try to break out
|
|
OXO?
|
|
.X*x
|
|
o...
|
|
?o..
|
|
|
|
:8,-,value(85)
|
|
|
|
Xaa?
|
|
OXa?
|
|
.X*x
|
|
o...
|
|
?o..
|
|
|
|
;owl_goal_dragon(a)
|
|
|
|
|
|
Pattern D1367
|
|
# db added (3.1.11)
|
|
# tm added b attribute.
|
|
# gf Removed b class. (3.3.17)
|
|
|
|
...?
|
|
.*.? jump out
|
|
...X
|
|
?OO?
|
|
|
|
:8,-,value(60)
|
|
|
|
|
|
Pattern D1368
|
|
# gf added (3.1.12)
|
|
|
|
...? move out
|
|
.*X?
|
|
..OX
|
|
XOo?
|
|
|
|
:8,E,value(70)
|
|
|
|
b..?
|
|
.*X?
|
|
..OX
|
|
Xao?
|
|
|
|
;lib(a)>1 && owl_escape_value(b)>0
|
|
|
|
|
|
Pattern D1370
|
|
# gf New pattern. (3.1.13)
|
|
|
|
oo? move out
|
|
..X
|
|
.*.
|
|
XO?
|
|
|
|
:8,E,value(75)
|
|
|
|
ao?
|
|
b.X
|
|
.*.
|
|
XO?
|
|
|
|
;owl_escape_value(a)>0 || owl_escape_value(b)>0
|
|
|
|
|
|
Pattern D1371
|
|
# gf New pattern. (3.1.13)
|
|
# tm Added b class (3.1.20)
|
|
|
|
oOo move out
|
|
...
|
|
.*X
|
|
.O?
|
|
|
|
:8,bE,value(85)
|
|
|
|
oao
|
|
...
|
|
.*X
|
|
.O?
|
|
|
|
;owl_escape_value(a)>0
|
|
|
|
|
|
Pattern D1372
|
|
# gf New pattern. (3.1.14)
|
|
|
|
OX. escape underneath
|
|
.*O
|
|
---
|
|
|
|
:8,E,value(85)
|
|
|
|
aB.
|
|
.*O
|
|
---
|
|
|
|
;owl_escape_value(a)>0 && !attack(B)
|
|
|
|
|
|
Pattern D1373
|
|
# gf New pattern. (3.1.14)
|
|
|
|
o*XO capture to escape
|
|
|
|
:-,bE,value(85)
|
|
|
|
a*BO
|
|
|
|
;owl_escape_value(a)>0 && does_attack(*,B)
|
|
|
|
|
|
Pattern D1374
|
|
# gf New pattern. (3.1.14)
|
|
|
|
oo..Xo connect underneath
|
|
...*O.
|
|
------
|
|
|
|
:8,E,value(55)
|
|
|
|
ab..Xo
|
|
...*O.
|
|
------
|
|
|
|
;o_somewhere(a,b) && owl_escape_value(a) + owl_escape_value(b) > 0
|
|
|
|
|
|
Pattern D1375
|
|
# tm New pattern (3.1.15)
|
|
|
|
O?.? connect out with atari.
|
|
.*XO
|
|
..O.
|
|
|
|
:8,-,value(75)
|
|
|
|
O?.?
|
|
.*AO
|
|
..O.
|
|
|
|
; defend(A)
|
|
|
|
|
|
Pattern D1376
|
|
# tm New Pattern (3.1.16)
|
|
# gf Revised constraint. (3.1.22)
|
|
|
|
OoX?
|
|
x.*O
|
|
----
|
|
|
|
:8,Ea,value(75)
|
|
|
|
bdE?
|
|
xc*a
|
|
----
|
|
|
|
; (owl_escape_value(a) > 0 || owl_escape_value(b) > 0)
|
|
; && ((o_somewhere(d) && oplay_attack_either(*,c,c,E))
|
|
; || (!o_somewhere(d) && !oplay_defend_both(*,c,d,c,E)))
|
|
|
|
|
|
Pattern D1377
|
|
|
|
?????
|
|
OX*.o hane into the open.
|
|
.O..o
|
|
-----
|
|
|
|
:8,-,value(50)
|
|
|
|
?????
|
|
OA*.o
|
|
.O..o
|
|
-----
|
|
|
|
;defend(A)
|
|
|
|
|
|
Pattern D1378
|
|
# tm reduced value (3.1.17)
|
|
# gf Revised constraint. (3.3.18)
|
|
# See also A1126.
|
|
|
|
X*X breakout & attack
|
|
?O?
|
|
|
|
:|,-,value(55)
|
|
|
|
A*B
|
|
?O?
|
|
|
|
; vital_chain(A) && vital_chain(B)
|
|
; && oplay_attack_either(*,A,B) && !oplay_connect(*,A,B)
|
|
|
|
|
|
Pattern D1379
|
|
# tm New Pattern (3.1.17)
|
|
|
|
??? escape or attack.
|
|
x..
|
|
O*X
|
|
?X?
|
|
|
|
:8,E,value(65)
|
|
|
|
?BC
|
|
xeA
|
|
O*X
|
|
?d?
|
|
|
|
; (owl_escape_value(A) > 0
|
|
; || owl_escape_value(B) > 0
|
|
; || owl_escape_value(C) > 0)
|
|
; && !attack(d)
|
|
; && oplay_attack(*,A,d)
|
|
; && oplay_attack(*,e,d)
|
|
|
|
|
|
Pattern D1380
|
|
# tm (?) New Pattern (3.1.17)
|
|
|
|
?.. escape
|
|
.*.
|
|
O.?
|
|
|
|
:8,E,value(65)
|
|
|
|
?AB
|
|
.*C
|
|
O.?
|
|
|
|
; owl_escape_value(A) + owl_escape_value(B) + owl_escape_value(C) > 3
|
|
|
|
|
|
Pattern D1381
|
|
# tm New Pattern (3.1.19)
|
|
|
|
O*.
|
|
?XO
|
|
|
|
:8,Ea,value(70)
|
|
|
|
O*a
|
|
?CB
|
|
|
|
; (owl_escape_value(B) > 0 || owl_escape_value(a) > 0)
|
|
; && oplay_attack_either(*,a,a,C)
|
|
|
|
|
|
Pattern D1382
|
|
# tm New Pattern (3.1.19)
|
|
|
|
.O threaten attack and connect
|
|
*X
|
|
O.
|
|
|
|
:8,Ea,value(70)
|
|
|
|
cA
|
|
*d
|
|
B.
|
|
|
|
; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0)
|
|
; && oplay_attack(*,c,d)
|
|
|
|
|
|
Pattern D1383
|
|
# tm New Pattern (3.1.20)
|
|
# tm added b attribute (3.1.23)
|
|
# gf No escape to second line, see 9x9:550. (3.7.8)
|
|
|
|
?Oo
|
|
...
|
|
?*.
|
|
?.?
|
|
???
|
|
|
|
:8,sbE,value(71)
|
|
|
|
?Bo
|
|
...
|
|
?*.
|
|
?a?
|
|
???
|
|
|
|
;(owl_escape_value(a) > 0)
|
|
; && !oplay_disconnect(*,*,B)
|
|
|
|
|
|
Pattern D1384
|
|
# tm New Pattern (3.1.22) (see strategy2:73)
|
|
# may not be necessary, but probably doesn't hurt.
|
|
# (doesn't work for strategy2:73; no matching stones are in dragon)
|
|
|
|
O.. escape or capture to escape
|
|
.*?
|
|
?.O
|
|
|
|
:8,E,value(65)
|
|
|
|
A..
|
|
.*c
|
|
?dB
|
|
|
|
; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0)
|
|
; && (!x_somewhere(c) || oplay_attack_either(*,d,c,d))
|
|
|
|
|
|
Pattern D1385
|
|
# tm New Pattern (3.1.23)
|
|
|
|
.O escape or capture
|
|
..
|
|
X*
|
|
?O
|
|
|
|
:8,E,value(75)
|
|
|
|
fB
|
|
dc
|
|
e*
|
|
?A
|
|
|
|
; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0)
|
|
; && (oplay_attack(*,c,d,f,e) && oplay_attack(*,c,d,f,f))
|
|
|
|
|
|
Pattern D1386a
|
|
# gf New pattern. (3.3.17)
|
|
|
|
OX.x connect along edge to strong dragon
|
|
o*.O
|
|
----
|
|
|
|
:8,Eb,value(90)
|
|
|
|
aX.x
|
|
o*.b
|
|
----
|
|
|
|
;owl_strong_dragon(a) || owl_strong_dragon(b)
|
|
|
|
|
|
Pattern D1386b
|
|
# gf New pattern. (3.3.17)
|
|
|
|
OX.x connect along edge
|
|
o*.O
|
|
----
|
|
|
|
:8,Eb,value(35)
|
|
|
|
aX.x
|
|
o*.b
|
|
----
|
|
|
|
;owl_escape_value(a)>0 || owl_escape_value(b)>0
|
|
|
|
|
|
Pattern D1387
|
|
# gf New pattern. (3.3.17)
|
|
|
|
??o? atari to break out
|
|
o...
|
|
*X.X
|
|
XOo?
|
|
|
|
:8,EB,value(75)
|
|
|
|
?dce
|
|
o...
|
|
*X.X
|
|
Bao?
|
|
|
|
;(owl_escape_value(c)>0 || owl_escape_value(d)>0 || owl_escape_value(e)>0)
|
|
;&& lib(B)==2 && olib(*)>=2 && !oplay_attack(*,a)
|
|
|
|
|
|
Pattern D1388
|
|
# gf New pattern. (3.3.17)
|
|
|
|
??o? atari to break out
|
|
o...
|
|
OX*X
|
|
?Oo?
|
|
|
|
:8,Eb,value(75)
|
|
|
|
?cbd
|
|
o...
|
|
OX*X
|
|
?ao?
|
|
|
|
;(owl_escape_value(b)>0 || owl_escape_value(c)>0 || owl_escape_value(d)>0)
|
|
;&& !oplay_attack(*,a)
|
|
|
|
|
|
Pattern D1389
|
|
# gf New pattern. (3.3.18)
|
|
# gf Added a classification. (3.7.10)
|
|
# See also D1340.
|
|
|
|
OX.O
|
|
?*.?
|
|
----
|
|
|
|
:8,Ea,value(84)
|
|
|
|
aX.b
|
|
?*.?
|
|
----
|
|
|
|
;(owl_strong_dragon(a) || owl_strong_dragon(b)) && !oplay_disconnect(*,a,b)
|
|
|
|
|
|
Pattern D1390
|
|
# pp New pattern (3.5.2)
|
|
|
|
???.O either capture or escape
|
|
o*...
|
|
OX..?
|
|
?x.??
|
|
-----
|
|
|
|
:8,b,value(80)
|
|
|
|
???dC
|
|
o*bc.
|
|
ABa.?
|
|
?x.??
|
|
-----
|
|
|
|
; owl_escape_value(d) > 0
|
|
; && oplay_attack_either(*,a,b,c,d,B,c) && oplay_connect(*,a,b,c,d,?,A,C)
|
|
|
|
|
|
Pattern D1391
|
|
# gf New pattern. (3.5.3)
|
|
# gf Revised pattern. (3.7.2)
|
|
# See owl1:353.
|
|
|
|
.O*O connect out
|
|
OX??
|
|
|
|
:8,a,value(80)
|
|
|
|
bO*a
|
|
dC??
|
|
|
|
;owl_escape_value(a) > 0 && oplay_attack_either(*,b,C,b)
|
|
;&& !xplay_connect(*,a,d)
|
|
|
|
|
|
Pattern D1392
|
|
# evand New pattern. (3.7.1)
|
|
# sometimes forcing is better than the cut -- see gifu03:704
|
|
|
|
O.X
|
|
*XO
|
|
|
|
:8,b,value(40)
|
|
|
|
O.X
|
|
*AO
|
|
|
|
;lib(A) == 2
|
|
|
|
|
|
Pattern D1393
|
|
# pp New pattern, see kgs:500 (3.7.4)
|
|
|
|
O.O. secure escape connection by first threatening opponent
|
|
?*XO
|
|
|
|
:8,B,value(50)
|
|
|
|
A.Ca
|
|
?*DB
|
|
|
|
# Note: xplay_disconnect() to avoid generating this move when it is
|
|
# not really needed.
|
|
|
|
; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0)
|
|
; && xplay_disconnect(A,C) && oplay_attack(*,a,D)
|
|
|
|
|
|
Pattern D1394
|
|
#pp New pattern, see kgs:500 (3.7.4)
|
|
|
|
O.O* connect out!
|
|
??XO
|
|
|
|
:8,a,value(70)
|
|
|
|
A.O*
|
|
??XB
|
|
|
|
; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0)
|
|
; && safe_xmove(*) && !oplay_disconnect(*,A,B)
|
|
|
|
|
|
Pattern D1395
|
|
# gf New pattern. (3.7.4)
|
|
# See gunnar:73.
|
|
|
|
?OXO
|
|
OX*x
|
|
----
|
|
|
|
:8,sb,value(40)
|
|
|
|
?bXa
|
|
OX*x
|
|
----
|
|
|
|
;(owl_escape_value(a) > 0 || owl_escape_value(b) > 0)
|
|
;&& oplay_disconnect(*,a,b) != WIN
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Ko #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern D1400
|
|
|
|
---- connect (don't fight ko)
|
|
..X?
|
|
O*OX
|
|
?OX?
|
|
|
|
:8,-,value(95)
|
|
|
|
----
|
|
..C?
|
|
O*OA
|
|
?OB?
|
|
|
|
;lib(A)>1 && lib(B)>1 && lib(C)>1
|
|
|
|
|
|
Pattern D1400b
|
|
|
|
---- capture, no ko
|
|
.*X?
|
|
O.OX
|
|
?OX?
|
|
|
|
:8,-,value(95)
|
|
|
|
----
|
|
.*A?
|
|
O.OX
|
|
?OX?
|
|
|
|
;lib(A)==1
|
|
|
|
|
|
Pattern D1401
|
|
|
|
---- do fight ko
|
|
.*X?
|
|
O.OX
|
|
?OX?
|
|
|
|
:8,-,value(35)
|
|
|
|
----
|
|
.*X?
|
|
O.OA
|
|
?OB?
|
|
|
|
; (lib(A)>1) && (lib(B)>1)
|
|
|
|
|
|
Pattern D1402
|
|
|
|
.OX? take the ko
|
|
OX*X
|
|
----
|
|
|
|
:8,s,value(45)
|
|
|
|
aBX?
|
|
OX*X
|
|
----
|
|
|
|
; (legal_omove(*) && owl_topological_eye(a,B)==3)
|
|
; || (!legal_omove(*) && owl_topological_eye(a,B)==2)
|
|
|
|
|
|
Pattern D1403
|
|
|
|
|XO? corner ko capture
|
|
|*XO
|
|
+---
|
|
|
|
:8,s,value(30)
|
|
|
|
|
|
Pattern D1404
|
|
|
|
|..O start corner ko
|
|
|*XO
|
|
|.OX
|
|
+---
|
|
|
|
:8,s,value(80)
|
|
|
|
|..O
|
|
|*AO
|
|
|.OX
|
|
+---
|
|
|
|
;oplay_defend(*,A) != WIN
|
|
|
|
|
|
Pattern D1405
|
|
|
|
|X.O start or continue corner ko
|
|
|*XO
|
|
|xOo
|
|
+---
|
|
|
|
:8,s,value(80)
|
|
|
|
|X.O
|
|
|*AO
|
|
|xOo
|
|
+---
|
|
|
|
;oplay_defend(*,A) != WIN
|
|
|
|
|
|
Pattern D1405b
|
|
|
|
|X.O start or continue corner ko
|
|
|OXO
|
|
|.*o
|
|
+---
|
|
|
|
:8,s,value(80)
|
|
|
|
|X.O
|
|
|OAO
|
|
|.*o
|
|
+---
|
|
|
|
;oplay_defend(*,A) != WIN
|
|
|
|
|
|
Pattern D1406
|
|
|
|
|X*O try to avoid corner ko
|
|
|.XO
|
|
|.Oo
|
|
+---
|
|
|
|
:8,-,value(55)
|
|
|
|
|
|
Pattern D1407
|
|
|
|
|.OX? defend corner eye space
|
|
|..O?
|
|
|.O*X
|
|
|....
|
|
+----
|
|
|
|
:8,-,value(75)
|
|
|
|
|
|
Pattern D1408
|
|
|
|
?X?? take ko
|
|
X*X?
|
|
OXOX
|
|
?O.O
|
|
|
|
:8,s,value(45)
|
|
|
|
|
|
Pattern D1409
|
|
|
|
?X?| take ko
|
|
X*X|
|
|
OXO|
|
|
?O.|
|
|
|
|
:8,s,value(45)
|
|
|
|
|
|
Pattern D1410
|
|
|
|
?OO| throw in to set up ko or squeeze
|
|
O.X|
|
|
OOX|
|
|
o.*|
|
|
---+
|
|
|
|
:8,s,value(35)
|
|
|
|
|
|
Pattern D1411
|
|
|
|
|*XO play corner ko
|
|
|XO.
|
|
+---
|
|
|
|
:8,s,value(45)
|
|
|
|
|*AO
|
|
|XO.
|
|
+---
|
|
|
|
;attack(A) != 0
|
|
|
|
|
|
Pattern D1411b
|
|
|
|
|*XO play corner ko
|
|
|XOo
|
|
+---
|
|
|
|
:8,s,value(35)
|
|
|
|
|*AO
|
|
|XOo
|
|
+---
|
|
|
|
;oplay_defend(*,A) != WIN
|
|
|
|
|
|
Pattern D1412
|
|
|
|
|O?? capture to finish ko
|
|
|.OO
|
|
|OX*
|
|
+---
|
|
|
|
:8,-,value(35)
|
|
|
|
|
|
Pattern D1413
|
|
|
|
|O?? squeeze to finish ko
|
|
|XOO
|
|
|.X*
|
|
+---
|
|
|
|
:8,-,value(35)
|
|
|
|
|a??
|
|
|XOO
|
|
|.X*
|
|
+---
|
|
|
|
;lib(a) > 1
|
|
|
|
|
|
Pattern D1414
|
|
|
|
|oo??? try to live with double ko
|
|
|.O???
|
|
|XOO??
|
|
|.XO*o
|
|
|X.X.o
|
|
+-----
|
|
|
|
:8,-,value(45)
|
|
|
|
|
|
Pattern D1415
|
|
# Generalizes D1412. Necessary to have one O stone in the pattern to
|
|
# identify the goal.
|
|
|
|
?O capture to finish ko
|
|
X*
|
|
|
|
:8,-,value(35)
|
|
|
|
?O
|
|
A*
|
|
|
|
;lib(A)==1 && finish_ko_helper(A)
|
|
|
|
|
|
Pattern D1416
|
|
# Generalizes D1412. Necessary to have one O stone in the pattern to
|
|
# identify the goal.
|
|
|
|
X*O capture to finish ko
|
|
|
|
:-,-,value(35)
|
|
|
|
A*O
|
|
|
|
;lib(A)==1 && finish_ko_helper(A)
|
|
|
|
|
|
Pattern D1417
|
|
# Generalizes D1413. Necessary to have one O stone in the pattern to
|
|
# identify the goal.
|
|
|
|
?O squeeze to finish ko
|
|
X*
|
|
|
|
:8,-,value(35)
|
|
|
|
?O
|
|
A*
|
|
|
|
;lib(A)==2 && olib(*)>1 && squeeze_ko_helper(A)
|
|
|
|
|
|
Pattern D1418
|
|
# Generalizes D1413. Necessary to have one O stone in the pattern to
|
|
# identify the goal.
|
|
|
|
X*O squeeze to finish ko
|
|
|
|
:-,-,value(35)
|
|
|
|
A*O
|
|
|
|
;lib(A)==2 && olib(*)>1 && squeeze_ko_helper(A)
|
|
|
|
|
|
Pattern D1419
|
|
|
|
oOX? take ko to preserve eye
|
|
O.OX
|
|
XOX*
|
|
----
|
|
|
|
:8,s,value(35)
|
|
|
|
oOX?
|
|
O.OX
|
|
AOX*
|
|
----
|
|
|
|
;attack(A)
|
|
|
|
|
|
Pattern D1420
|
|
|
|
oOX? take ko to preserve eye
|
|
O.OX
|
|
.OX*
|
|
----
|
|
|
|
:8,s,value(35)
|
|
|
|
oOX?
|
|
O.OX
|
|
aOX*
|
|
----
|
|
|
|
;!safe_xmove(a)
|
|
|
|
|
|
Pattern D1421
|
|
|
|
xXO avoid ko
|
|
X.*
|
|
---
|
|
|
|
:8,s,value(25)
|
|
|
|
xXa
|
|
X.*
|
|
---
|
|
|
|
;xplay_defend(*,a) != WIN && oplay_attack(*,a) == 0
|
|
|
|
|
|
Pattern D1422
|
|
|
|
|XX?? keep ko going
|
|
|OXOO
|
|
|.OXX
|
|
|O.O*
|
|
+----
|
|
|
|
:8,s,value(25)
|
|
|
|
|XX??
|
|
|OXOO
|
|
|.OAA
|
|
|O.O*
|
|
+----
|
|
|
|
;lib(A)==1
|
|
|
|
|
|
Pattern D1423
|
|
# gf New pattern. (3.3.6)
|
|
|
|
|OO? throw in to make ko or better
|
|
|.O?
|
|
|XOO
|
|
|*.O
|
|
+---
|
|
|
|
:8,s,value(45)
|
|
|
|
|
|
Pattern D1424
|
|
# pp New pattern (3.3.12)
|
|
|
|
|Oo? avoid corner ko
|
|
|.Oo
|
|
|oX*
|
|
+---
|
|
|
|
:8,-,value(45)
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Threats to capture #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern DC01a
|
|
# pp New pattern (3.5.5).
|
|
|
|
??? threaten to cut off vital chain
|
|
X.X
|
|
O*?
|
|
|
|
:8,c, threatens_to_capture(A), value(35)
|
|
|
|
abc
|
|
AdX
|
|
O*?
|
|
|
|
; o_somewhere(a,b,c) && vital_chain(A) && !oplay_defend(*,?,d,A)
|
|
|
|
|
|
Pattern DC01b
|
|
# pp New pattern (3.5.5).
|
|
|
|
??? threaten to cut off vital chain
|
|
X.X
|
|
O*?
|
|
|
|
:8,c, threatens_to_capture(B), value(35)
|
|
|
|
abc
|
|
XdB
|
|
O*?
|
|
|
|
; o_somewhere(a,b,c) && vital_chain(B) && !oplay_defend(*,?,d,B)
|
|
|
|
|
|
Pattern DC02
|
|
# pp New pattern (3.5.5) -- see ld_owl:316.
|
|
|
|
OX.?
|
|
OX..
|
|
.*..
|
|
----
|
|
|
|
:8,c, threatens_to_capture(A), value(35)
|
|
|
|
ABb?
|
|
AB..
|
|
.*..
|
|
----
|
|
|
|
; lib(A) >= 3 && lib(B) == 3 && olib(b) > 2
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Threats to create eyes #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern DE01a
|
|
# pp New pattern (3.5.5).
|
|
|
|
?O*?
|
|
....
|
|
xOOO
|
|
|
|
:8,c, threatens_eye(a), value(30)
|
|
|
|
?O*?
|
|
..a.
|
|
xOOO
|
|
|
|
|
|
Pattern DE01b
|
|
# pp New pattern (3.5.5).
|
|
|
|
?O*?
|
|
....
|
|
OOOo
|
|
|
|
:8,c, threatens_eye(a), value(30)
|
|
|
|
?O*?
|
|
.a..
|
|
OOOo
|
|
|
|
|
|
Pattern DE02
|
|
# pp New pattern (3.5.5).
|
|
|
|
?O*
|
|
O..
|
|
---
|
|
|
|
:8,c, threatens_eye(a), value(30)
|
|
|
|
bO*
|
|
Oa.
|
|
---
|
|
|
|
; o_somewhere(b)
|
|
; || (x_somewhere(b) ? !oplay_defend(*,b) : !oplay_defend(*,b,b))
|
|
|
|
|
|
Pattern DE03
|
|
# pp New pattern (3.5.5) -- see owl1:326.
|
|
|
|
OO?
|
|
..*
|
|
---
|
|
|
|
:8,c, threatens_eye(a), value(30)
|
|
|
|
OOb
|
|
.a*
|
|
---
|
|
|
|
; o_somewhere(b)
|
|
; || (x_somewhere(b) ? !oplay_defend(*,b) : !oplay_defend(*,b,b))
|
|
|
|
|
|
Pattern DE04
|
|
# pp New pattern (3.5.5) -- see owl1:326.
|
|
|
|
xXOo?
|
|
XO.O?
|
|
X.OX*
|
|
-----
|
|
|
|
:8,c, threatens_eye(a), value(30)
|
|
|
|
xXOo?
|
|
XOaO?
|
|
X.OX*
|
|
-----
|
|
|
|
|
|
#########################################################
|
|
# #
|
|
# Reverse sente defending moves #
|
|
# #
|
|
#########################################################
|
|
|
|
|
|
Pattern DR01
|
|
# pp New pattern (3.5.5) -- see ld_owl:316.
|
|
# FIXME: most likely need variations for other first line moves.
|
|
|
|
?.OX? prevent X's sente move at 'a'
|
|
..OXx
|
|
...*.
|
|
-----
|
|
|
|
:8,c, reverse_sente(a), value(30)
|
|
|
|
?.OB?
|
|
.aOBx
|
|
...*.
|
|
-----
|
|
|
|
; owl_proper_eye(a) && !attack(B)
|
|
|
|
|
|
# END OF FILE
|