Initial commit of GNU Go v3.8.
[sgk-go] / patterns / owl_defendpats.db
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# This is GNU Go, a Go program. Contact gnugo@gnu.org, or see #
# http://www.gnu.org/software/gnugo/ for more information. #
# #
# Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, #
# 2008 and 2009 by the Free Software Foundation. #
# #
# This program is free software; you can redistribute it and/or #
# modify it under the terms of the GNU General Public License #
# as published by the Free Software Foundation - version 3, #
# or (at your option) any later version. #
# #
# This program is distributed in the hope that it will be #
# useful, but WITHOUT ANY WARRANTY; without even the implied #
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR #
# PURPOSE. See the GNU General Public License in file COPYING #
# for more details. #
# #
# You should have received a copy of the GNU General Public #
# License along with this program; if not, write to the Free #
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, #
# Boston, MA 02111, USA #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
# The 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