Updated README: Equal sign not required with `--mode` flag.
[sgk-go] / patterns / owl_defendpats.db
CommitLineData
7eeb782e
AT
1# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
2# This is GNU Go, a Go program. Contact gnugo@gnu.org, or see #
3# http://www.gnu.org/software/gnugo/ for more information. #
4# #
5# Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, #
6# 2008 and 2009 by the Free Software Foundation. #
7# #
8# This program is free software; you can redistribute it and/or #
9# modify it under the terms of the GNU General Public License #
10# as published by the Free Software Foundation - version 3, #
11# or (at your option) any later version. #
12# #
13# This program is distributed in the hope that it will be #
14# useful, but WITHOUT ANY WARRANTY; without even the implied #
15# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR #
16# PURPOSE. See the GNU General Public License in file COPYING #
17# for more details. #
18# #
19# You should have received a copy of the GNU General Public #
20# License along with this program; if not, write to the Free #
21# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, #
22# Boston, MA 02111, USA #
23# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
24#
25# The Owl defensive pattern database.
26#
27# Further documentation may be found in the Texinfo documentation
28#
29# First there is a pattern title of the form: Pattern [string]. The
30# string is used for identifying the pattern while tuning or debugging.
31#
32# Then a block of the following characters representing the pattern
33# itself.
34#
35# ? : don't care
36# . : empty
37# X : your piece,
38# O : my piece,
39# x : your piece or empty
40# o : my piece or empty
41# * : my next move
42# -, | : edge of board
43# + : corner of board
44#
45# If a pattern must not match at the edge of the board,
46# an extra row of ?'s in the pattern may be added. (This
47# will not add to the time taken to check the pattern.)
48#
49#################
50#
51# In the second field (classification) the following pattern attributes
52# are possible. Friendly stones are 'O', opponent stones are 'X'.
53#
54# s : "Sacrifice" pattern. Omit the usual check that an O stone here
55# cannot be capture.
56#
57# n : In addition to usual check that an O stone here cannot be
58# captured, check also that an X move cannot be captured.
59#
60# B : This move is not connected to the goal dragon and should
61# therefore not be included in the goal.
62#
63# b : This move is maybe not connected to the goal dragon and should
64# therefore be included only after closer examination.
65#
66# a : This move connects all O stones in the pattern to the goal.
67#
68#################
69#
70# The patterns in this database are sorted into the following
71# categories:
72#
73# Dxx Expanding moves on the fourth line
74# D1xx Expanding moves on the third line
75# D2xx Expanding moves on the second line
76# D3xx Expanding moves in the center
77# D4xx Expanding moves in the corner
78# D5xx Defend one worm of the dragon
79# D6xx Make eyeshape on the edge
80# D7xx Make eyeshape in the center
81# D8xx Make eyeshape in the corner
82# D9xx Prevent intrusion
83# D10xx Prevent a cut
84# D11xx Attack a defect in the perimeter
85# D12xx Kikashi
86# D13xx Escape
87# D14xx Ko
88#
89# DCxx Threats to capture
90# DExx Threats to create eyes
91# DRxx Reverse sente defending moves
92
93
94attribute_map owl_defense
95
96goal_elements Oo
97callback_data none
98
99
100#########################################################
101# #
102# Expanding moves on the fourth line #
103# #
104#########################################################
105
106
107Pattern D1
108
109?X.. jump out safely
110O.*.
111O...
112....
113....
114----
115
116:8,-,value(75)
117
118?X..
119Oa*.
120Obc.
121....
122....
123----
124
125; oplay_attack(*,a,b,c,c)
126
127
128Pattern D2
129
130.... hane if attached
131.*X.
132..Oo
133....
134....
135----
136
137:8,-,value(55)
138
139
140Pattern D3
141
142..X? push to expand
143..*O
144....
145....
146....
147----
148
149:8,-,value(77)
150
151
152Pattern D4
153
154.X.. extend along the fourth line
155oO*.
156....
157....
158....
159----
160
161:8,-,value(83)
162
163
164#########################################################
165# #
166# Expanding moves on the third line #
167# #
168#########################################################
169
170
171Pattern D100
172
173?XX? Push along third line
174?O*.
175....
176....
177----
178
179:8,-,value(80)
180
181
182Pattern D101
183
184?Xx?? Slide from fourth to third line
185OO..?
186...*.
187.....
188.....
189-----
190
191:8,-,value(80)
192
193
194Pattern D102
195
196?x.?
197XX*. Escape!
198OO..
199....
200----
201
202:8,-,value(80)
203
204
205Pattern D103
206
207?O.?
208XX*. Escape!
209OO..
210....
211----
212
213:8,-,value(85)
214
215
216Pattern D104
217
218??*O save one stone
219XO..
220....
221----
222
223:8,-,value(75)
224
225??*O
226Xa..
227....
228----
229
230;attack(a) && !oplay_attack(*,a)
231
232
233Pattern D104b
234
235?O.O* save two stones while extending
236XO...
237.....
238-----
239
240:8,-,value(80)
241
242?a.O*
243Xa...
244.....
245-----
246
247;attack(a) && !oplay_attack(*,a)
248
249
250Pattern D105
251
252|..O?
253|..O? try before extension
254|.OXo
255|..*?
256
257:8,-,value(80)
258
259
260Pattern D106
261
262X.OX? hanging connection on third line
263.*.OO
264.....
265.....
266-----
267
268:8,-,value(80)
269
270
271Pattern D107
272
273?..x attach
274.X.O
275.*..
276....
277....
278----
279
280:8,B,value(70)
281
282
283Pattern D108
284
285?..x pull back
286.X.O
287XO*.
288....
289....
290----
291
292:8,-,value(80)
293
294
295Pattern D109
296# gf Added b classification. (3.3.17)
297
298?..x extend
299.X.O
300*O..
301....
302....
303----
304
305:8,b,value(95)
306
307
308Pattern D110
309
310.....X. one space jump to live
311.*.O.oX
312.....OO
313.......
314-------
315
316:8,-,value(75)
317
318
319Pattern D111
320
321.Xx push on third line
322.*O
323...
324...
325---
326
327:8,-,value(79)
328
329
330Pattern D112
331
332o....? two space jump
333O..*.?
334o...oo
335.....o
336------
337
338:8,-,value(80)
339
340
341Pattern D113
342
343?xX.. draw back on the third line
344X.O*.
345.....
346.....
347-----
348
349:8,-,value(80)
350
351
352Pattern D114
353
354..X push to defend
355X*O
356...
357...
358---
359
360:8,-,value(77)
361
362
363Pattern D115
364
365?X.? knight's move if safe
366?.*.
367O..o
368....
369----
370
371:8,-,value(76)
372
373?X.?
374?b*.
375Oa.o
376....
377----
378
379; !oplay_defend(*,a,b,a)
380
381
382Pattern D116
383
384O*X climb to third line
385..O
386...
387---
388
389:8,-,value(50)
390
391O*X
392..a
393...
394---
395
396;lib(a) >= 4
397
398
399Pattern D117
400# tm modified (3.1.22)
401# gf Fixed diagram inconsistency. (3.1.23)
402
403?*O.X extend on third line
404o...O
405?....
406-----
407
408:8,-,value(70)
409
410?*O.X
411o...a
412?....
413-----
414
415;lib(a) >= 4
416
417
418Pattern D118
419# This is usually better than D213 when both match.
420
421?OX? hane to expand
422O.*.
423....
424....
425----
426
427:8,-,value(81)
428
429?aX?
430O.*.
431....
432....
433----
434
435;lib(a)>1
436
437
438Pattern D119
439# This is usually better than D213 when both match.
440
441OOX?? hane to expand
442..O*.
443.....
444.....
445-----
446
447:8,-,value(81)
448
449
450Pattern D120
451
452??xxx? better to make a base than jump in the center
453?O...X
454o..*..
455......
456......
457------
458
459:8,-,value(82)
460
461
462Pattern D121
463
464...... jump to maximum eyespace on third line
465O.*.X.
466......
467......
468------
469
470:8,-,value(40)
471
472
473Pattern D122
474
475??... hane moving out
476XX*..
477OO...
478.....
479.....
480-----
481
482:8,-,value(80)
483
484??...
485XX*..
486OOa..
487.....
488.....
489-----
490
491; oplay_attack(*,a,a)
492
493
494Pattern D123
495# tm New Pattern (3.1.17)
496# tm Modified (3.1.18)
497# spl modified (3.3.23)
498
499??x??
500??*O? expand eye shape, not in corner
501oO.O?
502?...?
503-----
504
505:8,-,value(65)
506
507
508Pattern D124
509# tm New Pattern (3.1.20) (see trevorb:660)
510# ab Revised constraint.
511
512?X.. split off weak stones
513o*OO
514o.Xx
515o...
516----
517
518:8,-,value(81)
519
520?X..
521a*OO
522obcx
523o...
524----
525
526;oplay_attack(*,a,b,c) && !attack(c)
527
528
529Pattern D125
530# gf New pattern. (3.5.3)
531
532?oo?
533...X escape or build further on the edge
534.X*.
535.o.O
536....
537----
538
539:8,-,value(77)
540
541?ab?
542...X
543.X*.
544.o.O
545....
546----
547
548;owl_escape_value(a)>0 || owl_escape_value(b)>0
549
550
551Pattern D126
552# gf New pattern. (3.5.5)
553# See ld_owl:501.
554
555|..?Ooo
556|.XX.oo
557|...X.X peep in the corner
558|..O.*.
559|......
560|......
561+------
562
563:8,-,value(85)
564
565
566Pattern D127
567# ab New pattern (3.7.1)
568
569???..o
570?..*Oo
571oO.X.o
572o....o
573------
574
575:8,-,value(80)
576
577
578#########################################################
579# #
580# Expanding moves on the second line #
581# #
582#########################################################
583
584
585Pattern D200
586
587?XX?? Slide
588OO...
589...*.
590.....
591-----
592
593:8,-,value(80)
594
595
596Pattern D201
597
598?XX?? Slide
599OO..X
600...*.
601.....
602-----
603
604:8,-,value(81)
605
606
607Pattern D202
608
609?X.. Hane on second line
610OOX.
611..*.
612....
613----
614
615:8,-,value(80)
616
617
618Pattern D203
619
620XX.. Push!
621O*..
622....
623----
624
625:8,-,value(80)
626
627
628Pattern D204
629# tm Pattern revised. (3.1.13)
630# tm Pattern revised. (3.1.14)
631
632??X? push
633?O*.
634?.x.
635----
636
637:8,-,value(60)
638
639??X?
640AO*.
641?.x.
642----
643
644;!x_somewhere(A) || !defend(A)
645
646
647Pattern D205
648
649?X? hane
650?OX
651O.*
652...
653---
654
655:8,-,value(60)
656
657
658Pattern D206
659#tm revised 3.1.14
660
661?XxX? extend
662oO*?x
663?....
664-----
665
666:8,-,value(65)
667
668
669Pattern D207
670# tm reduced value (3.1.22) (see nngs:710)
671# gf Modified. (3.3.6)
672
673?O.X second line kosumi
674o.*x
675o...
676----
677
678:8,-,value(66)
679
680
681Pattern D208
682# db reduced slightly (3.1.8)
683# tm reduced some more (3.1.22) (see nngs:710)
684
685???o second line keima
686X..O
687.*..
688....
689----
690
691:8,-,value(65)
692
693
694Pattern D209
695
696?OO block on edge
697X*.
698...
699---
700
701:8,n,value(70)
702
703
704Pattern D209a
705# tm New pattern (3.1.15)
706
707?OO sente block on first line.
708X..
709.*.
710---
711
712:8,n,value(35)
713
714?OO
715B..
716.*.
717---
718
719; oplay_attack(*,B)
720
721
722Pattern D209b
723#spl modified 3.5.1
724
725?O.o block on edge
726X*.o
727....
728----
729
730:8,n,value(70)
731
732
733Pattern D210
734
735?OO? expand eyespace
736X*.O
737....
738----
739
740:8,-,value(70)
741
742
743Pattern D211
744
745|..O
746|..O try before hanging connection
747|.OX
748|.*x
749|.x?
750
751:8,-,value(71)
752
753
754Pattern D212
755# gf FIXME: This is not a second line move. Move the pattern.
756
757??O??? capture one stone to improve eye space
758?..OX?
759.XOX*o
760------
761
762:8,-,value(75)
763
764
765Pattern D213
766
767??X? slide
768O..x
769..*.
770....
771----
772
773:8,-,value(80)
774
775??X?
776Oa.x
777cb*.
778....
779----
780
781;oplay_attack_either(*,a,b,c,a,c)
782
783
784Pattern D214
785
786oOx
787.*X
788...
789---
790
791:8,-,value(50)
792
793
794Pattern D215
795
796??.. urgent hane
797..XX
798.XOO
799.*..
800....
801----
802
803:8,-,value(80)
804
805
806Pattern D216
807
808.O.?
809O.*. make eye on edge
810....
811----
812
813:8,-,value(75)
814
815
816Pattern D217
817# tm Pattern revised. (3.1.13)
818# tm Pattern revised. (3.1.17)
819# gf FIXME: This constraint is weird. (3.1.23)
820
821o...
822O.*. expand eyespace
823xx..
824----
825
826:8,-,value(60)
827
828o...
829O.*.
830Ax..
831----
832
833; oplay_attack(*,A)
834
835
836Pattern D217a
837# tm Pattern added (3.1.14)
838# see owl:170
839
840?...
841O.*.
842.x..
843----
844
845:8,-,value(50)
846
847?...
848O.*.
849.A..
850----
851
852; !oplay_defend(*,A)
853
854
855Pattern D217b
856
857O.XO
858O.*. expand eyespace
859....
860----
861
862:8,-,value(80)
863
864
865Pattern D217c
866# tm added (3.1.14)
867# see trevor:401
868# Possible to sacrifice to gain tempo here.
869# nn Modified (3.3.13)
870
871O.X? expand eye-space
872O.*.
873.x.o
874----
875
876:8,s,value(10)
877
878
879Pattern D218
880
881xx...X. slide (usually inferior to play on third line)
882...O.oX
883.*...OO
884.......
885-------
886
887:8,-,value(70)
888
889
890Pattern D220
891# tm modified (3.1.17)
892
893?oo.x jump to enlarge eyespace
894oO.*x
895....x
896-----
897
898:8,-,value(40)
899
900abo.x
901cO.*x
902....x
903-----
904
905; o_somewhere(a,b,c)
906
907
908Pattern D221
909
910oo?x jump along second line
911O.*.
912....
913----
914
915:8,-,value(35)
916
917
918Pattern D221b
919# gf New pattern. (3.5.3)
920
921oo?x jump along second line
922O.*.
923O...
924----
925
926:8,-,value(45)
927
928
929Pattern D222
930# tm Pattern revised. (3.1.13)
931
932???? come straight out
933xX.?
934OO*.
935..x.
936----
937
938:8,-,value(75)
939
940
941Pattern D223
942
943O.XX? push
944..O*o
945....o
946-----
947
948:8,-,value(70)
949
950ObXX?
951.ac*o
952....o
953-----
954
955;xplay_attack(a,b,c) && !oplay_attack(*,a,b,c)
956
957
958Pattern D224
959
960??xX extend
961oO*.
962o...
963----
964
965:8,-,value(30)
966
967
968Pattern D225
969
970??X?? draw back
971.O.OO
972XO*..
973.X...
974-----
975
976:8,-,value(45)
977
978
979Pattern D226
980# gf New pattern. (3.1.12)
981
982?oO threaten to escape and cut
983X.o
984O*X
985...
986---
987
988:8,E,value(45)
989
990?ob
991X.o
992a*X
993...
994---
995
996;owl_goal_dragon(a) && owl_escape_value(b)>0
997
998
999Pattern D227
1000# gf New pattern. (3.1.13)
1001
1002X.O. jump and threaten to cut, connect, or force
1003OX..
1004O.*.
1005o...
1006----
1007
1008:8,-,value(65)
1009
1010X.O.
1011aX..
1012a.*.
1013o...
1014----
1015
1016;owl_goal_dragon(a) && !oplay_attack(*,a)
1017
1018
1019Pattern D228
1020# gf New pattern. (3.1.13)
1021
1022X.O. followup
1023OXX*
1024O.O.
1025o...
1026----
1027
1028:8,-,value(65)
1029
1030X.O.
1031aXX*
1032a.O.
1033o...
1034----
1035
1036;owl_goal_dragon(a) && !oplay_attack(*,a)
1037
1038
1039Pattern D229
1040# gf New pattern. (3.1.14)
1041
1042XOoo capture or threaten to capture, improving eyespace
1043OX*o
1044....
1045----
1046
1047:8,-,value(76)
1048
1049XOoo
1050OX*o
1051...a
1052----
1053
1054;owl_eyespace(a)
1055
1056
1057Pattern D230
1058# tm New Pattern (3.1.16)
1059# gf Not down to edge. (3.3.20)
1060# gf Not if it can be cut off. Constraint added. (3.5.3)
1061
1062?OO...? expand along edge.
1063o....*?
1064?.....?
1065-------
1066
1067:8,-,value(80)
1068
1069?Ob...?
1070o...a*?
1071?.....?
1072-------
1073
1074;oplay_connect(*,a,*,b)
1075
1076
1077Pattern D231
1078# tm New Pattern (3.1.20) (see nngs:1320 owl_does_attack L15 M17)
1079
1080---- attach under
1081.ooo
1082*..o
1083X.Oo
1084..??
1085????
1086
1087:8,sbE,value(70)
1088
1089----
1090.ooo
1091*a.o
1092XbOo
1093c.??
1094ed??
1095
1096; safe_omove(*) ||
1097; ((owl_escape_value(c) > 0 || owl_escape_value(d) >0 || owl_escape_value(e)>0)
1098; && oplay_attack(*,a,b,a))
1099
1100
1101Pattern D232
1102# gf New pattern. (3.1.23)
1103# See nngs:1630.
1104
1105??O?? defend eye against edge descent tesuji
1106XO.O*
1107..O.X
1108-----
1109
1110:8,-,value(45)
1111
1112??O??
1113XOab*
1114cdOeF
1115-----
1116
1117;lib(F)>=3 && owl_topological_eye(a,b)<=2 && !xplay_attack(c,d,e,c)
1118
1119
1120Pattern D233
1121# evand New pattern. (3.3.18)
1122# see owl:257
1123
1124oooO? block
1125oo.*X
1126ooo..
1127-----
1128
1129:8,n,value(35)
1130
1131
1132Pattern D234
1133# gf New pattern. (3.5.3).
1134# See e.g. nngs:1090.
1135
1136...x?
1137..*X?
1138...Oo
1139-----
1140
1141:8,-,value(35)
1142
1143...x?
1144ba*C?
1145...Oo
1146-----
1147
1148;oplay_disconnect(*,a,a,C) && oplay_disconnect(*,b,b,C)
1149
1150
1151#########################################################
1152# #
1153# Expanding moves in the center #
1154# #
1155#########################################################
1156
1157
1158Pattern D300
1159# gf Revised pattern. (3.1.15)
1160
1161X..?? push into the open
1162O*..?
1163x..??
1164
1165:8,E,value(80)
1166
1167X..??
1168O*.a?
1169x..??
1170
1171;owl_escape_value(a) > 1
1172
1173
1174Pattern D301
1175
1176X..?
1177O.*.
1178O..?
1179
1180:8,E,value(80)
1181
1182X..?
1183O.*a
1184O..?
1185
1186;owl_escape_value(a) > 1
1187
1188
1189Pattern D302
1190# FIXME: This pattern looks way too general (see owl:23)
1191
1192XX.? push along
1193O*..
1194?..?
1195
1196:8,-,value(50)
1197
1198
1199Pattern D303
1200# The b classification inhibits the addition of * to the dragon.
1201
1202XX.? hane to try to escape
1203OOX.
1204?.*.
1205??.?
1206
1207:8,b,value(70)
1208
1209
1210Pattern D304
1211
1212OO? block
1213X.?
1214*..
1215
1216:8,-,value(75)
1217
1218OO?
1219a.?
1220*..
1221
1222; does_attack(*,a)
1223
1224
1225Pattern D305
1226
1227??.? attach
1228..X.
1229O.*.
1230....
1231
1232:8,-,value(75)
1233
1234
1235Pattern D306
1236
1237???o keima to expand shape
1238X..O
1239.*..
1240....
1241
1242:8,-,value(75)
1243
1244???o
1245XdaO
1246.*bc
1247....
1248
1249;oplay_attack_either(*,a,b,c,a,c) && oplay_attack_either(*,b,a,d,b,d)
1250
1251
1252Pattern D307
1253
1254??.?? block
1255.*X..
1256O.OX?
1257
1258:8,-,value(75)
1259
1260??b??
1261.*Xc.
1262O.OD?
1263
1264; oplay_attack(*,?,c,b,D)
1265
1266
1267Pattern D308
1268# tm added b category (3.1.17)
1269# tm modified & increased value (3.1.20)
1270
1271o.O chimera
1272.*X
1273
1274:8,nsb,value(77)
1275
1276ocO
1277b*X
1278
1279; oplay_attack(*,b,b) && oplay_attack(*,c,c) && safe_xmove(*)
1280
1281
1282Pattern D309
1283# tm modified (3.1.16)
1284# tm reduced value (3.1.20) (see dniwog:5)
1285# FIXME: Adding B attribute solve niki:14 - not sure why -tm.
1286# adding it breaks a lot, however (i.e. trevorb:590)
1287
1288?O? block off area
1289X*.
1290ooo
1291
1292:8,-,value(65)
1293
1294?O?
1295b*a
1296ooo
1297
1298;oplay_attack(*,b) && oplay_attack(*,a,a)
1299
1300
1301Pattern D309a
1302# tm modified (3.1.16)
1303# tm modified (3.1.22)
1304# tm modified (3.1.23) (added b attribute)
1305
1306?O? block off area
1307X*.
1308ooo
1309
1310:8,b,value(60)
1311
1312?O?
1313X*a
1314ooo
1315
1316; oplay_attack(*,a,a)
1317; && !obvious_false_oeye(a)
1318
1319
1320Pattern D309b
1321
1322?O? block off area
1323X..
1324.*.
1325???
1326
1327:8,-,value(61)
1328
1329?O?
1330Xba
1331.*.
1332???
1333
1334;oplay_attack(*,a,a) && oplay_attack(*,b,b)
1335
1336
1337Pattern D310a
1338
1339?o?
1340*.O hanging connection to make eye
1341.OX
1342oo?
1343
1344:8,-,value(55)
1345
1346?o?
1347*ba
1348.OX
1349oo?
1350
1351; lib(a)>1 && safe_xmove(b) && oplay_attack(*,b,b)
1352
1353
1354Pattern D310b
1355# More worth if safe from atari.
1356# tm Reduced value (3.1.22) (see owl:153)
1357
1358?o?
1359*.O hanging connection to make eye
1360.OX
1361oo?
1362
1363:8,-,value(65)
1364
1365?o?
1366*ba
1367.cX
1368oo?
1369
1370; lib(a)>2 && lib(c)>2 && safe_xmove(b) && oplay_attack(*,b,b)
1371
1372
1373Pattern D311
1374# gf Added n classification. (3.5.4)
1375
1376OX? try to seal off some space
1377.*O
1378.??
1379
1380:8,n,value(60)
1381
1382OX?
1383a*O
1384.??
1385
1386; oplay_attack(*,a,a)
1387
1388
1389Pattern D313
1390
1391..X move out and separate
1392.*O
1393...
1394?XX
1395
1396:8,-,value(75)
1397
1398
1399Pattern D314
1400
1401??.XX push to defend!
1402.XXOO
1403.*O..
1404.....
1405
1406:8,-,value(80)
1407
1408
1409Pattern D315
1410
1411X*o hane starting an eye
1412O.o
1413OOo
1414
1415:8,-,value(60)
1416
1417X*o
1418Oao
1419OOo
1420
1421; oplay_attack(*,a,a)
1422
1423
1424Pattern D316
1425
1426?X? connect to protect
1427O*O
1428...
1429
1430:8,-,value(50)
1431
1432?X?
1433O*O
1434.a.
1435
1436; oplay_attack(*,a,a)
1437
1438
1439Pattern D317
1440
1441OO? urgent block
1442X*?
1443...
1444
1445:8,-,value(95)
1446
1447bb?
1448A*?
1449...
1450
1451;does_attack(*,A) && does_defend(*,b)
1452
1453
1454Pattern D318
1455# nn Modified (3.3.12)
1456
1457OOXx descend - don't capture
1458OXOX
1459o.*.
1460
1461:8,-,value(82)
1462
1463OOXx
1464OAOX
1465o.*.
1466
1467; does_attack(*,A)
1468
1469
1470Pattern D319
1471# db added (3.1.8)
1472
1473...X atari!
1474.*XO
1475X.Oo
1476
1477:8,-,value(80)
1478
1479...X
1480.*XA
1481X.Oo
1482
1483; lib(A)>1
1484
1485
1486Pattern D320
1487# db added (3.1.8)
1488
1489.*.? jump out
1490...?
1491XO.o
1492o.O?
1493
1494:8,-,value(50)
1495
1496
1497#########################################################
1498# #
1499# Expanding moves in the corner #
1500# #
1501#########################################################
1502
1503
1504Pattern D400
1505
1506--+ sagari in corner
1507..|
1508O*|
1509Xx|
1510
1511:8,-,value(70)
1512
1513--+
1514..|
1515O*|
1516Ax|
1517
1518;!attack(A)
1519
1520
1521Pattern D401
1522
1523--+ capture in corner
1524..|
1525O.|
1526X*|
1527
1528:8,-,value(80)
1529
1530--+
1531..|
1532O.|
1533A*|
1534
1535;lib(A)==1
1536
1537
1538Pattern D402
1539
1540..O..| enclose corner to live
1541*....|
1542.....|
1543.....|
1544-----+
1545
1546:8,-,value(60)
1547
1548
1549Pattern D403
1550
1551|.O?? isolate corner stone
1552|..Ox
1553|.X*.
1554|....
1555+----
1556
1557:8,-,value(70)
1558
1559
1560Pattern D404
1561
1562?.O.| proceed into corner for almost certain life
1563X.o.|
1564.*..|
1565....|
1566....|
1567----+
1568
1569:8,-,value(90)
1570
1571
1572Pattern D405
1573
1574?Oo.| proceed into corner for almost certain life
1575X.o.|
1576.*..|
1577....|
1578....|
1579----+
1580
1581:8,-,value(90)
1582
1583?Oc.|
1584Xab.|
1585.*d.|
1586....|
1587....|
1588----+
1589
1590; o_somewhere(b,c)||!oplay_defend(*,a,b,c,d,c)
1591
1592
1593Pattern D406
1594
1595|ooOO? realize eyespace in corner
1596|....?
1597|...*x
1598|....?
1599+-----
1600
1601:8,-,value(70)
1602
1603
1604Pattern D407
1605
1606|..X?? easy life in corner
1607|.*OX?
1608|...OO
1609|.....
1610+-----
1611
1612:8,-,value(80)
1613
1614
1615Pattern D408
1616
1617|ooO? slightly expand corner eyespace
1618|.O*X
1619|....
1620+----
1621
1622:8,-,value(30)
1623
1624
1625Pattern D409
1626#evand new pattern (3.3.13)
1627
1628oO.X.| move to corner to make life
1629..*..|
1630.....|
1631.....|
1632-----+
1633
1634:8,-,value(45)
1635
1636
1637#########################################################
1638# #
1639# Defend one worm of the dragon #
1640# #
1641#########################################################
1642
1643
1644Pattern D500
1645
1646xXOO descend to defend
1647XO..
1648.*..
1649----
1650
1651:8,-,value(60)
1652
1653
1654Pattern D502
1655
1656?X.O sagari
1657XO.O
1658.*..
1659----
1660
1661:8,-,value(75)
1662
1663
1664Pattern D503
1665# The first constraint is necessary because the lower O stone
1666# may be short on liberties. It might work to replace it with
1667# a liberty constraint.
1668# tm modified (3.1.22)
1669
1670|..O
1671|*.O hanging connection to protect eyespace
1672|?OX
1673
1674:8,-,value(70)
1675
1676|.bO
1677|*aO
1678|?Oc
1679
1680; oplay_attack(*,a,a)
1681; && !xplay_attack_either(a,a,c)
1682; && oplay_attack(*,b,a,b)
1683
1684
1685Pattern D503b
1686# gf New pattern. (3.7.1)
1687# See ld_owl:319. Cf. D1004b.
1688
1689|o.O try to get second eye through ko
1690|.*O
1691|..O
1692|?OX
1693
1694:8,s,value(45)
1695
1696|oaO
1697|.*O
1698|c.O
1699|bOX
1700
1701;owl_proper_eye(a)
1702;&& oplay_attack(*,b,c,b)
1703
1704
1705Pattern D504
1706# Don't apply this pattern on the edge. See patterns D505 and D506
1707# gf Revised constraint. (3.3.18)
1708
1709?*.O hanging connection to defend and make eye
1710?.OX
1711
1712:8,-,value(85)
1713
1714?*ba
1715?.cX
1716
1717; lib(a)>1 && safe_xmove(b) && !obvious_false_oeye(b)
1718; && oplay_attack(*,b,b) && does_attack(b,c)
1719
1720
1721Pattern D505
1722#tm modified (3.1.22)
1723# gf Changed does_attack to xplay_defend for better ko handling. (3.3.13)
1724
1725OOX hanging connection to defend and make eye
1726..O
1727.*.
1728---
1729
1730:8,-,value(85)
1731
1732OaX
1733dbc
1734.*.
1735---
1736
1737; lib(a)>1 && safe_xmove(b) && oplay_attack(*,d,b,d)
1738; && xplay_defend(b,c) != WIN
1739
1740
1741Pattern D506
1742# Smaller value in this case since it leaves substantial aji. In
1743# particular we want to try the solid connection (pattern D44, value
1744# 80) before this pattern.
1745
1746.OX hanging connection to defend and make eye
1747..O
1748.*.
1749---
1750
1751:8,-,value(75)
1752
1753.aX
1754dbc
1755.*.
1756---
1757
1758; lib(a)>1 && safe_xmove(b) && oplay_attack(*,b,b) && does_attack(b,c)
1759; && oplay_attack(*,d,d)
1760
1761
1762Pattern D507
1763
1764?XX.o defend two stones
1765XOO*.
1766?....
1767-----
1768
1769:8,-,value(80)
1770
1771?XX.o
1772Xaa*.
1773?....
1774-----
1775
1776;does_defend(*,a)
1777
1778
1779Pattern D508
1780
1781?XX*o
1782XOO.O defend
1783?....
1784-----
1785
1786:8,-,value(90)
1787
1788?XX*o
1789Xaa.O
1790?....
1791-----
1792
1793;does_defend(*,a)
1794
1795
1796Pattern D509
1797# FIXME: (see trevor:360)
1798# nn Fixed constraint (3.3.12)
1799# does_defend() doesn't return WIN
1800
1801XO? capture to defend
1802*XO
1803---
1804
1805:8,-,value(90)
1806
1807Xa?
1808*XO
1809---
1810
1811;does_defend(*,a)
1812
1813
1814Pattern D510
1815# gf Devalued. (3.1.12)
1816
1817?OX capture to defend
1818*XO
1819?O?
1820
1821:8,-,value(75)
1822
1823?aX
1824*XO
1825?O?
1826
1827;does_defend(*,a)
1828
1829
1830Pattern D511
1831
1832O.o rescue one stone
1833OX.
1834XO*
1835xXO
1836
1837:8,-,value(75)
1838
1839A.o
1840AX.
1841XO*
1842xXO
1843
1844; !oplay_attack(*,A)
1845
1846
1847Pattern D512
1848
1849..*.. atari before defending
1850X.XO.
1851.XO..
1852.....
1853.....
1854-----
1855
1856:8,-,value(85)
1857
1858
1859Pattern D513
1860
1861??... connect
1862XXO.o
1863XO*.o
1864....o
1865....o
1866-----
1867
1868:8,-,value(85)
1869
1870
1871Pattern D514
1872# gf New pattern. (3.1.14)
1873
1874?*.o avoid double atari
1875XO..
1876?XOO
1877
1878:8,-,value(76)
1879
1880?*.o
1881AO..
1882?Bcc
1883
1884;lib(A)>1 && lib(B)>1 && lib(c)==2
1885
1886
1887Pattern D515
1888# gf New pattern. (3.3.20)
1889
1890?OOX? hanging connection to defend and make eye
1891O..OX
1892.*...
1893-----
1894
1895:8,-,value(61)
1896
1897?OOX?
1898O.aOX
1899.*.b.
1900-----
1901
1902;!oplay_defend(*,a,b,a)
1903
1904
1905#########################################################
1906# #
1907# Make eyeshape on the edge #
1908# #
1909#########################################################
1910# #
1911# Moves that do not necessarily expand the eyeshape #
1912# but try to make what exists yield two eyes #
1913# #
1914#########################################################
1915
1916
1917Pattern D600
1918# tm modified (3.1.20) (see strategy4:203)
1919
1920oOX? eye with reverse sente
1921OxOX
1922o*..
1923----
1924
1925:8,-,value(80)
1926
1927
1928Pattern D600a
1929# tm New Pattern (3.1.15)
1930# tm modified (3.1.20)
1931
1932oOX?? eye with reverse sente, avoid ko
1933OxOX?
1934o.*.X
1935-----
1936
1937:8,-,value(81)
1938
1939
1940Pattern D602
1941
1942?OO make eye
1943O.O
1944.*.
1945---
1946
1947:8,-,value(35)
1948
1949?OO
1950O.O
1951a*b
1952---
1953
1954;oplay_attack(*,a,a) && oplay_attack(*,b,b)
1955
1956
1957Pattern D603
1958
1959XO. make eye
1960O.O
1961.*.
1962---
1963
1964:8,-,value(35)
1965
1966XOc
1967O.O
1968a*b
1969---
1970
1971;oplay_attack(*,a,a) && oplay_attack(*,b,b) && oplay_attack(*,c,c)
1972
1973
1974Pattern D604
1975# tm Modified (3.1.17)
1976
1977oOOX descend to close eyeshape
1978?.*x
1979----
1980
1981:8,-,value(35)
1982
1983oOOA
1984?b*x
1985----
1986
1987#;owl_eyespace(b) &&
1988;(!obvious_false_oeye(b) || oplay_attack(*,A))
1989;&& !xplay_attack(*,A)
1990
1991
1992Pattern D604a
1993#tm New Pattern (3.1.15) (see maeda:70)
1994
1995OOOOOX make eye by threatening large capture
1996XX..*.
1997------
1998
1999:8,-,value(35)
2000
2001OOOOOX
2002XCAb*.
2003------
2004
2005; !oplay_defend(*,A,b,C)
2006
2007
2008Pattern D605
2009
2010oOo?
2011O.*O make an eye and threaten another, while preventing atari
2012XO..
2013----
2014
2015:8,-,value(35)
2016
2017
2018Pattern D606
2019
2020XOX try to partition eyespace rather than defend
2021O.O
2022.*.
2023---
2024
2025:8,-,value(65)
2026
2027XaX
2028O.O
2029b*c
2030---
2031
2032;lib(a) == 1 && !obvious_false_oeye(b) && !obvious_false_oeye(c)
2033
2034
2035Pattern D607
2036
2037OXO avoid nakade while probably securing eyes
2038X*X
2039---
2040
2041:8,-,value(70)
2042
2043OBO
2044A*C
2045---
2046
2047;lib(A)==1 && lib(B)==1 && lib(C)==2
2048
2049
2050Pattern D608
2051
2052oOOX eat lunch in the right direction
2053.X*.
2054----
2055
2056:8,-,value(50)
2057
2058oOOX
2059.A*.
2060----
2061
2062;does_attack(*,A)
2063
2064
2065Pattern D608b
2066# gf New pattern. (3.1.11)
2067
2068ooO.X eat lunch in the right direction
2069.X*..
2070-----
2071
2072:8,-,value(50)
2073
2074ooO.X
2075aB*..
2076-----
2077
2078;owl_eyespace(a) && does_attack(*,B)
2079
2080
2081Pattern D609
2082
2083?X? preserve eyespace
2084O*O
2085...
2086---
2087
2088:8,-,value(80)
2089
2090
2091Pattern D610
2092
2093??oOX get out of liberty shortage
2094oOO.O
2095*XXO.
2096-----
2097
2098:8,-,value(45)
2099
2100??oOX
2101oOO.O
2102*XXOa
2103-----
2104
2105;olib(a)==1
2106
2107
2108Pattern D611
2109
2110xXOo forestall snapback threat, securing eye
2111XO.O
2112.O*X
2113----
2114
2115:8,-,value(60)
2116
2117xXOo
2118XO.O
2119.O*A
2120----
2121
2122;lib(A) == 2
2123
2124
2125Pattern D612
2126
2127?OOO? comb formation
2128O.X.O
2129O.*.O
2130-----
2131
2132:8,-,value(50)
2133
2134
2135Pattern D613
2136
2137?OOO? comb formation
2138O.*.O
2139O.X.O
2140-----
2141
2142:8,-,value(50)
2143
2144
2145Pattern D614
2146
2147oOo initiate ko to attempt for an extra eye
2148*.O
2149XOX
2150---
2151
2152:8,-,value(30)
2153
2154oOo
2155*.O
2156AOX
2157---
2158
2159;oplay_defend(*,A) != WIN
2160
2161
2162Pattern D614b
2163# gf New pattern. (3.1.9)
2164
2165ooOOo attempt to live without ko
2166o...O
2167.*XOX
2168-----
2169
2170:8,-,value(31)
2171
2172
2173Pattern D615
2174
2175XOo? secure eye shape against snapback threat
2176O.O?
2177O.*.
2178----
2179
2180:8,-,value(50)
2181
2182XOo?
2183A.O?
2184A.*b
2185----
2186
2187;lib(A)==2 && xplay_attack(*,b,b)
2188
2189
2190Pattern D616
2191
2192oOX?? secure eye with ko
2193O.OX?
2194*O.oX
2195-----
2196
2197:8,-,value(25)
2198
2199oOX??
2200O.OX?
2201*O.oX
2202-----
2203
2204;xlib(*)>1
2205
2206
2207Pattern D616a
2208# higher value than D616 for owl.tst number 183 where this defense
2209# gives fewer ko threats
2210
2211??oOX?? secure one eye with ko
2212?.O.OX?
2213.X*O.oX
2214-------
2215
2216:8,-,value(45)
2217
2218??oOX??
2219?.O.OX?
2220.X*O.oX
2221-------
2222
2223;xlib(*)>1
2224
2225
2226Pattern D617
2227
2228ooOX?? secure eye with ko
2229*O.OX?
2230XXO.oX
2231------
2232
2233:8,-,value(25)
2234
2235ooOX??
2236*O.OX?
2237AAO.oX
2238------
2239
2240;lib(A)<=2
2241
2242
2243Pattern D618
2244
2245oOX?? take ko to make eye
2246O.OX?
2247XOX*X
2248-----
2249
2250:8,-,value(25)
2251
2252oOX??
2253O.OX?
2254AOX*X
2255-----
2256
2257;lib(A)<=2
2258
2259
2260Pattern D619
2261
2262oOX capture to defend and maybe make eye
2263OX*
2264.OX
2265---
2266
2267:8,-,value(39)
2268
2269
2270Pattern D620
2271
2272XOo? defend eye from collapse
2273O.O*
2274OO.X
2275----
2276
2277:8,-,value(72)
2278
2279XOo?
2280a.O*
2281aa.B
2282----
2283
2284;lib(a)==2 && lib(B)==3
2285
2286
2287Pattern D621
2288
2289?O?? threaten two eyes simultaneously
2290O.O?
2291oO*X
2292O..?
2293----
2294
2295:8,-,value(45)
2296
2297
2298Pattern D622
2299
2300*OX? solidify eye and threaten to make more on the edge
2301OXOo
2302....
2303----
2304
2305:8,n,value(45)
2306
2307*OA?
2308OXOo
2309b...
2310----
2311
2312;!attack(A) && oplay_attack(*,b,b)
2313
2314
2315Pattern D623
2316
2317?XxOO? make one eye
2318?XO.*X
2319..xO..
2320------
2321
2322:8,s,value(95)
2323
2324?XbOO?
2325?XO.*X
2326..aO..
2327------
2328
2329; !x_somewhere(a) || !x_somewhere(b)
2330
2331
2332Pattern D624
2333# tm added (3.1.14)
2334# Needed in trevor:403
2335
2336O.?? Block on first line to make eye.
2337O.OX
2338ox*?
2339----
2340
2341:8,-,value(40)
2342
2343
2344Pattern D625
2345# gf New pattern. (3.1.14)
2346# gf Revised constraint. (3.3.6)
2347
2348O*o prevent eye stealing capture
2349XO.
2350---
2351
2352:8,n,value(45)
2353
2354a*o
2355XOb
2356---
2357
2358;lib(a)==1 && !obvious_false_oeye(b)
2359
2360
2361Pattern D626
2362# tm New pattern. (3.1.15)
2363# special position - see ld_owl:188
2364
2365OOX.|
2366*..X|
2367----+
2368
2369:8,-,value(45)
2370
2371
2372Pattern D627
2373# tm New pattern (3.1.15) (see maeda:100)
2374
2375|.OX
2376|O.O
2377|..O
2378|X*.
2379
2380:8,-,value(45)
2381
2382|.OX
2383|O.O
2384|B.O
2385|A*.
2386
2387; oplay_defend(*,A) && oplay_attack(*,B,A)
2388
2389
2390Pattern D628
2391# tm New pattern (3.1.15)
2392
2393|OO
2394|.*
2395|O.
2396
2397:8,-,value(80)
2398
2399|OO
2400|.*
2401|OA
2402
2403; !xplay_attack(*,*) && oplay_attack(*,A,A)
2404
2405
2406Pattern D629
2407# tm New Pattern (3.1.15)
2408
2409|xX? make an eye on the edge.
2410|.OO
2411|*.O
2412|..O
2413|..O
2414|xX?
2415
2416:8,s,value(65)
2417
2418
2419Pattern D630
2420# tm New Pattern (3.1.15)
2421# gf This was classified as a 0 (zero) pattern. Removed class. (3.1.18)
2422# tm added b category (3.1.18)
2423
2424.*O Cut off black stone
2425OX?
2426???
2427---
2428
2429:8,b,value(65)
2430
2431.*O
2432OA?
2433???
2434---
2435
2436; defend(A) && oplay_attack(*,A)
2437
2438
2439Pattern D631
2440# tm New Pattern (3.1.15)
2441
2442OOOO funny edge capture.
2443.XX.
2444.*O.
2445----
2446
2447:8,s,value(75)
2448
2449OOOO
2450.XC.
2451A*OB
2452----
2453
2454; oplay_attack(*,C)
2455; && oplay_defend(*,A,*)
2456; && oplay_defend(*,B,*)
2457
2458
2459Pattern D632
2460# tm New Pattern (3.1.15)
2461
2462OOX? Eat lunch with snapback.
2463OXOX
2464OX.*
2465----
2466
2467:8,-,value(65)
2468
2469OOX?
2470OXOA
2471OX.*
2472----
2473
2474; oplay_attack(*,A)
2475
2476
2477Pattern D633
2478# tm New pattern (3.1.15)
2479
2480OOoO? vital point for eye shape
2481O..OO
2482..*..
2483-----
2484
2485:8,-,value(65)
2486
2487
2488Pattern D634
2489# tm New pattern (3.1.15)
2490# only really useful if short of liberties.
2491
2492XXO Hane in sente
2493.*.
2494---
2495
2496:8,-,value(70)
2497
2498BBA
2499.*.
2500---
2501
2502; lib(A) < 4 && oplay_attack(*,B)
2503
2504
2505Pattern D635
2506# tm New Pattern (3.1.15)
2507
2508?OO?
2509O..O
2510O*.O
2511....
2512----
2513
2514:8,-,value(65)
2515
2516?OO?
2517O.BO
2518O*FO
2519aecD
2520----
2521
2522; !oplay_defend(*,a,B,c,D,e,F,a)
2523
2524
2525Pattern D636
2526# tm New Pattern (3.1.15)
2527
2528OOO.X special eye shape on edge.
2529...*.
2530-----
2531
2532:8,-,value(65)
2533
2534OOOaX
2535..B*.
2536-----
2537
2538; oplay_attack(*,a,B,a)
2539
2540
2541Pattern D637
2542# tm New Pattern (3.1.20) (see strategy4:171)
2543# FIXME: This is due to a defect in the eye space handing.
2544# This point should come through as a vital point.
2545
2546O*.
2547XO?
2548
2549:8,-,value(65)
2550
2551A*d
2552bO?
2553
2554; ko(b) && owl_topological_eye(*,A) > 2 && !obvious_false_oeye(d)
2555
2556
2557Pattern D638
2558#evand new pattern 3.3.12
2559
2560?o.x attempt to escape or make eyeshape by forcing.
2561oOX*
2562O.O.
2563----
2564
2565:8,-,value(45)
2566
2567
2568Pattern D639
2569# gf New pattern. See owl1:285. (3.3.17)
2570
2571oO*X eat lunch without getting a false eye
2572XX..
2573----
2574
2575:8,-,value(50)
2576
2577oO*X
2578AA..
2579----
2580
2581;!oplay_defend(*,A)
2582
2583
2584Pattern D640
2585# gf New pattern. (3.3.20)
2586# Compare D720.
2587
2588?O*.o try to make eye on edge
2589O....
2590-----
2591
2592:8,-,value(56)
2593
2594?O*bo
2595Oa...
2596-----
2597
2598;!obvious_false_oeye(a) && !oplay_attack(b,*,*)
2599
2600
2601Pattern D641
2602# evand New pattern. (3.3.20)
2603
2604xXOO.
2605..X*O
2606.....
2607-----
2608
2609:8,-,value(75)
2610
2611xXOOa
2612..X*O
2613....b
2614-----
2615
2616;!obvious_false_oeye(a) || !obvious_false_oeye(b)
2617
2618
2619Pattern D642
2620# tm New Pattern (3.1.22) (see trevord:910)
2621# gf Revised constraint. (3.5.3)
2622
2623X*O? Extend side eye-space in sente
2624?..o
2625----
2626
2627:8,-,value(80)
2628
2629C*O?
2630?bao
2631----
2632
2633;!obvious_false_oeye(a)
2634;&& oplay_attack(*,b,C) && !attack(C)
2635
2636
2637Pattern D643
2638# spl added 3.3.22
2639
2640?oO try to make 2 eyes
2641OO.
2642o.*
2643---
2644
2645:8,-,value(40)
2646
2647
2648Pattern D643b
2649# gf New pattern. (3.5.5)
2650
2651??OO try to make 2 eyes
2652OO..
2653o.*.
2654----
2655
2656:8,-,value(40)
2657
2658
2659Pattern D644
2660# gf New pattern. (3.5.3)
2661# See seki:111.
2662
2663oOOo make one definite eye
2664.*.O
2665X..O
2666----
2667
2668:8,-,value(30)
2669
2670
2671Pattern D645
2672# gf New pattern. (3.7.2)
2673# See semeai:117-119.
2674
2675OOX secure eye and capture lunch
2676.*.
2677---
2678
2679:8,-,value(96)
2680
2681OOB
2682a*.
2683---
2684
2685;owl_proper_eye(a) && does_attack(*,B) && !obvious_false_oeye(B)
2686
2687
2688#########################################################
2689# #
2690# Make eyeshape in the center #
2691# #
2692#########################################################
2693# #
2694# Moves that do not necessarily expand the eyeshape #
2695# but try to make what exists yield two eyes #
2696# #
2697#########################################################
2698
2699
2700Pattern D700
2701
2702oOo make eyeshape
2703O.O
2704.*.
2705
2706:|,-,value(75)
2707
2708
2709Pattern D701
2710
2711?*? half eye sometimes missed by optics
2712O.O
2713?O.
2714
2715:8,-,value(70)
2716
2717?*?
2718OaB
2719?Ob
2720
2721; (owl_topological_eye(a,B)>=2) && (owl_topological_eye(b,B)==2)
2722
2723
2724Pattern D702
2725
2726?X? half eye sometimes missed by optics
2727O*O
2728.O.
2729
2730:8,n,value(70)
2731
2732?X?
2733O*B
2734aOb
2735
2736; (owl_topological_eye(a,B)==2)
2737; && ((owl_topological_eye(b,B)==2) || (owl_topological_eye(b,B)==3))
2738
2739
2740Pattern D703
2741
2742?O* defend half eye (reverse sente)
2743o.O
2744?o?
2745
2746:8,-,value(70)
2747
2748?O*
2749oaB
2750?o?
2751
2752;owl_topological_eye(a,B)==3 && does_attack(*,B)
2753
2754
2755Pattern D704
2756
2757oO. half eye sometimes missed
2758O.*
2759?o?
2760
2761:8,-,value(35)
2762
2763oOb
2764Ba*
2765?o?
2766
2767; owl_topological_eye(a,B)==3
2768; && safe_xmove(b) && safe_xmove(*) && oplay_attack(*,b,b)
2769
2770
2771Pattern D704b
2772# gf Revised constraint. (3.1.15)
2773# gf Revised constraint. (3.1.23)
2774# pp Revised pattern. (3.3.18)
2775
2776oO.? half eye sometimes missed
2777O.*?
2778----
2779
2780:8,-,value(35)
2781
2782cOb?
2783O.*?
2784----
2785
2786; (safe_xmove(b) || safe_xmove(*)) && oplay_attack(*,b,b)
2787; && (o_somewhere(c) || !safe_xmove(c))
2788
2789
2790Pattern D705
2791
2792O.X block to cut off one stone
2793X*o
2794---
2795
2796:8,-,value(45)
2797
2798O.X
2799a*o
2800---
2801
2802; does_attack(*,a)
2803
2804
2805Pattern D706
2806
2807?O* save a half eye against an atari
2808o.O
2809?o?
2810
2811:8,n,value(35)
2812
2813?B*
2814oba
2815?o?
2816
2817; lib(a)==2 && owl_topological_eye(b,B)==3
2818
2819
2820Pattern D707
2821
2822XX? make half eye with sente
2823O*O
2824O.O
2825o?o
2826
2827:8,-,value(77)
2828
2829AA?
2830O*O
2831O.O
2832o?o
2833
2834; oplay_attack(*,A)
2835
2836
2837Pattern D708
2838
2839?X?? make half eye with sente
2840O*O?
2841O.O?
2842?.oo
2843??Oo
2844
2845:8,-,value(77)
2846
2847?A??
2848O*O?
2849O.O?
2850?.oo
2851??Oo
2852
2853; oplay_attack(*,A)
2854
2855
2856Pattern D709
2857
2858oOOx eat lunch in the right direction
2859.X*.
2860?OOx
2861
2862:8,-,value(50)
2863
2864oOOx
2865.A*a
2866?OOx
2867
2868;olib(a)<=2 && does_attack(*,A)
2869
2870
2871Pattern D710
2872# gf Revised constraint. (3.1.15)
2873
2874OO* try to make center eye
2875O..
2876?OO
2877
2878:8,-,value(30)
2879
2880OO*
2881O.a
2882?OO
2883
2884;!owl_big_eyespace(a) && !obvious_false_oeye(a)
2885
2886
2887Pattern D711
2888
2889O? capture nakade, might give new possibilities
2890X*
2891
2892:8,-,value(25)
2893
2894O?
2895A*
2896
2897;lib(A)==1 && wormsize(A)>=3
2898
2899
2900Pattern D712
2901
2902?O capture nakade, might give new possibilities
2903X*
2904
2905:8,-,value(25)
2906
2907?O
2908A*
2909
2910;lib(A)==1 && wormsize(A)>=3
2911
2912
2913Pattern D713
2914
2915.OO? make one eye
2916*..O
2917.OO?
2918
2919:-,-,value(50)
2920
2921.OO?
2922*.aB
2923.OO?
2924
2925;owl_topological_eye(a,B)==3
2926
2927
2928Pattern D714
2929
2930?O*? make one eye
2931O..O
2932.OO?
2933
2934:8,n,value(35)
2935
2936
2937Pattern D715
2938
2939O* defend against atari inside eyespace
2940
2941:-,-,value(35)
2942
2943a*
2944
2945; lib(a)==2 && xlib(*)>1 && owl_big_eyespace(*)
2946
2947
2948Pattern D715b
2949# gf New pattern. (3.1.15)
2950
2951O.*
2952XO. defend against atari inside eyespace on edge
2953---
2954
2955:8,-,value(36)
2956
2957O.*
2958XOa
2959---
2960
2961;xlib(a)>1 && owl_big_eyespace(a) && oplay_attack(*,a,a)
2962
2963
2964Pattern D715c
2965# gf New pattern. (3.3.20)
2966
2967.X* defend against atari inside eyespace
2968O.O
2969XOo
2970
2971:8,-,value(60)
2972
2973.B*
2974a.O
2975XOo
2976
2977;lib(a)==2 && lib(B)==3 && owl_big_eyespace(*)
2978
2979
2980Pattern D716
2981# gf New pattern. (3.1.11)
2982
2983?*OO secure eye
2984O..o
2985?oOX
2986
2987:8,-,value(60)
2988
2989?*OO
2990O.ao
2991?oOX
2992
2993;owl_eyespace(a) && !owl_big_eyespace(a)
2994
2995
2996Pattern D717
2997# gf New pattern. (3.1.12)
2998# pp Modified (3.3.16)
2999
3000oOXx eat lunch to make certain eye
3001OXOx
3002O.*x
3003
3004:8,-,value(81)
3005
3006oOXx
3007OAOx
3008O.*x
3009
3010;!oplay_defend(*,A)
3011
3012
3013Pattern D718
3014# tm New pattern (3.1.14)
3015# see owl:111
3016
3017?X?
3018O*O Expand eye space
3019...
3020OO.
3021
3022:8,-,value(60)
3023
3024
3025Pattern D720
3026# tm New pattern (3.1.16)
3027
3028?O.o
3029O.*o
3030
3031:8,-,value(55)
3032
3033?O.o
3034Oa*o
3035
3036;owl_proper_eye(a)
3037
3038
3039Pattern D721
3040# nn New pattern. (3.3.9)
3041
3042OoO good shape can help
3043o.O
3044O*X
3045
3046:8,-,value(55)
3047
3048
3049Pattern D722
3050# evand New pattern. (3.3.18)
3051
3052?O*X #half eye in sente
3053O.O?
3054?O??
3055
3056:8,-,value(65)
3057
3058?O*A
3059ObO?
3060?O??
3061
3062;!obvious_false_oeye(b) && oplay_attack(*,A)
3063
3064
3065Pattern D723
3066# gf New pattern. (3.7.9)
3067
3068?..o
3069.*.O protect eyespace
3070...O
3071oOOX
3072
3073:8,-,value(75)
3074
3075
3076#########################################################
3077# #
3078# Make eyeshape in the corner #
3079# #
3080#########################################################
3081# #
3082# Moves that do not necessarily expand the eyeshape #
3083# but try to make what exists yield two eyes #
3084# #
3085#########################################################
3086
3087
3088Pattern D800
3089
3090O...| claim the corner to live
3091.*..|
3092....|
3093....|
3094----+
3095
3096:8,-,value(60)
3097
3098
3099Pattern D801
3100
3101XO.| defend corner eye
3102.*.|
3103---+
3104
3105:8,-,value(35)
3106
3107
3108Pattern D802
3109
3110Oo.| defend corner eye
3111X*.|
3112---+
3113
3114:8,-,value(35)
3115
3116
3117Pattern D803
3118
3119.O.| defend corner eye
3120X*.|
3121---+
3122
3123:8,-,value(35)
3124
3125
3126Pattern D804
3127# We need this pattern because the optics can't be relied on coming up
3128# with it when it's vital. Taking it out should cause some failures
3129# in the ld_owl test suite.
3130
3131OOO| take corner eye
3132.*.|
3133---+
3134
3135:8,-,value(25)
3136
3137OOO|
3138a*.|
3139---+
3140
3141;!obvious_false_oeye(a)
3142
3143
3144Pattern D804a
3145#spl 3.5.1 owl1:320
3146
3147|OO? defend eye in the corner
3148|.*X
3149+---
3150
3151:8,-,value(75)
3152
3153|aa?
3154|.*X
3155+---
3156
3157;lib(a) > 2
3158
3159
3160Pattern D804b
3161# This is kind of obscure, but sometimes D804 leads to a shortage of
3162# liberties, e.g. in the position
3163#
3164# .XXXXX..|
3165# .X.OOXXX|
3166# XXOOXOOO|
3167# X.O.X...|
3168# --------+
3169#
3170# After O playing on the 1-2 point, X fills an outer liberty and O dies.
3171# This pattern avoids that bitter fate.
3172
3173XOOO| take corner eye
3174X*..|
3175----+
3176
3177:8,-,value(26)
3178
3179
3180Pattern D805
3181# tm modified (3.1.15)
3182# s category incorrectly necessary - see ld_owl:53
3183# see also trevor:590 for underlying problem.
3184# tm modified back (3.1.16)
3185# trevor:590 solved.
3186
3187|oOO?
3188|...O try to secure corner
3189|.*.o
3190+----
3191
3192:8,-,value(98)
3193
3194
3195Pattern D805a
3196
3197|oOOo
3198|...o try to secure corner
3199|.*.o
3200+----
3201
3202:8,-,value(45)
3203
3204
3205Pattern D805b
3206
3207|oO.?
3208|.*.O try to secure corner
3209|...o
3210+----
3211
3212:8,-,value(30)
3213
3214
3215Pattern D806
3216
3217|.XOO miai eyes
3218|.*..
3219+----
3220
3221:8,-,value(60)
3222
3223|bAOO
3224|.*.a
3225+----
3226
3227;attack(A) && !oplay_defend(*,a,b,A)
3228
3229
3230Pattern D807
3231
3232|.XOO miai eyes with ko
3233|.*..
3234+----
3235
3236:8,-,value(60)
3237
3238|bAOO
3239|.*.a
3240+----
3241
3242;attack(A) && oplay_defend(*,a,b,A) != WIN
3243
3244
3245Pattern D808
3246
3247|.XOO life (but possibly unnecessarily small)
3248|.*.O
3249+----
3250
3251:8,-,value(65)
3252
3253|.AOO
3254|.*.O
3255+----
3256
3257;does_attack(*,A)
3258
3259
3260Pattern D809
3261
3262|.XOO might give seki
3263|.*.O
3264+----
3265
3266:8,-,value(25)
3267
3268|.AOO
3269|.*.O
3270+----
3271
3272;oplay_attack(*,A)
3273
3274
3275Pattern D810
3276
3277|.XOoo miai eyes or better
3278|.*...
3279+-----
3280
3281:8,-,value(55)
3282
3283|aXOoo
3284|.*...
3285+-----
3286
3287;!oplay_defend(*,a,a)
3288
3289
3290Pattern D811
3291
3292|ooO? miai eyes or better
3293|o.Oo
3294|.*..
3295+----
3296
3297:8,-,value(60)
3298
3299
3300Pattern D811a
3301# tm New Pattern (3.1.15) (see cho1:200)
3302
3303|oO?? miai eyes or better
3304|o.O?
3305|.*.?
3306+----
3307
3308:8,-,value(60)
3309
3310
3311Pattern D812
3312
3313|oo? work around eyespace generation weakness
3314|.OX
3315|*XO
3316+---
3317
3318:8,-,value(70)
3319
3320
3321Pattern D813
3322
3323|.OX descend in corner
3324|.*?
3325+---
3326
3327:8,-,value(30)
3328
3329
3330Pattern D814
3331
3332|.O? proper defense of L+1 shape
3333|.OO
3334|..O
3335|.*O
3336|...
3337+---
3338
3339:8,-,value(85)
3340
3341
3342Pattern D815
3343
3344|.OO? proper defense of L+1 shape
3345|..O?
3346|*.OO
3347|....
3348+----
3349
3350:8,-,value(85)
3351
3352
3353Pattern D816
3354
3355|.OX important shape point
3356|X.O
3357|*.O
3358|...
3359+---
3360
3361:8,s,value(35)
3362
3363
3364Pattern D817
3365
3366|.OX important shape point
3367|X.O
3368|*.O
3369|...
3370+---
3371
3372:8,s,value(45)
3373
3374|.aX
3375|X.O
3376|*.O
3377|...
3378+---
3379
3380;attack(a) && ! oplay_attack(*,a)
3381
3382
3383Pattern D818
3384
3385|O?? throw in to improve eye potential
3386|.OO
3387|*X.
3388+---
3389
3390:8,s,value(75)
3391
3392|O??
3393|.OO
3394|*A.
3395+---
3396
3397;oplay_defend(*,A) != WIN
3398
3399
3400Pattern D818b
3401
3402|O?? throwin risky, try to live without
3403|.OO
3404|.X*
3405+---
3406
3407:8,s,value(76)
3408
3409|a??
3410|.OO
3411|.X*
3412+---
3413
3414;lib(a) == 2
3415
3416
3417Pattern D819
3418
3419|ooO
3420|*.O secure corner eye
3421|.O.
3422+---
3423
3424:8,-,value(30)
3425
3426
3427Pattern D820
3428
3429|oo?? play ko to enlarge eyespace
3430|.OX?
3431|OX*X
3432+----
3433
3434:8,s,value(40)
3435
3436
3437Pattern D820b
3438
3439|oXO? play ko to enlarge eyespace
3440|.OX?
3441|OX*X
3442+----
3443
3444:8,s,value(40)
3445
3446|oAO?
3447|.OX?
3448|OX*X
3449+----
3450
3451;!oplay_defend(*,A)
3452
3453
3454Pattern D821
3455
3456|oO?? might be passive, but almost certain life
3457|o.O?
3458|.*.O
3459|..oo
3460+----
3461
3462:8,-,value(60)
3463
3464
3465Pattern D822
3466
3467|o.O? often best way to capture lunch
3468|O*OO
3469|.X.X
3470+----
3471
3472:8,-,value(60)
3473
3474|o.O?
3475|O*OO
3476|.X.A
3477+----
3478
3479;lib(A)==1
3480
3481
3482Pattern D823a
3483
3484|OOO? form false eye trying to at least get seki
3485|.*.O
3486|OXXO
3487|.xxO
3488+----
3489
3490:8,-,value(45)
3491
3492
3493Pattern D823b
3494
3495|OOOO at least seki
3496|*xxO
3497|OXXO
3498|.XxO
3499+----
3500
3501:8,-,value(46)
3502
3503
3504Pattern D824
3505
3506|OOO? at least secure seki
3507|.O*O
3508|OXXO
3509|.X.O
3510+----
3511
3512:8,-,value(45)
3513
3514
3515Pattern D825
3516
3517|ooO threaten to make eyes in the corner
3518|.OX
3519|*X.
3520|...
3521+---
3522
3523:8,-,value(85)
3524
3525|ooO
3526|.aX
3527|*B.
3528|...
3529+---
3530
3531;!oplay_attack(*,a) && oplay_attack(*,B)
3532
3533
3534Pattern D826
3535
3536|ooo if nothing else works, make an eye in the corner
3537|*.o
3538|.O?
3539+---
3540
3541:8,-,value(25)
3542
3543|ooo
3544|*ao
3545|.O?
3546+---
3547
3548;oplay_attack(*,a,a)
3549
3550
3551Pattern D827
3552
3553|.XX??? special corner shape
3554|.OOXX?
3555|.*.OOX
3556|.....o
3557+------
3558
3559:8,-,value(80)
3560
3561
3562Pattern D828
3563
3564|ooO? block on 1-2 with atari
3565|o.OX
3566|.*X.
3567+----
3568
3569:8,-,value(80)
3570
3571
3572Pattern D829
3573
3574|OO?? special corner shape, setting up ko
3575|..O?
3576|.O..
3577|..*.
3578+----
3579
3580:8,-,value(55)
3581
3582|aa??
3583|..O?
3584|.O..
3585|..*.
3586+----
3587
3588;lib(a)==2
3589
3590
3591Pattern D830
3592# gf New pattern. (3.1.1)
3593
3594|OO? special corner shape, setting up ko
3595|..O
3596|XOo
3597|*.O
3598+---
3599
3600:8,-,value(55)
3601
3602|aa?
3603|..O
3604|XOo
3605|*.O
3606+---
3607
3608;lib(a)==2
3609
3610
3611Pattern D831
3612
3613|OOo? (at least) ko
3614|.XOo
3615|OXXO
3616|.*xO
3617+----
3618
3619:8,s,value(35)
3620
3621
3622Pattern D832
3623# gf New pattern. (3.1.9)
3624
3625|O?? throw in to improve eye potential
3626|.Oo
3627|*XX
3628+---
3629
3630:8,s,value(35)
3631
3632|O??
3633|.Oo
3634|*AX
3635+---
3636
3637;oplay_defend(*,A) != WIN
3638
3639
3640Pattern D833
3641# tm added (3.1.13)
3642# useful in manyfaces:8
3643# gf Revised pattern. (3.1.14)
3644
3645?O?| vital corner point.
3646O.O|
3647O.x|
3648O.*|
3649o..|
3650---+
3651
3652:8,-,value(40)
3653
3654
3655Pattern D834
3656# gf New pattern. (3.1.14)
3657
3658?O?| often best defense
3659O.O|
3660O..|
3661O*X|
3662...|
3663---+
3664
3665:8,-,value(40)
3666
3667
3668Pattern D835
3669# tm New Pattern (3.1.15) (see trevora:400)
3670
3671|.*. Special corner pattern
3672|.XO
3673|...
3674|...
3675+---
3676
3677:8,-,value(65)
3678
3679
3680Pattern D836
3681# tm New Pattern (3.1.15)
3682
3683|O.
3684|.*
3685+--
3686
3687:8,-,value(65)
3688
3689|OA
3690|.*
3691+--
3692
3693; oplay_attack(*,A,A)
3694
3695
3696Pattern D837
3697# tm New Pattern (3.1.16)
3698# see trevor:200
3699
3700??oO.| special corner defend at 2-2
3701?O...|
3702o.X..|
3703O..*.|
3704.....|
3705-----+
3706
3707:8,-,value(55)
3708
3709
3710Pattern D838
3711# tm New Pattern (3.1.16)
3712
3713|.*?
3714|.XO
3715|OXO
3716|.O?
3717+---
3718
3719:8,-,value(55)
3720
3721|.*?
3722|.AO
3723|OXO
3724|.O?
3725+---
3726
3727;oplay_attack(*,A)
3728
3729
3730Pattern D839
3731# gf New pattern. (3.3.18)
3732
3733|.X?? Capture lunch with threat to make second eye
3734|.OO?
3735|.XO?
3736|*XOo
3737|...o
3738+----
3739
3740:8,-,value(88)
3741
3742|.X??
3743|cOO?
3744|.AO?
3745|*AOo
3746|.b.o
3747+----
3748
3749;does_attack(*,A) && xplay_attack(b,*,c,A)
3750
3751
3752Pattern D840
3753# gf New pattern. (3.5.3)
3754# See seki:203.
3755
3756|OO??
3757|.*O?
3758|XXOO make seki
3759|.O.O
3760+----
3761
3762:8,-,value(25)
3763
3764
3765Pattern D841
3766# gf New pattern. (3.5.5)
3767# See ld_owl:503.
3768
3769|..O?
3770|..O? make eyeshape
3771|..OX
3772|.*..
3773|....
3774+----
3775
3776:8,-,value(45)
3777
3778
3779Pattern D842
3780# gf New pattern. (3.5.5)
3781
3782???X.|
3783?XXO.| aim for ko
3784XOO..|
3785...*.|
3786.....|
3787-----+
3788
3789:8,-,value(76)
3790
3791
3792Pattern D843
3793# pp New pattern (3.5.5)
3794
3795|OOOOO workaround lunch problem (the eye is not considered a unit)
3796|..*.O
3797|.X..O
3798+-----
3799
3800:8,-,value(80)
3801
3802
3803Pattern D844
3804# gf New pattern. (3.7.2)
3805
3806|.OO partition corner eyespace to avoid bent four complications
3807|.*.
3808+---
3809
3810:8,-,value(40)
3811
3812|bOO
3813|.*a
3814+---
3815
3816;owl_proper_eye(a) && owl_proper_eye(b) && owl_big_eyespace(a)
3817
3818
3819Pattern D845
3820# gf New pattern. (3.7.2)
3821# See ld_owl:321.
3822
3823|OO.o converse to A1305b
3824|*X.O
3825|...O
3826+----
3827
3828:8,s,value(35)
3829
3830|aa.o
3831|*X.O
3832|...O
3833+----
3834
3835;lib(a)==2
3836
3837
3838Pattern D846
3839# gf New pattern. (3.7.2)
3840# See ld_owl:321.
3841
3842|OO.o followup
3843|OX.O
3844|.*.O
3845+----
3846
3847:8,-,value(35)
3848
3849
3850Pattern D847
3851# gf New pattern. (3.7.2)
3852# See ld_owl:321.
3853
3854|OO.o followup
3855|OX*O
3856|.X.O
3857+----
3858
3859:8,-,value(35)
3860
3861
3862#########################################################
3863# #
3864# Prevent intrusion #
3865# #
3866#########################################################
3867
3868
3869Pattern D900
3870# gf Added constraint. (3.3.20)
3871
3872??O? block on edge
3873XO.?
3874xX*o
3875----
3876
3877:8,-,value(75)
3878
3879??O?
3880Xa.?
3881xX*o
3882----
3883
3884;oplay_attack(*,a)!=WIN
3885
3886
3887Pattern D902
3888
3889XO. stop connection under
3890.*X
3891---
3892
3893:8,-,value(80)
3894
3895XO.
3896.*A
3897---
3898
3899; does_attack(*,A)
3900
3901
3902#FIXME: D903 & D904 often both match, reducing the number
3903# of patterns available for other options. Perhaps reduce
3904# the value of one or the other?
3905
3906Pattern D903
3907# tm modified (3.1.17)
3908
3909XOX descend to prevent connection
3910.*.
3911---
3912
3913:8,-,value(85)
3914
3915AOX
3916.*.
3917---
3918
3919; does_attack(*,A)
3920
3921
3922Pattern D904
3923
3924XOX hane to prevent connection
3925*..
3926---
3927
3928:8,-,value(84)
3929
3930AOX
3931*..
3932---
3933
3934; does_attack(*,A)
3935
3936
3937Pattern D905
3938
3939*XOX clamp to prevent connection
3940....
3941----
3942
3943:8,-,value(86)
3944
3945*AOX
3946....
3947----
3948
3949; does_attack(*,A)
3950
3951
3952Pattern D906
3953# O dragons may not be amalgamated
3954
3955O..O? block connection
3956..XOX
3957...*.
3958-----
3959
3960:8,-,value(45)
3961
3962
3963Pattern D907
3964# O dragons may not be amalgamated
3965
3966O..O? threaten one stone
3967.*XOX
3968.....
3969-----
3970
3971:8,-,value(45)
3972
3973
3974Pattern D908
3975
3976?OO?? threaten one stone
3977O..O?
3978.*XOX
3979.....
3980-----
3981
3982:8,-,value(75)
3983
3984?OO??
3985O.aO?
3986.*XOX
3987.....
3988-----
3989
3990;oplay_attack(*,a,a)
3991
3992
3993Pattern D909
3994# gf New pattern. (3.1.14)
3995
3996O* stop capture inside eyespace, not ko
3997
3998:-,-,value(55)
3999
4000a*
4001
4002;lib(a)==1 && owl_eyespace(*) && olib(*) > 0
4003
4004
4005Pattern D910a
4006# gf New pattern. (3.1.15)
4007
4008o.O.X block
4009.*X..
4010.....
4011-----
4012
4013:8,-,value(65)
4014
4015
4016Pattern D910b
4017# gf New pattern. (3.1.15)
4018
4019o.O.X block in sente
4020.*X..
4021.....
4022-----
4023
4024:8,-,value(75)
4025
4026obO.X
4027.*Xa.
4028.....
4029-----
4030
4031;xplay_attack(a,*,b,b)
4032
4033
4034Pattern D911
4035# db added (3.3.4)
4036
4037oo???? stop the monkey jump
4038oooo??
4039.*...X
4040..X...
4041------
4042
4043:8,-,value(70)
4044
4045ob????
4046acdo??
4047.*...X
4048..X...
4049------
4050
4051; o_somewhere(a,b,c,d)
4052
4053
4054#########################################################
4055# #
4056# Prevent a cut #
4057# #
4058#########################################################
4059
4060
4061Pattern D1000
4062# tm modified (3.1.22)
4063
4064O* prevent opponent's safe cut
4065XO
4066
4067:/,-,value(60)
4068
4069B*
4070aC
4071
4072; (wormsize(B) > 1 && wormsize(C) > 1)
4073; && safe_xmove(*) && !xplay_attack(*,a)
4074
4075
4076Pattern D1000a
4077
4078O* save large section
4079
4080:-,-,value(95)
4081
4082A*
4083
4084; lib(A) == 1 && wormsize(A) > 2
4085
4086
4087Pattern D1001
4088
4089X*O connect
4090?OX
4091
4092:8,n,value(70)
4093
4094X*O
4095?Oa
4096
4097;!attack(a) || (wormsize(a)<=2 && does_attack(*,a))
4098
4099
4100Pattern D1001b
4101
4102?XOOo
4103XO.X*
4104x.O..
4105-----
4106
4107:8,n,value(71)
4108
4109
4110Pattern D1002
4111# Smaller value if opponent can't cut.
4112# gf Revised constraint. (3.1.11)
4113
4114X*O connect
4115?OX
4116
4117:8,-,value(35)
4118
4119X*O
4120?Oa
4121
4122; !attack(a) && xlib(*) > 1
4123
4124
4125Pattern D1003
4126# Notice similarity with D310a, D310b.
4127# tm reduced value (3.1.22) (see trevorc:1440)
4128
4129????
4130?*.O hanging connection to protect eyespace
4131?.OX
4132?oo?
4133
4134:8,-,value(55)
4135
4136????
4137?*ab
4138?.Oc
4139?oo?
4140
4141;lib(b)>1 && oplay_attack(*,a,a) && !xplay_attack_either(*,?,a,a,c)
4142
4143
4144Pattern D1004
4145# Less attractive when making empty triangle.
4146# gf Added n classification. (3.1.14)
4147# tm Modified constraint (3.1.16)
4148# tm Modified constraint (3.1.23)
4149# nn Modified constraint (3.3.11)
4150
4151????
4152?*.O hanging connection to protect eyespace
4153?OOX
4154
4155:8,n,value(69)
4156
4157??D?
4158?*ab
4159?OOc
4160
4161;(lib(b)>1 && oplay_attack(*,a,a) && !xplay_attack_either(*,?,a,a,c))
4162;&& (!x_somewhere(D) || oplay_attack(*,a,D))
4163;&& (!legal_xmove(D) || oplay_attack(*,D,D))
4164
4165
4166Pattern D1004b
4167# gf New pattern. (3.1.14)
4168
4169----
4170oooo sometimes useful to partion eyespace on edge or in corner
4171.*.O
4172oOOX
4173
4174:8,-,value(45)
4175
4176
4177Pattern D1005
4178
4179.... repair shape in center
4180.*OX
4181.OXx
4182
4183:8,-,value(80)
4184
4185
4186Pattern D1006
4187# gf Added n classification. (3.1.11)
4188# gf Revised constraint. (3.3.6)
4189
4190OXO connect underneath
4191.*.
4192---
4193
4194:|,n,value(60)
4195
4196aCb
4197.*.
4198---
4199
4200;lib(a)>1 && lib(b)>1 && !attack(C)
4201
4202
4203Pattern D1006b
4204# gf New pattern. (3.1.14)
4205# gf Revised constraint. (3.1.32)
4206
4207OXO connect underneath
4208.*.
4209---
4210
4211:|,nE,value(80)
4212
4213aXb
4214.*.
4215---
4216
4217;(owl_escape_value(a)>0 || owl_escape_value(b)>0) && lib(a)>1 && lib(b)>1
4218
4219
4220Pattern D1007
4221# gf Revised constraint. (3.1.14)
4222# gf Revised constraint. (3.3.20)
4223
4224OXO connect underneath in sente
4225.*.
4226---
4227
4228:|,a,value(90)
4229
4230bAc
4231.*.
4232---
4233
4234;lib(A) == 2 && lib(b)>1 && lib(c)>1 && !attack(A) && !oplay_disconnect(*,b,c)
4235
4236
4237#########################################################
4238# #
4239# Attack a defect in the perimeter #
4240# #
4241#########################################################
4242
4243
4244Pattern D1100
4245# gf Split and revised pattern. (3.5.5)
4246# gf Revised constraint. (3.7.9)
4247
4248X* attack the surrounding chain
4249OX
4250
4251:/,b,value(88)
4252
4253A*
4254OB
4255
4256;vital_chain(A) && vital_chain(B) && !ko(*) && !oplay_defend_both(*,A,B)
4257
4258
4259Pattern D1100b
4260# gf Split and revised pattern. (3.5.5)
4261
4262X* attack the surrounding chain
4263OX
4264
4265:/,b,value(92)
4266
4267A*
4268OB
4269
4270;vital_chain(A)>1 && vital_chain(B)>1 && !oplay_defend_both(*,A,B)
4271
4272
4273Pattern D1101
4274
4275... try to break out
4276X*X
4277?O?
4278
4279:|,-,value(95)
4280
4281.a.
4282b*c
4283?O?
4284
4285; oplay_break_through(*,a,b,a,c) == WIN
4286
4287
4288Pattern D1102
4289# tm reduced value (3.1.16)
4290# gf Revised constraint. (3.5.3)
4291
4292... create cutting points
4293X*X
4294?O?
4295
4296:|,-,value(50)
4297
4298c.d
4299A*B
4300?O?
4301
4302;(lib(A)<=3 && olib(c)>2) || (lib(B)<=3 && olib(d)>2)
4303
4304
4305Pattern D1102a
4306# nn New pattern (3.3.11)
4307
4308..... create cutting points
4309.X*X.
4310..O..
4311
4312:|,-,value(45)
4313
4314
4315Pattern D1103
4316
4317?OO.
4318OXX* capture or cut
4319?...
4320....
4321----
4322
4323:8,-,value(85)
4324
4325?OOa
4326OBB*
4327?...
4328....
4329----
4330
4331;oplay_attack_either(*,a,B,a)
4332
4333
4334Pattern D1104
4335# The two O's may be in different dragons.
4336# Normally this is enough to live.
4337
4338??oo? kill one stone
4339.O..O
4340...*X
4341.....
4342-----
4343
4344:8,-,value(100)
4345
4346??oo?
4347.O..O
4348...*a
4349.....
4350-----
4351
4352; does_attack(*,a)
4353
4354
4355Pattern D1105
4356
4357??o? cut off stone on second line
4358?X*o
4359OOXo
4360....
4361----
4362
4363:8,b,value(35)
4364
4365
4366Pattern D1106
4367
4368.O? hane, threatening capture
4369...
4370X*.
4371O.X
4372
4373:8,-,value(77)
4374
4375.O?
4376...
4377B*.
4378OaX
4379
4380; oplay_attack(*,a,B)
4381
4382
4383Pattern D1107
4384
4385XOXx capture to defend
4386*XO.
4387----
4388
4389:8,-,value(35)
4390
4391
4392Pattern D1108
4393
4394X.... surrounding chain collapses
4395OXX*.
4396.OOX.
4397.....
4398
4399:8,B,value(95)
4400
4401Ba...
4402OCC*.
4403eOODf
4404.....
4405
4406; !oplay_defend_both(*,f,a,B,C) && oplay_attack(*,D) && !safe_xmove(e)
4407
4408
4409Pattern D1108b
4410
4411X*... surrounding chain collapses
4412OXXO.
4413.OOXX
4414.....
4415
4416:8,B,value(95)
4417
4418B*...
4419OCCO.
4420.aaXX
4421.....
4422
4423;owl_goal_dragon(a) && !oplay_defend_both(*,B,C)
4424
4425
4426Pattern D1109
4427
4428?O? capture left or right
4429X*X
4430.X.
4431
4432:8,-,value(60)
4433
4434?O?
4435A*B
4436.X.
4437
4438; oplay_attack(*,A) && oplay_attack(*,B)
4439
4440
4441Pattern D1110
4442# may overlap with D1333 and D1335
4443
4444OOX. double atari
4445OX*.
4446X..?
4447
4448:8,b,value(75)
4449
4450OOB.
4451OX*.
4452Xa.?
4453
4454; oplay_attack(*,a,B)
4455
4456
4457Pattern D1111
4458
4459?..?? cutting combination
4460OX*.?
4461?OX..
4462?OX..
4463?oOX.
4464
4465:8,Bs,value(90)
4466
4467?a.??
4468OX*g?
4469?hXcf
4470?OXbd
4471?oiXe
4472
4473;owl_goal_dragon(h) && lib(i)>1 && oplay_attack(*,a,b,c,d,e,f,g,e)
4474
4475
4476Pattern D1112
4477
4478??O.? cutting combination, followup
4479?OX..
4480?OX*.
4481?oOX.
4482
4483:8,B,value(90)
4484
4485??Oe?
4486?fXad
4487?OX*b
4488?ogXc
4489
4490;owl_goal_dragon(f) && lib(g)>1 && oplay_attack(*,a,b,c,d,e,c)
4491
4492
4493Pattern D1113
4494
4495??O.? cutting combination, followup
4496?OXX.
4497?OXO*
4498?oOX.
4499
4500:8,B,value(90)
4501
4502??Oc?
4503?dXXb
4504?OXO*
4505?oeXa
4506
4507;owl_goal_dragon(d) && lib(e)>1 && oplay_attack(*,a,b,c,a)
4508
4509
4510Pattern D1114
4511
4512??O.? cutting combination, followup
4513?OXX*
4514?OXOO
4515?oOXX
4516
4517:8,B,value(90)
4518
4519??Oa?
4520?cXX*
4521?OXOO
4522?odBB
4523
4524;owl_goal_dragon(c) && lib(d)>1 && oplay_attack(*,a,B)
4525
4526
4527Pattern D1115
4528
4529o.X? continue ladder
4530.*OX
4531.XOO
4532?.X?
4533
4534:8,-,value(80)
4535
4536
4537Pattern D1116
4538
4539XXOo capture (possibly with ko)
4540.*XO
4541...X
4542----
4543
4544:8,-,value(65)
4545
4546XXOo
4547.*XO
4548..aX
4549----
4550
4551;oplay_attack(*,a,a)
4552
4553
4554Pattern D1117
4555
4556.xX? try to push out
4557..*O
4558..XO
4559..xx
4560----
4561
4562:8,-,value(75)
4563
4564.xX?
4565.a*O
4566..BO
4567..xx
4568----
4569
4570;oplay_attack(*,a,B)
4571
4572
4573Pattern D1117a
4574# tm New Pattern (3.1.15)
4575# continuation of D1117
4576
4577.xX? try to push out
4578.*OO
4579.XXO
4580..xX
4581----
4582
4583:8,-,value(75)
4584
4585.xX?
4586a*OO
4587.XXO
4588..xB
4589----
4590
4591;oplay_attack(*,a,B) && wormsize(B) > 2
4592
4593
4594Pattern D1118
4595
4596ooo? capture to defend and threaten escape
4597X*X?
4598OXOX
4599?O.?
4600
4601:8,-,value(85)
4602
4603
4604Pattern D1119
4605
4606oOX.? might break through somewhere
4607?*..?
4608X.X.?
4609...o?
4610?????
4611
4612:8,E,value(70)
4613
4614oOX.?
4615?*..b
4616X.X.?
4617...o?
4618?a???
4619
4620;owl_escape_value(a)>0 || owl_escape_value(b)>0
4621
4622
4623Pattern D1120
4624
4625ooX.? might break through
4626?O*.?
4627X.X.?
4628...o?
4629?????
4630
4631:8,E,value(81)
4632
4633ooX.?
4634?O*.b
4635X.X.?
4636...o?
4637?a???
4638
4639;owl_escape_value(a)>0 || owl_escape_value(b)>0
4640
4641
4642Pattern D1120b
4643
4644ooX. might break through
4645?OOX
4646X*X.
4647...o
4648
4649:8,-,value(81)
4650
4651
4652Pattern D1121a
4653# gf Split pattern. (3.3.17)
4654
4655OoXo push into the open
4656.*.o
4657X..o
4658oooo
4659
4660:8,-,value(70)
4661
4662
4663Pattern D1121b
4664# gf Split pattern. (3.3.17)
4665
4666OOXo push into the open
4667X*.o
4668X..o
4669oooo
4670
4671:8,-,value(70)
4672
4673
4674Pattern D1121c
4675# gf Split pattern. (3.3.17)
4676
4677O.Xo push into the open
4678X*.o
4679X..o
4680oooo
4681
4682:8,-,value(70)
4683
4684OaXo
4685B*.o
4686B..o
4687oooo
4688
4689;oplay_attack_either(*,a,a,B)
4690
4691
4692Pattern D1122
4693# gf Repaired constraint. (3.3.6)
4694
4695?O? Cut and maybe capture to make eye
4696X*X
4697---
4698
4699:|,-,value(45)
4700
4701?O?
4702A*B
4703---
4704
4705;oplay_attack(*,A) || oplay_attack(*,B)
4706
4707
4708Pattern D1123
4709# tm modified (3.1.17) added b classification
4710
4711oX*o break through
4712OOX.
4713OX..
4714X..?
4715
4716:8,b,value(86)
4717
4718oB*o
4719OOXa
4720OX..
4721X..?
4722
4723;oplay_attack(*,a,B)
4724
4725
4726Pattern D1124
4727
4728OXO double atari
4729X*?
4730
4731:8,bE,value(90)
4732
4733OAc
4734B*?
4735
4736;lib(A)==2 && owl_escape_value(c)>0 && !oplay_defend_both(*,A,B)
4737
4738
4739Pattern D1125
4740
4741ooo?
4742...o
4743.*X.
4744?OOX
4745
4746:8,E,value(79)
4747
4748abc?
4749...o
4750.*X.
4751?OOX
4752
4753;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
4754
4755
4756Pattern D1126
4757# gf Revised constraint and added B classification. (3.1.8)
4758
4759OX. cut to capture something
4760X*.
4761..?
4762
4763:8,b,value(82)
4764
4765cB.
4766A*.
4767b.?
4768
4769;lib(c)>1 && oplay_attack(*,A) && oplay_attack(*,b,B)
4770
4771
4772Pattern D1127
4773# gf Added constraint and B classification. (3.1.8)
4774
4775.O. atari!
4776X*X
4777OX.
4778oO?
4779
4780:8,b,value(35)
4781
4782.O.
4783X*X
4784aX.
4785oO?
4786
4787;lib(a)>1
4788
4789
4790Pattern D1128
4791# gf Added B classification. (3.1.8)
4792
4793...o set up multiple ataris
4794...O
4795.*XO
4796?XO?
4797
4798:8,B,value(45)
4799
4800
4801Pattern D1129
4802# db added B class (3.1.8)
4803
4804..*o set up multiple ataris
4805..XO
4806.OXO
4807?XO?
4808
4809:8,B,value(77)
4810
4811
4812Pattern D1130
4813
4814O.?? prevent cut
4815XO*X
4816xXO?
4817
4818:8,-,value(35)
4819
4820Oa??
4821XO*X
4822xbO?
4823
4824; !safe_xmove(a) && lib(b)>1
4825
4826
4827Pattern D1131
4828
4829OX cut to capture something and escape
4830X*
4831?O
4832
4833:8,E,value(90)
4834
4835bC
4836D*
4837?a
4838
4839;owl_goal_dragon(a) && owl_escape_value(b)>0
4840;&& oplay_attack(*,C) && oplay_attack(*,D)
4841
4842
4843Pattern D1132
4844# db added (3.1.7)
4845# tm reduced value (3.1.18) (see trevorb:590)
4846
4847?X*O cut to find defects
4848OOX.
4849
4850:8,b,value(45)
4851
4852?A*O
4853OOB.
4854
4855; oplay_attack_either(*,A,B)
4856
4857
4858Pattern D1133
4859# gf New pattern. (3.1.9)
4860
4861?X.o
4862Ox*. escape
4863oO..
4864----
4865
4866:8,E,value(65)
4867
4868?X.o
4869Ox*a
4870oO..
4871----
4872
4873;owl_escape_value(a)>0
4874
4875
4876Pattern D1134
4877# tm new pattern (3.1.14)
4878# Give a very low value, unless add lots of constraints.
4879# See trevor:520.
4880
4881XXO Cut!
4882O*X
4883OX.
4884?..
4885
4886:8,b,value(5)
4887
4888
4889Pattern D1135
4890# tm new pattern (3.1.14)
4891# See trevor:330
4892
4893O*. connect out, threaten cut
4894X.?
4895
4896:8,E,value(35)
4897
4898O*a
4899B.?
4900
4901; owl_escape_value(a)>0
4902; && oplay_attack(*,a,B)
4903
4904
4905Pattern D1137
4906# gf New pattern. (3.1.14)
4907# gf Bugfix. (3.1.18)
4908# See buzco:6
4909
4910?oo?
4911?..o
4912X*.o
4913O.??
4914
4915:8,BE,value(65)
4916
4917?oc?
4918?..d
4919B*.o
4920Oa??
4921
4922;lib(B)<=4 && owl_escape_value(c) + owl_escape_value(d) > 0
4923;&& oplay_attack_either(*,a,a,B)
4924
4925
4926Pattern D1138
4927# tm New Pattern (3.1.17)
4928# tm modified (3.1.23)
4929
4930????
4931.X*? breakout!
4932XOX?
4933
4934:8,sbE,value(85)
4935
4936e?f?
4937.B*?
4938AOCd
4939
4940; lib(C) == 2
4941; && (owl_escape_value(e) > 0 || vital_chain(A))
4942; && (owl_escape_value(f) > 0 || vital_chain(C))
4943; && olib(*) > 1
4944; && oplay_attack_either(*,d,B,A)
4945
4946
4947Pattern D1139
4948# tm New Pattern (3.1.20) (see nngs:110)
4949# gf Added n classification. (3.3.20)
4950
4951?*
4952XO
4953OX
4954
4955:8,bEn,value(75)
4956
4957?*
4958aO
4959Ob
4960
4961; (owl_escape_value(*) > 0) && !oplay_defend_both(*,a,b)
4962
4963
4964Pattern D1140
4965# tm New Pattern (3.1.20) (see nngs:1320 owl_does_attack L15 M17)
4966
4967?XO
4968?*.
4969???
4970
4971:8,bE,value(70)
4972
4973?aO
4974b*.
4975cd?
4976
4977;(owl_escape_value(b) > 0
4978; || owl_escape_value(c) > 0
4979; || owl_escape_value(d) > 0)
4980;&& oplay_attack(*,a)
4981
4982
4983Pattern D1141
4984# tm New Pattern (3.1.22)
4985# (see nngs:1810 owl_attack M17, result 3 L16)
4986
4987... atari for tempo
4988O.X
4989OX.
4990X*.
4991
4992:8,-,value(45)
4993
4994...
4995O.X
4996OX.
4997a*.
4998
4999; lib(a) == 2 || oplay_attack(*,a)
5000
5001
5002Pattern D1142
5003# pp New pattern (3.5.3). See nngs4:420.
5004# gf Fixed symmetry. (3.7.1)
5005
5006?X? split boundary in hope that it will help;
5007*OX low value because it's not guaranteed it will
5008?XO
5009
5010:8,b,value(30)
5011
5012?C?
5013*AX
5014?XB
5015
5016; does_defend(*,A) && !oplay_attack(*,B)
5017; && !same_string(B,C) && vital_chain(B) && vital_chain(C)
5018; && (oplay_attack(*,B) || oplay_attack(*,C)) && !oplay_connect(*,B,C)
5019
5020
5021Pattern D1143
5022# gf New pattern. (3.5.3).
5023# See e.g. nngs:1090.
5024
5025.*XO
5026XOXO
5027..Oo
5028----
5029
5030:8,-,value(65)
5031
5032.*Ac
5033BOAc
5034..do
5035----
5036
5037;lib(A)==2 && lib(c)>1 && lib(d)>1 && oplay_attack(*,B)
5038
5039
5040Pattern D1144
5041# gf New pattern. (3.5.3).
5042# See 13x13b:23.
5043
5044OXO escape by capturing
5045.*X
5046---
5047
5048:8,-,value(82)
5049
5050bXc
5051.*A
5052---
5053
5054; lib(A) == 1 && (owl_escape_value(b) > 0 || owl_escape_value(c) > 0)
5055
5056
5057Pattern D1144b
5058# gf New pattern. (3.5.3).
5059# See 13x13b:23.
5060
5061OXO escape by capturing
5062.*X
5063---
5064
5065:8,-,value(40)
5066
5067OXO
5068.*A
5069---
5070
5071; lib(A) == 1
5072
5073
5074########################################################
5075# #
5076# Kikashi #
5077# #
5078#########################################################
5079# #
5080# Forcing moves that may improve the eyespace #
5081# #
5082#########################################################
5083
5084
5085Pattern D1200
5086
5087.X...| forcing move
5088.*X..|
5089.OOX.|
5090.....|
5091-----+
5092
5093:8,-,value(80)
5094
5095
5096Pattern D1201a
5097# gf Split pattern. (3.5.3)
5098
5099XOo atari to build eyespace
5100*.O
5101ooo
5102
5103:8,-,value(50)
5104
5105AOo
5106*.O
5107ooo
5108
5109; lib(A)==2
5110
5111
5112Pattern D1201b
5113# gf Split pattern and revised constraint. (3.5.3)
5114
5115XOo atari to build eyespace
5116*.O
5117Xoo
5118
5119:8,-,value(50)
5120
5121AOo
5122*.O
5123Boo
5124
5125; lib(A)==2 && !oplay_defend_both(*,A,B)
5126
5127
5128Pattern D1202
5129# tm modified (3.1.22) (see owl:152)
5130
5131o*X? move up with atari
5132o.OO
5133....
5134----
5135
5136:8,-,value(75)
5137
5138o*A?
5139B.OO
5140....
5141----
5142
5143;lib(A) <= 2 && (o_somewhere(B) || !attack(A) || defend(A))
5144
5145
5146Pattern D1203
5147
5148OOX block in sente
5149.*x
5150---
5151
5152:8,-,value(80)
5153
5154OOA
5155b*x
5156---
5157
5158;!attack(A) && oplay_attack(*,A) && !obvious_false_oeye(b)
5159
5160
5161Pattern D1204
5162
5163OOo block in sente
5164.*X
5165---
5166
5167:8,-,value(85)
5168
5169OOo
5170b*A
5171---
5172
5173;wormsize(A)>=3 && !attack(A) && oplay_attack(*,A) && !obvious_false_oeye(b)
5174
5175
5176Pattern D1205
5177
5178?X? connect, cut, and threaten to capture
5179O*O
5180?X?
5181
5182:|,-,value(50)
5183
5184?A?
5185O*O
5186?X?
5187
5188;oplay_attack(*,A)
5189
5190
5191Pattern D1206
5192
5193oOo capture, threatening to take again
5194OXO
5195?*X
5196
5197:8,-,value(40)
5198
5199oOo
5200OXO
5201?*A
5202
5203; oplay_attack(*,A)
5204
5205
5206Pattern D1207
5207# gf New pattern. (3.7.3)
5208
5209o..x sacrifice a stone to gain tempo
5210.X*.
5211....
5212----
5213
5214:8,s,value(40)
5215
5216ob.x
5217aX*.
5218....
5219----
5220
5221;oplay_attack(*,a,a) && oplay_attack(*,b,b)
5222
5223
5224#########################################################
5225# #
5226# Escape #
5227# #
5228#########################################################
5229
5230
5231Pattern D1300
5232
5233OX connect out
5234.*
5235XO
5236
5237:8,Ea,value(90)
5238
5239cb
5240a*
5241XO
5242
5243;owl_escape_value(c)>0 && oplay_attack_either(*,a,a,b)
5244
5245
5246Pattern D1300b
5247
5248OX connect out
5249*.
5250XO
5251
5252:8,Ea,value(89)
5253
5254cX
5255*a
5256BO
5257
5258;owl_escape_value(c)>0 && oplay_attack_either(*,a,a,B)
5259
5260
5261Pattern D1301
5262
5263?X.? connect to another dragon
5264O*.O
5265....
5266
5267:8,a,value(90)
5268
5269?Xc?
5270f*ag
5271.ebd
5272
5273;(!owl_goal_dragon(f) || !owl_goal_dragon(g))
5274;&& (oplay_attack(*,a,b,c,d,e,e) || oplay_attack(*,a,b,c,e,d,d))
5275
5276
5277Pattern D1301b
5278# gf New pattern. (3.3.7)
5279
5280?Xo? connect to another dragon
5281O*.O
5282.xo?
5283
5284:8,a,value(90)
5285
5286?Xo?
5287a*.b
5288.xo?
5289
5290;(!owl_goal_dragon(a) || !owl_goal_dragon(b))
5291;&& !oplay_disconnect(*,a,b)
5292
5293
5294Pattern D1302
5295# gf Revised constraint. (3.1.15)
5296
5297OX? try to connect out
5298.*O
5299.??
5300
5301:8,a,value(80)
5302
5303bX?
5304a*c
5305.de
5306
5307;!(o_somewhere(d) && o_somewhere(e))
5308;&& (!owl_goal_dragon(b) || !owl_goal_dragon(c)) && oplay_attack(*,a,a)
5309
5310
5311Pattern D1303
5312
5313?????
5314oooo? try to escape
5315X.*o?
5316?O.o?
5317??Xo?
5318
5319:/,E,value(80)
5320
5321?????
5322ooca?
5323X.*b?
5324?O.o?
5325??Xo?
5326
5327;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
5328
5329
5330Pattern D1304
5331
5332ooooo try to escape
5333....o
5334X.*.o
5335?O..o
5336??X.o
5337
5338:/,E,value(80)
5339
5340oooab
5341....c
5342X.*.o
5343?O..o
5344??X.o
5345
5346;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
5347
5348
5349Pattern D1305
5350
5351????
5352oooo
5353..*. try to escape
5354X.Ox
5355?O.X
5356
5357:8,E,value(75)
5358
5359????
5360oabc
5361..*.
5362X.Ox
5363?O.X
5364
5365;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
5366
5367
5368Pattern D1306
5369
5370??oo
5371xX*. try to escape
5372X.O.
5373?O.X
5374
5375:8,E,value(79)
5376
5377??ab
5378xX*.
5379X.O.
5380?O.X
5381
5382;owl_escape_value(a) + owl_escape_value(b) > 0
5383
5384
5385Pattern D1307
5386
5387???oo
5388xX.*o try to escape
5389X.O.?
5390?O.??
5391
5392:8,E,value(80)
5393
5394???oa
5395xX.*o
5396X.O.?
5397?O.??
5398
5399;owl_escape_value(a) > 0
5400
5401
5402Pattern D1308
5403# gf Not towards edge. (3.1.15)
5404
5405oooo?
5406O.*o? try to escape
5407....?
5408....?
5409-----
5410
5411:8,E,value(75)
5412
5413ooob?
5414O.*a?
5415....?
5416....?
5417-----
5418
5419;owl_escape_value(a) + owl_escape_value(b) > 0
5420
5421
5422Pattern D1309
5423
5424oo..o
5425O..*o try to escape
5426.....
5427.....
5428-----
5429
5430:8,E,value(81)
5431
5432oo..b
5433O..*a
5434.....
5435.....
5436-----
5437
5438;owl_escape_value(a) + owl_escape_value(b) > 0
5439
5440
5441Pattern D1309b
5442# More positive shape than previous pattern.
5443
5444?ooo? try to escape
5445o.*.o
5446O...O
5447.....
5448.....
5449-----
5450
5451:8,E,value(82)
5452
5453?ooo?
5454o.*.b
5455O...a
5456.....
5457.....
5458-----
5459
5460;owl_escape_value(a) + owl_escape_value(b) > 0
5461
5462
5463Pattern D1310
5464#tm modified (3.1.15) (see trevora:400)
5465#tm added b constraint (3.1.17)
5466
5467?ooo
5468?ooo try to escape
5469X*oo
5470?OX?
5471
5472:8,E,value(80)
5473
5474dabo
5475eooc
5476X*oo
5477?OX?
5478
5479;(!x_somewhere(e) && !x_somewhere(d) && (owl_escape_value(a) > 0))
5480;|| owl_escape_value(b) > 0
5481;|| owl_escape_value(c) > 0
5482
5483
5484Pattern D1311
5485
5486oooo
5487o.oo try to escape
5488.*.o
5489xOX?
5490
5491:8,E,value(80)
5492
5493oabo
5494o.oc
5495.*.o
5496xOX?
5497
5498;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
5499
5500
5501Pattern D1312
5502
5503ooooo
5504....o
5505....o try to escape
5506X*..o
5507?OX??
5508
5509:8,E,value(80)
5510
5511ooabo
5512....c
5513....o
5514X*..o
5515?OX??
5516
5517;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
5518
5519
5520Pattern D1313
5521
5522O...
5523O.*. run away
5524....
5525????
5526
5527:8,E,value(55)
5528
5529O..b
5530O.*a
5531....
5532????
5533
5534;owl_escape_value(a) + owl_escape_value(b) > 0
5535
5536
5537Pattern D1314
5538# nn Modified (3.3.13)
5539# It's rather pointless to match at the edge
5540
5541o.o?
5542O.O. run away
5543....
5544....
5545.*..
5546????
5547
5548:8,E,value(55)
5549
5550o.o?
5551O.O.
5552....
5553....
5554.*..
5555????
5556
5557;owl_escape_value(*) > 0
5558
5559
5560Pattern D1315
5561# db generalized (3.3.14)
5562
5563o.o
5564O.O run away
5565...
5566.*.
5567?oo
5568
5569:8,E,value(50)
5570
5571o.o
5572O.O
5573...
5574.*.
5575?ab
5576
5577; owl_escape_value(a) > 0 || owl_escape_value(b) > 0
5578
5579
5580Pattern D1316
5581
5582OX connect out
5583*O
5584
5585:8,n,value(35)
5586
5587OX
5588*a
5589
5590;!owl_goal_dragon(a)
5591
5592
5593Pattern D1316b
5594# gf New pattern. (3.3.17)
5595
5596OX connect out to strong dragon
5597*O
5598
5599:8,n,value(90)
5600
5601OX
5602*a
5603
5604;owl_strong_dragon(a)
5605
5606
5607Pattern D1317
5608
5609o..X move out, separate, and escape
5610o.*O
5611o...
5612??XX
5613
5614:8,E,value(90)
5615
5616o..X
5617a.*O
5618o...
5619??XX
5620
5621;owl_escape_value(a)>0
5622
5623
5624Pattern D1318
5625# gf Too vague, reduced. (3.1.9)
5626# gf Still too vague, removed. (3.1.14)
5627# evand modified and reinstated, with lower value. (3.3.18)
5628
5629??.... try to run towards center
5630??....
5631??..*.
5632??...O
5633
5634:8,-,value(50)
5635
5636??bce.
5637??a...
5638??d.*.
5639??...O
5640
5641;owl_escape_value(a) > 0 || owl_escape_value(b) > 0
5642;|| owl_escape_value(c) > 0 || owl_escape_value(d) > 0
5643;|| owl_escape_value(e) > 0
5644
5645
5646Pattern D1319
5647
5648... jump to the center
5649...
5650.*.
5651...
5652oOo
5653ooo
5654ooo
5655---
5656
5657:8,-,value(82)
5658
5659
5660Pattern D1320
5661# tm modified (3.1.20)
5662
5663O*O connect to friendly dragon
5664
5665:+,n,value(35)
5666
5667a*b
5668
5669;!owl_goal_dragon(a) || !owl_goal_dragon(b)
5670
5671
5672Pattern D1320a
5673# tm New Pattern (3.1.20)
5674# gf Changed symmetry to accomodate for asymmetric constraint. (3.1.23)
5675
5676?X?
5677O*O connect to friendly dragon
5678...
5679
5680:8,n,value(70)
5681
5682?X?
5683A*B
5684cd.
5685
5686; (!owl_goal_dragon(A) || !owl_goal_dragon(B))
5687; && !xplay_attack_either(*,d,c,c,*)
5688
5689
5690Pattern D1320b
5691# gf New pattern. (3.3.17)
5692
5693O*O connect to strong friendly dragon
5694
5695:+,n,value(90)
5696
5697a*b
5698
5699;owl_strong_dragon(a) || owl_strong_dragon(b)
5700
5701
5702Pattern D1321
5703
5704*.O
5705O.O connect to friendly dragon by bamboo joint
5706
5707:8,na,value(36)
5708
5709*.b
5710a.b
5711
5712;!owl_goal_dragon(a) || !owl_goal_dragon(b)
5713
5714
5715Pattern D1321b
5716# gf New pattern. (3.3.17)
5717
5718*.O
5719O.O connect to strong friendly dragon by bamboo joint
5720
5721:8,na,value(91)
5722
5723*.b
5724a.b
5725
5726;owl_strong_dragon(a) || owl_strong_dragon(b)
5727
5728
5729Pattern D1322
5730# gf Constraint revised. (3.7.9)
5731
5732.*O
5733OXO connect to friendly dragon by atari
5734
5735:8,na,value(36)
5736
5737.*b
5738aCb
5739
5740;(!owl_goal_dragon(a) || !owl_goal_dragon(b)) && lib(C) <= 2 && lib(a) > 1
5741
5742
5743Pattern D1323
5744# without more context this is often an inferior
5745# solution (for example games/manner.sgf move 12).
5746# tm Modified (3.1.17)
5747# gf Removed safe_xmove(*) from constraint. This is redundant with n
5748# classification. (3.1.17)
5749
5750O*O connect to escape
5751
5752:+,nE,value(35)
5753
5754a*b
5755
5756;owl_escape_value(a)>0 || owl_escape_value(b)>0
5757
5758
5759Pattern D1323a
5760# tm New Pattern (3.1.17)
5761
5762??X connect out in sente
5763?O*
5764?.O
5765
5766:8,nE,value(55)
5767
5768BCd
5769AO*
5770?.O
5771
5772;(owl_escape_value(A) > 0
5773; || owl_escape_value(B) > 0
5774; || owl_escape_value(C) > 0)
5775;&& oplay_attack(*,d)
5776
5777
5778Pattern D1324
5779
5780*.O
5781O.O connect by bamboo joint to escape
5782
5783:8,nEa,value(86)
5784
5785*.b
5786a.b
5787
5788;owl_escape_value(a)>0 || owl_escape_value(b)>0
5789
5790
5791Pattern D1325
5792# gf Constraint revised. (3.7.9)
5793
5794.*O
5795OXO connect to friendly dragon by atari to escape
5796
5797:8,nEa,value(86)
5798
5799.*b
5800aCb
5801
5802;(owl_escape_value(a)>0 || owl_escape_value(b)>0) && lib(C) <= 2 && lib(a) > 1
5803
5804
5805Pattern D1326
5806
5807O*O connect to escape
5808
5809:+,E,value(35)
5810
5811a*b
5812
5813;owl_escape_value(a)>0 || owl_escape_value(b)>0
5814
5815
5816Pattern D1329
5817
5818o.... jump towards safety
5819O.*..
5820o....
5821
5822:8,-,value(35)
5823
5824
5825Pattern D1330
5826
5827?O.x break out into the center
5828X*.X
5829....
5830oooo
5831
5832:8,E,value(90)
5833
5834?O.x
5835E*cX
5836dab.
5837ofoo
5838
5839;owl_escape_value(f)>0 && !oplay_defend_both(*,a,b,c,d,a,E)
5840
5841
5842Pattern D1331
5843
5844?O.x break out into the center, followup
5845XO.X
5846.X*.
5847oooo
5848
5849:8,BE,value(90)
5850
5851?O.x
5852COaX
5853bD*.
5854oeoo
5855
5856;owl_escape_value(e)>0 && !oplay_defend_both(*,a,b,C,D)
5857
5858
5859Pattern D1332
5860# gf Revised. (3.1.12)
5861
5862?O?x break out into the center, followup
5863XO*X
5864xXO.
5865oooo
5866
5867:8,E,value(95)
5868
5869?O?x
5870XO*X
5871xXO.
5872oaoo
5873
5874;owl_escape_value(a)>0
5875
5876
5877Pattern D1333
5878
5879?O? break out into the center, followup
5880XOX
5881*XO
5882ooo
5883
5884:8,BE,value(90)
5885
5886?O?
5887AdX
5888*BO
5889oco
5890
5891;owl_escape_value(c)>0 && owl_goal_dragon(d) && !oplay_defend_both(*,A,B)
5892
5893
5894Pattern D1333b
5895
5896?O? break out into the center, followup
5897XOX
5898*XO
5899?O?
5900
5901:8,E,value(90)
5902
5903?O?
5904XdX
5905*XO
5906?c?
5907
5908;owl_escape_value(c)>0 && owl_goal_dragon(d)
5909
5910
5911Pattern D1334
5912# This is not handled as a lunch because capturing only gives a false eye.
5913
5914XOX break out into the center, followup
5915OXO
5916o*o
5917
5918:|,E,value(95)
5919
5920XOX
5921OXO
5922o*o
5923
5924;owl_escape_value(*)>0
5925
5926
5927Pattern D1335
5928
5929?O?? double atari to escape
5930.XO?
5931o*XO
5932oo.?
5933
5934:/,BE,value(95)
5935
5936?O??
5937.Xb?
5938o*XO
5939ao.?
5940
5941;owl_escape_value(a)>0 && owl_goal_dragon(b) && lib(b)>1
5942
5943
5944Pattern D1336
5945
5946XOo capture to escape
5947*XO
5948oOX
5949
5950:8,E,value(95)
5951
5952XOo
5953*XO
5954aOX
5955
5956; owl_escape_value(a)>0
5957
5958
5959Pattern D1337
5960
5961?OO? break out into the center
5962X..X
5963..*.
5964oooo
5965
5966:8,BE,value(90)
5967
5968?OO?
5969EbaX
5970dc*.
5971ofoo
5972
5973;owl_escape_value(f)>0 && !oplay_defend_both(*,a,b,c,d,c,E)
5974
5975
5976Pattern D1338
5977
5978?OO? break out into the center, followup
5979X*XX
5980..O.
5981oooo
5982
5983:8,E,value(90)
5984
5985?OO?
5986C*XX
5987baO.
5988odoo
5989
5990;owl_escape_value(d)>0 && !oplay_defend_both(*,a,b,a,C)
5991
5992
5993Pattern D1339
5994# tm modified (3.1.17)
5995
5996?O? break out into the center, followup
5997X*X
5998oOo
5999
6000:|,E,value(93)
6001
6002?O?
6003X*X
6004odo
6005
6006;owl_escape_value(d)>0
6007
6008
6009Pattern D1340
6010
6011o.X? tunnel out
6012OX*O
6013....
6014----
6015
6016:8,Ea,value(85)
6017
6018obX?
6019cX*d
6020.a..
6021----
6022
6023;(owl_escape_value(c)>0 || owl_escape_value(d)>0) && oplay_attack(*,a,a)
6024;&& !oplay_attack_either(*,b,a,*,a) && !oplay_attack_either(*,b,a,c,a)
6025
6026
6027Pattern D1341
6028
6029?O?? break out into the center
6030X*.X
6031...?
6032ooo?
6033
6034:8,E,value(60)
6035
6036?O??
6037X*.X
6038...?
6039oao?
6040
6041;owl_escape_value(a)>0
6042
6043
6044Pattern D1342
6045
6046X..? miai to make eye or escape into center
6047O*X?
6048OX..
6049o...
6050----
6051
6052:8,-,value(60)
6053
6054
6055Pattern D1343a
6056#tm reduced value (3.1.16)
6057
6058ooo? escape into center
6059o..X
6060o.*.
6061?x.O
6062
6063:8,E,value(77)
6064
6065obo?
6066a..X
6067o.*.
6068?x.O
6069
6070;owl_escape_value(a) + owl_escape_value(b) > 0
6071
6072
6073Pattern D1343b
6074#tm reduced value (3.1.16)
6075
6076ooo? escape into center
6077o..X
6078o.*o
6079?XoO
6080
6081:8,E,value(60)
6082
6083obo?
6084a..X
6085o.*o
6086?XoO
6087
6088;owl_escape_value(a) + owl_escape_value(b) > 0
6089
6090
6091Pattern D1343c
6092#tm reduced value (3.1.16)
6093
6094ooo? escape into center
6095o..X
6096o*.o
6097?.oO
6098
6099:8,E,value(60)
6100
6101obo?
6102a..X
6103o*.c
6104?.dO
6105
6106;o_somewhere(c,d) && (owl_escape_value(a) + owl_escape_value(b) > 0)
6107
6108
6109Pattern D1343d
6110#tm reduced value (3.1.16)
6111
6112ooo? escape into center
6113o..X
6114o*..
6115?..O
6116
6117:8,BE,value(55)
6118
6119obo?
6120a..X
6121o*..
6122?..O
6123
6124;owl_escape_value(a) + owl_escape_value(b) > 0
6125
6126
6127Pattern D1344
6128
6129?XX?o
6130oO*.o escape along edge
6131o....
6132-----
6133
6134:8,E,value(85)
6135
6136?XX?o
6137oO*.a
6138o....
6139-----
6140
6141;owl_escape_value(a)>0
6142
6143
6144Pattern D1345
6145# gf Revised constraint. (3.1.32)
6146
6147OXO atari to connect
6148.*.
6149
6150:8,bEa,value(85)
6151
6152cDe
6153a*b
6154
6155;lib(D)==2 && lib(c)>1 && lib(e)>1
6156;&& (owl_escape_value(c)>0 || owl_escape_value(e)>0)
6157;&& !oplay_disconnect(*,b,a,c,e)
6158
6159
6160Pattern D1346
6161
6162?O.X break out into the center
6163X.*.
6164x...
6165oooo
6166
6167:8,E,value(65)
6168
6169?O.X
6170X.*.
6171x...
6172oabc
6173
6174;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
6175
6176
6177Pattern D1347
6178
6179OX? capture (possibly with ko)
6180XO*
6181...
6182---
6183
6184:8,a,value(75)
6185
6186OX?
6187AO*
6188...
6189---
6190
6191;!oplay_defend(*,A)
6192
6193
6194Pattern D1348
6195
6196O.? connect to friendly dragon to escape
6197.*O
6198
6199:8,nEa,value(36)
6200
6201a.?
6202.*b
6203
6204;owl_escape_value(a)>0 || owl_escape_value(b)>0
6205
6206
6207Pattern D1348b
6208# gf New pattern. (3.3.17)
6209
6210O.? connect to strong friendly dragon to escape
6211.*O
6212
6213:8,nEa,value(90)
6214
6215a.?
6216.*b
6217
6218;owl_strong_dragon(a) || owl_strong_dragon(b)
6219
6220
6221Pattern D1348c
6222# gf New pattern. (3.3.17)
6223
6224Oxx connect to strong friendly dragon to escape
6225.*O
6226
6227:8,nEa,value(90)
6228
6229axx
6230.*b
6231
6232;(owl_strong_dragon(a) || owl_strong_dragon(b)) && !oplay_disconnect(*,a,b)
6233
6234
6235Pattern D1348d
6236# gf New pattern. (3.3.17)
6237
6238O.? connect to strong friendly dragon to escape
6239.*.
6240?.O
6241
6242:8,nEa,value(90)
6243
6244a.?
6245.*.
6246?.b
6247
6248;owl_strong_dragon(a) || owl_strong_dragon(b)
6249
6250
6251Pattern D1350
6252
6253?*.. capture lunch to escape (may be undervalued)
6254OXO.
6255
6256:8,E,value(85)
6257
6258?*bc
6259OAOd
6260
6261;lib(A) == 1
6262;&& (owl_escape_value(b) + owl_escape_value(c) + owl_escape_value(d)) > 0
6263
6264
6265Pattern D1351
6266
6267XO?
6268.*X
6269o.?
6270
6271:8,E,value(65)
6272
6273XO?
6274.*X
6275a.?
6276
6277;owl_escape_value(a)>0
6278
6279
6280Pattern D1352
6281
6282O.OX escape or threaten to
6283..*O
6284
6285:8,a,value(80)
6286
6287ObaX
6288dc*O
6289
6290;!owl_goal_dragon(a) && xplay_attack_either(b,c,d,b,d)
6291
6292
6293Pattern D1353
6294
6295X... hane to escape
6296.*..
6297OX..
6298....
6299----
6300
6301:8,-,value(80)
6302
6303
6304Pattern D1354
6305
6306?...? jump away
6307?.*.?
6308X...x
6309?OOO?
6310
6311:8,E,value(65)
6312
6313?abc?
6314?.*.?
6315X...x
6316?OOO?
6317
6318;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
6319
6320
6321Pattern D1355
6322
6323OXXO connect out
6324.O*.
6325----
6326
6327:8,-,value(70)
6328
6329aXXb
6330.O*.
6331----
6332
6333;lib(a)>1 && lib(b)>1
6334
6335
6336Pattern D1356
6337# nn Modified (3.3.13) see also D1356a
6338
6339o.... jump towards safety
6340O.*..
6341o....
6342
6343:-,E,value(90)
6344
6345o..a.
6346d.*b.
6347o..c.
6348
6349; (owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0)
6350; && !oplay_disconnect(*,d,*)
6351
6352
6353Pattern D1356a
6354# nn New pattern (3.3.13)
6355# B attribute since cut possible
6356
6357o.... jump towards safety
6358O.*..
6359o....
6360
6361:-,BE,value(80)
6362
6363o..a.
6364d.*b.
6365o..c.
6366
6367; (owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0)
6368; && oplay_disconnect(*,d,*)
6369
6370
6371Pattern D1356b
6372# gf New pattern. (3.5.3)
6373# See nngs4:40
6374
6375?.... jump towards safety
6376O..*.
6377o....
6378.....
6379-----
6380
6381:8,E,value(91)
6382
6383?..a.
6384c..*.
6385o..b.
6386.....
6387-----
6388
6389; (owl_escape_value(a) + owl_escape_value(*) + owl_escape_value(b) > 0)
6390; && !oplay_disconnect(*,c,*)
6391
6392
6393Pattern D1357
6394
6395o...o block/connect to escape
6396O....
6397O.*..
6398?OXOo
6399
6400:8,E,value(61)
6401
6402o...a
6403O...b
6404O.*.c
6405?OXOo
6406
6407; owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
6408
6409
6410Pattern D1358
6411
6412O..? connect to escape
6413O.*O
6414
6415:8,Ea,value(61)
6416
6417bde?
6418bc*a
6419
6420;(owl_escape_value(a) > 0 || owl_escape_value(b) > 0)
6421;&& oplay_attack_either(*,c,d,e,c,e)
6422
6423
6424Pattern D1359
6425
6426?...?
6427.....
6428?.*X.
6429?..OX
6430?.Oo?
6431
6432:8,E,value(65)
6433
6434?bc.?
6435a....
6436?.*X.
6437?..OX
6438?.Oo?
6439
6440;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
6441
6442
6443Pattern D1360
6444
6445??.. run while connecting
6446..*.
6447.O..
6448...x
6449.O.x
6450
6451:8,E,value(65)
6452
6453??ac
6454..*b
6455.O..
6456...x
6457.O.x
6458
6459;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
6460
6461
6462Pattern D1361a
6463# too generic; see resultant A1121, see also trevor:1050
6464# gf Added constraint. (3.1.32)
6465# gf Split pattern. (3.5.7)
6466
6467X.X push to expose weakness
6468O*.
6469?Xo
6470
6471:8,-,value(65)
6472
6473A.B
6474O*.
6475?Co
6476
6477;!same_string(A,B) && (lib(A) <= 4 || lib(B) <= 4 || lib(C) <= 4)
6478
6479
6480Pattern D1361b
6481# too generic; see resultant A1121, see also trevor:1050
6482# gf Added constraint. (3.1.32)
6483# gf Split pattern and revised constraint. (3.5.7)
6484
6485X.X push to expose weakness
6486O*.
6487?XX
6488
6489:8,-,value(65)
6490
6491A.B
6492O*.
6493?CX
6494
6495;!same_string(A,B) && (lib(A) <= 4 || lib(B) <= 4 || lib(C) <= 4)
6496;&& !oplay_connect(*,A,C)
6497
6498
6499Pattern D1362
6500# db added (3.1.8)
6501
6502?X.. try to escape
6503?.*.
6504O...
6505o...
6506....
6507----
6508
6509:8,-,value(85)
6510
6511
6512Pattern D1363
6513# db added (3.1.8)
6514
6515oOX? force the opponent to cut, exposing thinness
6516.*.?
6517.XOO
6518..X.
6519?...
6520
6521:8,B,value(75)
6522
6523
6524Pattern D1364
6525# db added (3.1.8)
6526
6527.OX? atari!
6528.XOO
6529.*X.
6530?...
6531
6532:8,B,value(85)
6533
6534
6535Pattern D1365
6536# db added (3.1.8)
6537
6538OX? atari!
6539XOO
6540OX*
6541...
6542
6543:8,B,value(85)
6544
6545
6546Pattern D1366
6547# db added (3.1.8)
6548# gf Revised. (3.1.11)
6549
6550XOO? try to break out
6551OXO?
6552.X*x
6553o...
6554?o..
6555
6556:8,-,value(85)
6557
6558Xaa?
6559OXa?
6560.X*x
6561o...
6562?o..
6563
6564;owl_goal_dragon(a)
6565
6566
6567Pattern D1367
6568# db added (3.1.11)
6569# tm added b attribute.
6570# gf Removed b class. (3.3.17)
6571
6572...?
6573.*.? jump out
6574...X
6575?OO?
6576
6577:8,-,value(60)
6578
6579
6580Pattern D1368
6581# gf added (3.1.12)
6582
6583...? move out
6584.*X?
6585..OX
6586XOo?
6587
6588:8,E,value(70)
6589
6590b..?
6591.*X?
6592..OX
6593Xao?
6594
6595;lib(a)>1 && owl_escape_value(b)>0
6596
6597
6598Pattern D1370
6599# gf New pattern. (3.1.13)
6600
6601oo? move out
6602..X
6603.*.
6604XO?
6605
6606:8,E,value(75)
6607
6608ao?
6609b.X
6610.*.
6611XO?
6612
6613;owl_escape_value(a)>0 || owl_escape_value(b)>0
6614
6615
6616Pattern D1371
6617# gf New pattern. (3.1.13)
6618# tm Added b class (3.1.20)
6619
6620oOo move out
6621...
6622.*X
6623.O?
6624
6625:8,bE,value(85)
6626
6627oao
6628...
6629.*X
6630.O?
6631
6632;owl_escape_value(a)>0
6633
6634
6635Pattern D1372
6636# gf New pattern. (3.1.14)
6637
6638OX. escape underneath
6639.*O
6640---
6641
6642:8,E,value(85)
6643
6644aB.
6645.*O
6646---
6647
6648;owl_escape_value(a)>0 && !attack(B)
6649
6650
6651Pattern D1373
6652# gf New pattern. (3.1.14)
6653
6654o*XO capture to escape
6655
6656:-,bE,value(85)
6657
6658a*BO
6659
6660;owl_escape_value(a)>0 && does_attack(*,B)
6661
6662
6663Pattern D1374
6664# gf New pattern. (3.1.14)
6665
6666oo..Xo connect underneath
6667...*O.
6668------
6669
6670:8,E,value(55)
6671
6672ab..Xo
6673...*O.
6674------
6675
6676;o_somewhere(a,b) && owl_escape_value(a) + owl_escape_value(b) > 0
6677
6678
6679Pattern D1375
6680# tm New pattern (3.1.15)
6681
6682O?.? connect out with atari.
6683.*XO
6684..O.
6685
6686:8,-,value(75)
6687
6688O?.?
6689.*AO
6690..O.
6691
6692; defend(A)
6693
6694
6695Pattern D1376
6696# tm New Pattern (3.1.16)
6697# gf Revised constraint. (3.1.22)
6698
6699OoX?
6700x.*O
6701----
6702
6703:8,Ea,value(75)
6704
6705bdE?
6706xc*a
6707----
6708
6709; (owl_escape_value(a) > 0 || owl_escape_value(b) > 0)
6710; && ((o_somewhere(d) && oplay_attack_either(*,c,c,E))
6711; || (!o_somewhere(d) && !oplay_defend_both(*,c,d,c,E)))
6712
6713
6714Pattern D1377
6715
6716?????
6717OX*.o hane into the open.
6718.O..o
6719-----
6720
6721:8,-,value(50)
6722
6723?????
6724OA*.o
6725.O..o
6726-----
6727
6728;defend(A)
6729
6730
6731Pattern D1378
6732# tm reduced value (3.1.17)
6733# gf Revised constraint. (3.3.18)
6734# See also A1126.
6735
6736X*X breakout & attack
6737?O?
6738
6739:|,-,value(55)
6740
6741A*B
6742?O?
6743
6744; vital_chain(A) && vital_chain(B)
6745; && oplay_attack_either(*,A,B) && !oplay_connect(*,A,B)
6746
6747
6748Pattern D1379
6749# tm New Pattern (3.1.17)
6750
6751??? escape or attack.
6752x..
6753O*X
6754?X?
6755
6756:8,E,value(65)
6757
6758?BC
6759xeA
6760O*X
6761?d?
6762
6763; (owl_escape_value(A) > 0
6764; || owl_escape_value(B) > 0
6765; || owl_escape_value(C) > 0)
6766; && !attack(d)
6767; && oplay_attack(*,A,d)
6768; && oplay_attack(*,e,d)
6769
6770
6771Pattern D1380
6772# tm (?) New Pattern (3.1.17)
6773
6774?.. escape
6775.*.
6776O.?
6777
6778:8,E,value(65)
6779
6780?AB
6781.*C
6782O.?
6783
6784; owl_escape_value(A) + owl_escape_value(B) + owl_escape_value(C) > 3
6785
6786
6787Pattern D1381
6788# tm New Pattern (3.1.19)
6789
6790O*.
6791?XO
6792
6793:8,Ea,value(70)
6794
6795O*a
6796?CB
6797
6798; (owl_escape_value(B) > 0 || owl_escape_value(a) > 0)
6799; && oplay_attack_either(*,a,a,C)
6800
6801
6802Pattern D1382
6803# tm New Pattern (3.1.19)
6804
6805.O threaten attack and connect
6806*X
6807O.
6808
6809:8,Ea,value(70)
6810
6811cA
6812*d
6813B.
6814
6815; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0)
6816; && oplay_attack(*,c,d)
6817
6818
6819Pattern D1383
6820# tm New Pattern (3.1.20)
6821# tm added b attribute (3.1.23)
6822# gf No escape to second line, see 9x9:550. (3.7.8)
6823
6824?Oo
6825...
6826?*.
6827?.?
6828???
6829
6830:8,sbE,value(71)
6831
6832?Bo
6833...
6834?*.
6835?a?
6836???
6837
6838;(owl_escape_value(a) > 0)
6839; && !oplay_disconnect(*,*,B)
6840
6841
6842Pattern D1384
6843# tm New Pattern (3.1.22) (see strategy2:73)
6844# may not be necessary, but probably doesn't hurt.
6845# (doesn't work for strategy2:73; no matching stones are in dragon)
6846
6847O.. escape or capture to escape
6848.*?
6849?.O
6850
6851:8,E,value(65)
6852
6853A..
6854.*c
6855?dB
6856
6857; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0)
6858; && (!x_somewhere(c) || oplay_attack_either(*,d,c,d))
6859
6860
6861Pattern D1385
6862# tm New Pattern (3.1.23)
6863
6864.O escape or capture
6865..
6866X*
6867?O
6868
6869:8,E,value(75)
6870
6871fB
6872dc
6873e*
6874?A
6875
6876; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0)
6877; && (oplay_attack(*,c,d,f,e) && oplay_attack(*,c,d,f,f))
6878
6879
6880Pattern D1386a
6881# gf New pattern. (3.3.17)
6882
6883OX.x connect along edge to strong dragon
6884o*.O
6885----
6886
6887:8,Eb,value(90)
6888
6889aX.x
6890o*.b
6891----
6892
6893;owl_strong_dragon(a) || owl_strong_dragon(b)
6894
6895
6896Pattern D1386b
6897# gf New pattern. (3.3.17)
6898
6899OX.x connect along edge
6900o*.O
6901----
6902
6903:8,Eb,value(35)
6904
6905aX.x
6906o*.b
6907----
6908
6909;owl_escape_value(a)>0 || owl_escape_value(b)>0
6910
6911
6912Pattern D1387
6913# gf New pattern. (3.3.17)
6914
6915??o? atari to break out
6916o...
6917*X.X
6918XOo?
6919
6920:8,EB,value(75)
6921
6922?dce
6923o...
6924*X.X
6925Bao?
6926
6927;(owl_escape_value(c)>0 || owl_escape_value(d)>0 || owl_escape_value(e)>0)
6928;&& lib(B)==2 && olib(*)>=2 && !oplay_attack(*,a)
6929
6930
6931Pattern D1388
6932# gf New pattern. (3.3.17)
6933
6934??o? atari to break out
6935o...
6936OX*X
6937?Oo?
6938
6939:8,Eb,value(75)
6940
6941?cbd
6942o...
6943OX*X
6944?ao?
6945
6946;(owl_escape_value(b)>0 || owl_escape_value(c)>0 || owl_escape_value(d)>0)
6947;&& !oplay_attack(*,a)
6948
6949
6950Pattern D1389
6951# gf New pattern. (3.3.18)
6952# gf Added a classification. (3.7.10)
6953# See also D1340.
6954
6955OX.O
6956?*.?
6957----
6958
6959:8,Ea,value(84)
6960
6961aX.b
6962?*.?
6963----
6964
6965;(owl_strong_dragon(a) || owl_strong_dragon(b)) && !oplay_disconnect(*,a,b)
6966
6967
6968Pattern D1390
6969# pp New pattern (3.5.2)
6970
6971???.O either capture or escape
6972o*...
6973OX..?
6974?x.??
6975-----
6976
6977:8,b,value(80)
6978
6979???dC
6980o*bc.
6981ABa.?
6982?x.??
6983-----
6984
6985; owl_escape_value(d) > 0
6986; && oplay_attack_either(*,a,b,c,d,B,c) && oplay_connect(*,a,b,c,d,?,A,C)
6987
6988
6989Pattern D1391
6990# gf New pattern. (3.5.3)
6991# gf Revised pattern. (3.7.2)
6992# See owl1:353.
6993
6994.O*O connect out
6995OX??
6996
6997:8,a,value(80)
6998
6999bO*a
7000dC??
7001
7002;owl_escape_value(a) > 0 && oplay_attack_either(*,b,C,b)
7003;&& !xplay_connect(*,a,d)
7004
7005
7006Pattern D1392
7007# evand New pattern. (3.7.1)
7008# sometimes forcing is better than the cut -- see gifu03:704
7009
7010O.X
7011*XO
7012
7013:8,b,value(40)
7014
7015O.X
7016*AO
7017
7018;lib(A) == 2
7019
7020
7021Pattern D1393
7022# pp New pattern, see kgs:500 (3.7.4)
7023
7024O.O. secure escape connection by first threatening opponent
7025?*XO
7026
7027:8,B,value(50)
7028
7029A.Ca
7030?*DB
7031
7032# Note: xplay_disconnect() to avoid generating this move when it is
7033# not really needed.
7034
7035; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0)
7036; && xplay_disconnect(A,C) && oplay_attack(*,a,D)
7037
7038
7039Pattern D1394
7040#pp New pattern, see kgs:500 (3.7.4)
7041
7042O.O* connect out!
7043??XO
7044
7045:8,a,value(70)
7046
7047A.O*
7048??XB
7049
7050; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0)
7051; && safe_xmove(*) && !oplay_disconnect(*,A,B)
7052
7053
7054Pattern D1395
7055# gf New pattern. (3.7.4)
7056# See gunnar:73.
7057
7058?OXO
7059OX*x
7060----
7061
7062:8,sb,value(40)
7063
7064?bXa
7065OX*x
7066----
7067
7068;(owl_escape_value(a) > 0 || owl_escape_value(b) > 0)
7069;&& oplay_disconnect(*,a,b) != WIN
7070
7071
7072#########################################################
7073# #
7074# Ko #
7075# #
7076#########################################################
7077
7078
7079Pattern D1400
7080
7081---- connect (don't fight ko)
7082..X?
7083O*OX
7084?OX?
7085
7086:8,-,value(95)
7087
7088----
7089..C?
7090O*OA
7091?OB?
7092
7093;lib(A)>1 && lib(B)>1 && lib(C)>1
7094
7095
7096Pattern D1400b
7097
7098---- capture, no ko
7099.*X?
7100O.OX
7101?OX?
7102
7103:8,-,value(95)
7104
7105----
7106.*A?
7107O.OX
7108?OX?
7109
7110;lib(A)==1
7111
7112
7113Pattern D1401
7114
7115---- do fight ko
7116.*X?
7117O.OX
7118?OX?
7119
7120:8,-,value(35)
7121
7122----
7123.*X?
7124O.OA
7125?OB?
7126
7127; (lib(A)>1) && (lib(B)>1)
7128
7129
7130Pattern D1402
7131
7132.OX? take the ko
7133OX*X
7134----
7135
7136:8,s,value(45)
7137
7138aBX?
7139OX*X
7140----
7141
7142; (legal_omove(*) && owl_topological_eye(a,B)==3)
7143; || (!legal_omove(*) && owl_topological_eye(a,B)==2)
7144
7145
7146Pattern D1403
7147
7148|XO? corner ko capture
7149|*XO
7150+---
7151
7152:8,s,value(30)
7153
7154
7155Pattern D1404
7156
7157|..O start corner ko
7158|*XO
7159|.OX
7160+---
7161
7162:8,s,value(80)
7163
7164|..O
7165|*AO
7166|.OX
7167+---
7168
7169;oplay_defend(*,A) != WIN
7170
7171
7172Pattern D1405
7173
7174|X.O start or continue corner ko
7175|*XO
7176|xOo
7177+---
7178
7179:8,s,value(80)
7180
7181|X.O
7182|*AO
7183|xOo
7184+---
7185
7186;oplay_defend(*,A) != WIN
7187
7188
7189Pattern D1405b
7190
7191|X.O start or continue corner ko
7192|OXO
7193|.*o
7194+---
7195
7196:8,s,value(80)
7197
7198|X.O
7199|OAO
7200|.*o
7201+---
7202
7203;oplay_defend(*,A) != WIN
7204
7205
7206Pattern D1406
7207
7208|X*O try to avoid corner ko
7209|.XO
7210|.Oo
7211+---
7212
7213:8,-,value(55)
7214
7215
7216Pattern D1407
7217
7218|.OX? defend corner eye space
7219|..O?
7220|.O*X
7221|....
7222+----
7223
7224:8,-,value(75)
7225
7226
7227Pattern D1408
7228
7229?X?? take ko
7230X*X?
7231OXOX
7232?O.O
7233
7234:8,s,value(45)
7235
7236
7237Pattern D1409
7238
7239?X?| take ko
7240X*X|
7241OXO|
7242?O.|
7243
7244:8,s,value(45)
7245
7246
7247Pattern D1410
7248
7249?OO| throw in to set up ko or squeeze
7250O.X|
7251OOX|
7252o.*|
7253---+
7254
7255:8,s,value(35)
7256
7257
7258Pattern D1411
7259
7260|*XO play corner ko
7261|XO.
7262+---
7263
7264:8,s,value(45)
7265
7266|*AO
7267|XO.
7268+---
7269
7270;attack(A) != 0
7271
7272
7273Pattern D1411b
7274
7275|*XO play corner ko
7276|XOo
7277+---
7278
7279:8,s,value(35)
7280
7281|*AO
7282|XOo
7283+---
7284
7285;oplay_defend(*,A) != WIN
7286
7287
7288Pattern D1412
7289
7290|O?? capture to finish ko
7291|.OO
7292|OX*
7293+---
7294
7295:8,-,value(35)
7296
7297
7298Pattern D1413
7299
7300|O?? squeeze to finish ko
7301|XOO
7302|.X*
7303+---
7304
7305:8,-,value(35)
7306
7307|a??
7308|XOO
7309|.X*
7310+---
7311
7312;lib(a) > 1
7313
7314
7315Pattern D1414
7316
7317|oo??? try to live with double ko
7318|.O???
7319|XOO??
7320|.XO*o
7321|X.X.o
7322+-----
7323
7324:8,-,value(45)
7325
7326
7327Pattern D1415
7328# Generalizes D1412. Necessary to have one O stone in the pattern to
7329# identify the goal.
7330
7331?O capture to finish ko
7332X*
7333
7334:8,-,value(35)
7335
7336?O
7337A*
7338
7339;lib(A)==1 && finish_ko_helper(A)
7340
7341
7342Pattern D1416
7343# Generalizes D1412. Necessary to have one O stone in the pattern to
7344# identify the goal.
7345
7346X*O capture to finish ko
7347
7348:-,-,value(35)
7349
7350A*O
7351
7352;lib(A)==1 && finish_ko_helper(A)
7353
7354
7355Pattern D1417
7356# Generalizes D1413. Necessary to have one O stone in the pattern to
7357# identify the goal.
7358
7359?O squeeze to finish ko
7360X*
7361
7362:8,-,value(35)
7363
7364?O
7365A*
7366
7367;lib(A)==2 && olib(*)>1 && squeeze_ko_helper(A)
7368
7369
7370Pattern D1418
7371# Generalizes D1413. Necessary to have one O stone in the pattern to
7372# identify the goal.
7373
7374X*O squeeze to finish ko
7375
7376:-,-,value(35)
7377
7378A*O
7379
7380;lib(A)==2 && olib(*)>1 && squeeze_ko_helper(A)
7381
7382
7383Pattern D1419
7384
7385oOX? take ko to preserve eye
7386O.OX
7387XOX*
7388----
7389
7390:8,s,value(35)
7391
7392oOX?
7393O.OX
7394AOX*
7395----
7396
7397;attack(A)
7398
7399
7400Pattern D1420
7401
7402oOX? take ko to preserve eye
7403O.OX
7404.OX*
7405----
7406
7407:8,s,value(35)
7408
7409oOX?
7410O.OX
7411aOX*
7412----
7413
7414;!safe_xmove(a)
7415
7416
7417Pattern D1421
7418
7419xXO avoid ko
7420X.*
7421---
7422
7423:8,s,value(25)
7424
7425xXa
7426X.*
7427---
7428
7429;xplay_defend(*,a) != WIN && oplay_attack(*,a) == 0
7430
7431
7432Pattern D1422
7433
7434|XX?? keep ko going
7435|OXOO
7436|.OXX
7437|O.O*
7438+----
7439
7440:8,s,value(25)
7441
7442|XX??
7443|OXOO
7444|.OAA
7445|O.O*
7446+----
7447
7448;lib(A)==1
7449
7450
7451Pattern D1423
7452# gf New pattern. (3.3.6)
7453
7454|OO? throw in to make ko or better
7455|.O?
7456|XOO
7457|*.O
7458+---
7459
7460:8,s,value(45)
7461
7462
7463Pattern D1424
7464# pp New pattern (3.3.12)
7465
7466|Oo? avoid corner ko
7467|.Oo
7468|oX*
7469+---
7470
7471:8,-,value(45)
7472
7473
7474#########################################################
7475# #
7476# Threats to capture #
7477# #
7478#########################################################
7479
7480
7481Pattern DC01a
7482# pp New pattern (3.5.5).
7483
7484??? threaten to cut off vital chain
7485X.X
7486O*?
7487
7488:8,c, threatens_to_capture(A), value(35)
7489
7490abc
7491AdX
7492O*?
7493
7494; o_somewhere(a,b,c) && vital_chain(A) && !oplay_defend(*,?,d,A)
7495
7496
7497Pattern DC01b
7498# pp New pattern (3.5.5).
7499
7500??? threaten to cut off vital chain
7501X.X
7502O*?
7503
7504:8,c, threatens_to_capture(B), value(35)
7505
7506abc
7507XdB
7508O*?
7509
7510; o_somewhere(a,b,c) && vital_chain(B) && !oplay_defend(*,?,d,B)
7511
7512
7513Pattern DC02
7514# pp New pattern (3.5.5) -- see ld_owl:316.
7515
7516OX.?
7517OX..
7518.*..
7519----
7520
7521:8,c, threatens_to_capture(A), value(35)
7522
7523ABb?
7524AB..
7525.*..
7526----
7527
7528; lib(A) >= 3 && lib(B) == 3 && olib(b) > 2
7529
7530
7531#########################################################
7532# #
7533# Threats to create eyes #
7534# #
7535#########################################################
7536
7537
7538Pattern DE01a
7539# pp New pattern (3.5.5).
7540
7541?O*?
7542....
7543xOOO
7544
7545:8,c, threatens_eye(a), value(30)
7546
7547?O*?
7548..a.
7549xOOO
7550
7551
7552Pattern DE01b
7553# pp New pattern (3.5.5).
7554
7555?O*?
7556....
7557OOOo
7558
7559:8,c, threatens_eye(a), value(30)
7560
7561?O*?
7562.a..
7563OOOo
7564
7565
7566Pattern DE02
7567# pp New pattern (3.5.5).
7568
7569?O*
7570O..
7571---
7572
7573:8,c, threatens_eye(a), value(30)
7574
7575bO*
7576Oa.
7577---
7578
7579; o_somewhere(b)
7580; || (x_somewhere(b) ? !oplay_defend(*,b) : !oplay_defend(*,b,b))
7581
7582
7583Pattern DE03
7584# pp New pattern (3.5.5) -- see owl1:326.
7585
7586OO?
7587..*
7588---
7589
7590:8,c, threatens_eye(a), value(30)
7591
7592OOb
7593.a*
7594---
7595
7596; o_somewhere(b)
7597; || (x_somewhere(b) ? !oplay_defend(*,b) : !oplay_defend(*,b,b))
7598
7599
7600Pattern DE04
7601# pp New pattern (3.5.5) -- see owl1:326.
7602
7603xXOo?
7604XO.O?
7605X.OX*
7606-----
7607
7608:8,c, threatens_eye(a), value(30)
7609
7610xXOo?
7611XOaO?
7612X.OX*
7613-----
7614
7615
7616#########################################################
7617# #
7618# Reverse sente defending moves #
7619# #
7620#########################################################
7621
7622
7623Pattern DR01
7624# pp New pattern (3.5.5) -- see ld_owl:316.
7625# FIXME: most likely need variations for other first line moves.
7626
7627?.OX? prevent X's sente move at 'a'
7628..OXx
7629...*.
7630-----
7631
7632:8,c, reverse_sente(a), value(30)
7633
7634?.OB?
7635.aOBx
7636...*.
7637-----
7638
7639; owl_proper_eye(a) && !attack(B)
7640
7641
7642# END OF FILE