Updated README: Equal sign not required with `--mode` flag.
[sgk-go] / patterns / owl_attackpats.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 offensive 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#################
61#
62# 'Y' is the anchor stone, a unique stone of color 'X' used by the pattern
63# matcher to find the pattern.
64#
65#################
66# The patterns in this database are sorted into the following
67# categories:
68#
69# Axx Limiting moves on the fourth line
70# A1xx Limiting moves on the third line
71# A2xx Limiting moves on the second line
72# A3xx Limiting moves on the first line
73# A4xx Limiting moves in the center
74# A5xx Eye reducing moves on the second line
75# A6xx Eye reducing moves on the first line
76# A7xx Eye reducing moves in the center
77# A8xx Invade the eye space
78# A9xx Nakade patterns
79# A10xx Cuts
80# A11xx Reinforce the perimeter
81# A12xx Kill or threaten a worm of the dragon
82# A13xx Specific corner attacks
83# A14xx Invasion patterns
84# A15xx Ko patterns
85# A16xx Specific edge attacks
86#
87# ACxx Threats to capture
88# AExx Threats to destroy eyes
89# ARxx Reverse sente attacking moves
90
91
92attribute_map owl_attack
93
94goal_elements Xx
95callback_data Xx
96
97
98#########################################################
99# #
100# Limiting moves on the fourth line #
101# #
102#########################################################
103
104
105Pattern A1
106# sometimes sagari is better
107
108?.*Ox connect
109..OYX
110.....
111.....
112-----
113
114:8,n,value(80)
115
116?.*Ax
117..OYX
118.....
119.....
120-----
121
122; lib(A)<4
123
124
125Pattern A2
126
127?..X.
128?.*.x block
129..OY.
130.....
131.....
132-----
133
134:8,-,value(65)
135
136
137Pattern A3
138# db added (3.1.8)
139# gf Reduced value. (3.1.14)
140
141.*O? draw back
142O.YX
143....
144....
145----
146
147:8,-,value(65)
148
149
150#########################################################
151# #
152# Limiting moves on the third line #
153# #
154#########################################################
155
156
157Pattern A101
158
159Oo? Block
160Y*.
161...
162...
163---
164
165:8,-,value(70)
166
167
168Pattern A102
169
170OO..? Draw back
171XXO*.
172..Y..
173.....
174-----
175
176:8,-,value(80)
177
178
179Pattern A103
180
181?Oo? draw back
182x*.Y
183x.OX
184?...
185----
186
187:8,-,value(50)
188
189
190Pattern A104
191
192?..O pull back
193.*OY
194..X.
195....
196----
197
198:8,-,value(90)
199
200?..O
201.*Oa
202..X.
203....
204----
205
206; lib(a)>2
207
208
209Pattern A105
210
211?..OxX mandatory block
212..*Y..
213......
214......
215------
216
217:8,-,value(99)
218
219
220Pattern A106
221
222?X?? push in
223..*O
224X.YO
225....
226----
227
228:8,-,value(60)
229
230
231Pattern A107
232# gf Not on second line without known support. See trevora:290. (3.1.15)
233# nn Added constraint (3.3.14)
234
235....? block on third line
236Y.*.?
237....?
238....?
239-----
240
241:8,-,value(50)
242
243#
244# ....?
245# a.*.b
246# ....?
247# ....?
248# -----
249#
250# ; weak(a) || oarea(b)
251
252
253Pattern A108
254
255*.x stand on third line
256OYx
257...
258---
259
260:8,n,value(70)
261
262
263Pattern A109
264# tm Constraint added (3.1.16)
265
266oOo block on third line
267Y*.
268...
269...
270---
271
272:8,-,value(79)
273
274aOb
275Y*.
276...
277...
278---
279
280#Pattern A232 is almost certainly better if this
281#constraint fails (avoid empty triangle)
282; (o_somewhere(a) || !o_somewhere(b))
283
284
285Pattern A110
286
287O..o draw back --- the only move!
288XO*.
289XY..
290....
291----
292
293:8,-,value(85)
294
295
296Pattern A111
297# db added (3.1.8)
298
299?Ooo try to confine
300?...
301Y.*.
302x...
303....
304----
305
306:8,-,value(50)
307
308
309Pattern A112
310# db added (3.1.8)
311
312..O? draw back
313O*YX
314....
315....
316----
317
318:8,-,value(79)
319
320..A?
321O*YX
322....
323....
324----
325
326; lib(A)>2
327
328
329Pattern A113
330# gf Moved from A212. (3.1.9)
331
332|..xX prevent connection
333|....
334|..*O
335|..Y?
336
337:8,C,value(99)
338
339
340Pattern A114
341# gf Moved from A213. (3.1.9)
342
343|..X. prevent connection
344|....
345|..*O
346|..Y?
347
348:8,C,value(99)
349
350
351Pattern A115
352# gf New pattern. (3.1.14)
353
354o..Y?
355o.*.X
356.....
357.....
358-----
359
360:8,-,value(85)
361
362a..Y?
363b.*.X
364.....
365.....
366-----
367
368;o_somewhere(a,b)
369
370
371#########################################################
372# #
373# Limiting moves on the second line #
374# #
375#########################################################
376
377
378Pattern A201
379
380OO... Block if safe
381XXOO.
382..YX*
383.....
384-----
385
386:8,-,value(60)
387
388OOc.b
389XXOOa
390..YX*
391.....
392-----
393
394; oplay_attack(*,a,a) || !oplay_attack(*,a,b,c,*)
395
396
397Pattern A203
398# tm Modified (3.1.16)
399
400?O?? second line block
401x*Yx
402...X
403----
404
405:8,C,value(60)
406
407
408Pattern A204
409# gf Pattern revised. (3.5.1)
410
411??O?? second line block
412?.*Y?
413.....
414-----
415
416:8,-,value(60)
417
418
419Pattern A205
420
421?Oo second line block (needs a helper)
422XY*
423...
424---
425
426:8,-,value(60)
427
428
429Pattern A205b
430
431?Oo second line block (needs a helper)
432XY*
433.O.
434---
435
436:8,-,value(70)
437
438
439Pattern A206
440
441?O? block
442YOo
443.X*
444...
445---
446
447:8,-,value(80)
448
449
450Pattern A206b
451
452?.O block
453YO.
454.X*
455...
456---
457
458:8,-,value(78)
459
460
461Pattern A207
462
463O.Y second line kosumi
464.*.
465...
466---
467
468:8,-,value(35)
469
470
471Pattern A207b
472
473O.Yx second line kosumi
474.*.x
475...?
476----
477
478:8,-,value(58)
479
480
481Pattern A207c
482# nn Modified (3.3.11) see A207d
483
484?O.Yxx second line kosumi
485?.*.xx
486?...??
487------
488
489:8,-,value(78)
490
491?O.Yxx
492a.*.xx
493?...??
494------
495
496;!x_somewhere(a) || attack(a)
497
498
499# nn Removal candidate (3.3.13)
500# Success rate in regressions : 2.61% (15/560)
501
502Pattern A207d
503# nn New pattern (3.3.11) penalty for being gote
504
505?O.Yxx second line kosumi
506X.*.xx
507?...??
508------
509
510:8,C,value(60)
511
512?O.Yxx
513a.*.xx
514?...??
515------
516
517;!attack(a)
518
519
520Pattern A208a
521# tm New Pattern (3.1.16)
522
523O.X
524*.Y
525.oo
526---
527
528:8,-,value(55)
529
530
531Pattern A208b
532# nn New Pattern (3.3.11)
533
534O..
535*.Y
536.oo
537---
538
539:8,-,value(35)
540
541
542Pattern A208c
543# gf New pattern. (3.3.18)
544
545?Xx
546O.X
547.*Y
548.oo
549---
550
551:8,-,value(56)
552
553
554Pattern A208d
555# gf New pattern. (3.5.3)
556
557O.X
558.*Y
559.oo
560---
561
562:8,-,value(56)
563
564OaX
565.*Y
566.oo
567---
568
569;!oplay_attack(*,a,*)
570
571
572Pattern A208e
573# gf New pattern. (3.7.3)
574
575O..
576.*Y
577.oo
578---
579
580:8,-,value(56)
581
582Oa.
583.*Y
584.oo
585---
586
587;oplay_attack(*,a,a)
588
589
590Pattern A209
591
592?Ooo
593xY*. second line block
594x...
595----
596
597:8,-,value(70)
598
599?aoo
600xY*.
601x...
602----
603
604;lib(a)>2
605
606
607Pattern A210
608
609?OO?x
610xY*.x second line block
611x....
612-----
613
614:8,C,value(85)
615
616?OO?x
617xY*.a
618x....
619-----
620
621;owl_escape_value(a)>0
622
623
624Pattern A211
625
626?Oo? second line block
627o..Y
628o.*.
629?...
630----
631
632:8,-,value(80)
633
634
635Pattern A214
636
637---- connect
638....
639XO*.
640xYO?
641
642:8,-,value(85)
643
644----
645....
646XO*.
647xAO?
648
649;lib(A)>1
650
651
652Pattern A215
653
654?oOx sagari
655?OYX
656x*..
657....
658----
659
660:8,C,value(80)
661
662
663Pattern A216
664
665??O descend to attack
666XYO
667..*
668...
669---
670
671:8,-,value(50)
672
673
674Pattern A216b
675# gf New pattern. (3.1.11)
676
677??O hane with support
678XYO
679.*.
680...
681---
682
683:8,-,value(60)
684
685??O
686XYO
687a*.
688...
689---
690
691;!oplay_attack(*,a,*)
692
693
694Pattern A217
695
696?OYX sometimes more effective to just descend
697.*..
698....
699----
700
701:8,-,value(40)
702
703
704Pattern A217b
705# gf Increased value. (3.1.14)
706
707?OYX sometimes more effective to just descend
708.*..
709....
710----
711
712:8,-,value(65)
713
714?aYX
715.*..
716....
717----
718
719;lib(a)==2
720
721
722Pattern A217c
723# gf New pattern. (3.1.14)
724
725.OYX sometimes more effective to just descend
726.*..
727....
728----
729
730:8,-,value(60)
731
732caYX
733b*..
734....
735----
736
737;!xplay_defend_both(*,b,c,a,b)
738
739
740Pattern A218
741
742..OO reverse sente sagari
743.OYX
744.*..
745....
746----
747
748:8,-,value(75)
749
750
751Pattern A219
752
753O..?
754XO.? double hane
755.Y*.
756...?
757----
758
759:8,s,value(70)
760
761ba.?
762AOc?
763eY*d
764..f?
765----
766
767;(xlib(a)==1 || lib(b)>2) && lib(A)<=3 && olib(e)>1
768;&& oplay_attack(*,c,a,d,e,f,A)
769;&& oplay_defend(*,c,a,e,*)
770
771
772Pattern A220
773# tm Modified (3.1.23)
774
775???? prevent jump
776?xx.
777xY*.
778....
779----
780
781:8,-,value(45)
782
783??bc
784?xad
785xY*.
786....
787----
788
789; (owl_escape_value(b) <= 0 && owl_escape_value(c) <= 0)
790; || !oplay_attack(*,a,d)
791
792
793Pattern A221
794# tm Modified (3.1.20) - added right hand ?s
795# tm Modified (3.1.23)
796
797????? back off to prevent jump
798?xx.?
799xY.*?
800....?
801-----
802
803:8,-,value(50)
804
805???a?
806?xx.?
807xY.*?
808....?
809-----
810
811;owl_escape_value(a) < 1
812
813
814Pattern A222
815
816?oOo?? clamp
817?Oooo?
818XOY*..
819.X....
820------
821
822:8,-,value(35)
823
824
825Pattern A223
826
827O.Y attach underneath
828..*
829...
830---
831
832:8,-,value(80)
833
834O.B
835.a*
836...
837---
838
839;lib(B)<=3 && oplay_attack(*,a,B)
840
841
842Pattern A224
843
844???? block if X can't cut
845OO.?
846XY*.
847....
848----
849
850:8,-,value(80)
851
852????
853OOa?
854XY*.
855....
856----
857
858; oplay_attack(*,a,a)
859
860
861Pattern A225
862
863?OY? descend to prevent hane and eye
864.*.X
865...x
866----
867
868:8,-,value(50)
869
870
871Pattern A226
872
873.OY? descend to prevent hane and eye in sente
874.*.X
875...x
876----
877
878:8,-,value(80)
879
880bCY?
881a*.X
882...x
883----
884
885;xplay_attack(*,a,C) || !xplay_defend_both(*,a,b,a,C)
886
887
888Pattern A227
889
890?XOxx
891?XO*. stop escape
892X.Y..
893-----
894
895:8,C,value(35)
896
897?XOxx
898?XO*a
899X.Y..
900-----
901
902;owl_escape_value(a)>0
903
904
905Pattern A227b
906# gf New pattern. (3.1.9)
907
908?O.x
909X.*. stop escape
910xY..
911----
912
913:8,C,value(65)
914
915?O.x
916X.*a
917xYb.
918----
919
920;owl_escape_value(a)>0 && !oplay_attack(*,a,b,*)
921
922
923Pattern A228
924
925.*O eliminate kikashi
926..Y
927---
928
929:8,-,value(45)
930
931.*a
932..Y
933---
934
935; xplay_attack(*,a)
936
937
938Pattern A229
939
940xx.O? stop escape
941x.*OX
942...Y.
943-----
944
945:8,C,value(80)
946
947ac.O?
948b.*OX
949...Y.
950-----
951
952;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
953
954
955Pattern A229b
956
957xxx? stop escape
958..*O
959...Y
960----
961
962:8,C,value(79)
963
964abx?
965..*O
966...Y
967----
968
969;owl_escape_value(a) + owl_escape_value(b) > 0
970
971
972Pattern A229c
973
974xx? stop escape
975.*O
976..Y
977---
978
979:8,-,value(79)
980
981ab?
982.*O
983..Y
984---
985
986;owl_escape_value(a) + owl_escape_value(b) > 0
987
988
989Pattern A229d
990
991X? stop escape
992*O
993.Y
994--
995
996:8,C,value(79)
997
998a?
999*O
1000.Y
1001--
1002
1003;owl_escape_value(a) > 0
1004
1005
1006Pattern A230
1007
1008?Oo? stop escape along edge
1009..*Y
1010....
1011----
1012
1013:8,-,value(80)
1014
1015?Oo?
1016a.*Y
1017b...
1018----
1019
1020;owl_escape_value(a)+owl_escape_value(b) > 0
1021
1022
1023Pattern A231
1024
1025?..Y jump to undermine
1026O.*.
1027....
1028
1029:8,-,value(50)
1030
1031
1032Pattern A232
1033# db added (3.1.7)
1034
1035?OO? Jump down to block
1036Y..?
1037.*..
1038....
1039----
1040
1041:8,C,value(80)
1042
1043?OO?
1044Yab?
1045.*c.
1046....
1047----
1048
1049; oplay_attack(*,a,b,c,c)
1050
1051
1052Pattern A232b
1053# gf New pattern. (3.5.4)
1054# See trevorc:240.
1055
1056?O. Jump down to block
1057Y..
1058.*.
1059...
1060---
1061
1062:8,-,value(80)
1063
1064?ed
1065Yab
1066.*c
1067...
1068---
1069
1070; xlib(d)<=2 && lib(e)>3 && oplay_attack(*,a,b,c,c)
1071
1072
1073Pattern A233
1074# db added (3.1.10)
1075
1076OO.? Jump and block
1077....
1078Y*.?
1079...?
1080----
1081
1082:8,-,value(75)
1083
1084
1085Pattern A234
1086# tm new pattern (3.1.13)
1087# Descend to attack. Possibly defend vulnerable stone.
1088# Useful in arb:231
1089
1090xX defend vulnerable stone.
1091YO
1092.*
1093..
1094--
1095
1096:8,C,value(20)
1097
1098
1099Pattern A235
1100# db new pattern (3.3.6)
1101# gf Revised pattern. (3.5.7)
1102
1103?XXO? prevent the hane
1104?Y.*.
1105..x..
1106-----
1107
1108:8,-,value(77)
1109
1110
1111Pattern A236
1112# tm new pattern (3.3.12)
1113
1114---
1115x..
1116Y.*
1117X..
1118xO.
1119
1120:8,-,value(66)
1121
1122---
1123x..
1124Y.*
1125X..
1126xO.
1127
1128; !oplay_attack(*,*)
1129
1130
1131Pattern A237
1132# pp New pattern (3.3.18) See nngs4:370
1133
1134??O. eliminate an eye in reverse sente
1135xY*O
1136X..o
1137----
1138
1139:8,-,value(80)
1140
1141??Oc
1142aY*A
1143X.bo
1144----
1145
1146; (x_somewhere(a) || ! safe_omove(a)) && !xplay_defend(*,b,c,A)
1147
1148
1149Pattern A238
1150# evand New pattern (3.3.20) See nngs4:570
1151
1152oO?Y Jump down to enclose
1153o..x
1154.*.X
1155....
1156----
1157
1158:8,-,value(55)
1159
1160
1161Pattern A239
1162#spl added 3.5.1
1163
1164.Yo
1165.*O Penetration
1166...
1167---
1168
1169:8,-,value(85)
1170
1171
1172Pattern A240
1173#spl added 3.5.1
1174
1175?YO?
1176o*XO capture one stone and limiting eye
1177o... maybe gote
1178----
1179
1180:8,C,value(50)
1181
1182
1183Pattern A241
1184# gf New pattern. See gifu03:303. (3.5.3)
1185
1186O.YO connect beneath
1187o.*o
1188....
1189----
1190
1191:8,-,value(37)
1192
1193a.Yb
1194o.*o
1195....
1196----
1197
1198;!oplay_disconnect(*,a,b)
1199
1200
1201Pattern A242
1202# gf New pattern. (3.5.3).
1203# See e.g. nngs:1090.
1204
1205...o?
1206..*O?
1207...Yx
1208-----
1209
1210:8,-,value(35)
1211
1212...o?
1213ba*c?
1214...Yx
1215-----
1216
1217;xplay_disconnect(*,a,a,c) && xplay_disconnect(*,b,b,c)
1218
1219
1220#########################################################
1221# #
1222# Limiting moves on the first line #
1223# #
1224#########################################################
1225
1226
1227Pattern A301
1228
1229YO.X prevent connection
1230X*..
1231----
1232
1233:8,-,value(60)
1234
1235YO.A
1236X*..
1237----
1238
1239;!owl_goal_dragon(A)
1240
1241
1242Pattern A302
1243# gf Revised pattern. (3.1.14)
1244
1245?oOX? descend, but not on edge
1246?OY.x
1247x*.Xo
1248-----
1249
1250:8,-,value(30)
1251
1252
1253Pattern A305
1254# tm New Pattern (3.1.15)
1255
1256xYxx? Monkey Jump to reduce eye space
1257x...O
1258.*..o
1259-----
1260
1261:8,C,value(45)
1262
1263
1264#########################################################
1265# #
1266# Limiting moves in the center #
1267# #
1268#########################################################
1269
1270
1271Pattern A401
1272# tm Modified (3.1.17)
1273
1274O..? block strongly if possible
1275Y*..
1276?..?
1277
1278:8,-,value(80)
1279
1280ba.?
1281Y*..
1282?..?
1283
1284; oplay_defend_both(*,a,*,b) && !oplay_attack(*,a,b)
1285
1286
1287Pattern A401a
1288# tm Modified (3.1.17)
1289# identical to A401, but lower value if bad cut aji
1290# see, for example, strategy4:182
1291
1292O..? block strongly if possible
1293Y*..
1294?..?
1295
1296:8,-,value(60)
1297
1298ba.?
1299Y*..
1300?..?
1301
1302; oplay_defend_both(*,a,*,b)
1303
1304
1305Pattern A402
1306# tm Modified (3.1.14) - doesn't make sense to match at edge.
1307
1308O*.? fall back to confine
1309Y...
1310?..?
1311????
1312
1313:8,-,value(70)
1314
1315a*.?
1316Y...
1317?..?
1318????
1319
1320;lib(a)<=2 || xlib(*)>2
1321
1322
1323Pattern A403
1324# gf Devalued. See also A403b. (3.3.13)
1325
1326..* knight's move to block
1327O..
1328OYX
1329
1330:8,-,value(55)
1331
1332cb*
1333Aad
1334OYX
1335
1336; oplay_defend_both(*,a,b,c,A,b) && oplay_defend_both(*,b,a,d,*,A)
1337
1338
1339Pattern A403b
1340# gf More specific pattern and constraint. (3.3.13)
1341
1342???
1343..* knight's move to block
1344O..
1345OYX
1346
1347:8,-,value(75)
1348
1349??e
1350cb*
1351Aad
1352OYX
1353
1354; owl_escape_value(e)>0
1355; && oplay_defend_both(*,a,b,c,A,b) && oplay_defend_both(*,b,a,d,*,A)
1356
1357
1358Pattern A404
1359
1360xYx attack eyeshape
1361X.X
1362.*.
1363
1364:|,-,value(75)
1365
1366
1367Pattern A406
1368
1369xxx
1370... center block
1371.*O
1372OY?
1373
1374:8,-,value(85)
1375
1376xax
1377b..
1378.*O
1379OY?
1380
1381; (owl_escape_value(a)>0)||(owl_escape_value(b)>0)
1382
1383
1384Pattern A406b
1385# nn Modifed (3.3.13)
1386
1387?xxx?
1388o...o center block
1389..*Oo
1390o.Y??
1391
1392:8,-,value(80)
1393
1394?xax?
1395o...o
1396..*Od
1397o.Ybc
1398
1399;owl_escape_value(a)>0
1400;&& (!x_somewhere(b,c)
1401; || o_somewhere(b,d)
1402; || (o_somewhere(c) && !safe_xmove(d)))
1403
1404
1405Pattern A406c
1406# tm New Pattern (3.1.17)
1407# tm Modified (3.1.22)
1408
1409?xx
1410*.. center keima enclosure
1411..O
1412.YO
1413
1414:8,-,value(81)
1415
1416?ax
1417*c.
1418dbO
1419eYO
1420
1421;owl_escape_value(a)>0
1422; && (xplay_attack(b,c,*,d,d) || !xplay_defend(*,b,d,e,e))
1423
1424
1425Pattern A406d
1426# gf New pattern. (3.7.1)
1427
1428?xxx?
1429o...o center block
1430..*Oo
1431o..Y?
1432??Xx?
1433
1434:8,-,value(80)
1435
1436?xax?
1437o...o
1438..*Oo
1439o..Y?
1440??Xx?
1441
1442;owl_escape_value(a)>0
1443
1444
1445Pattern A407
1446# gf Added constraint. (3.5.3)
1447
1448?O.X
1449?*Y.
1450?...
1451?...
1452
1453:8,-,value(45)
1454
1455aO.X
1456b*Y.
1457c...
1458?...
1459
1460;!(o_somewhere(a) && o_somewhere(b)) || x_somewhere(c)
1461
1462
1463Pattern A407b
1464# gf New pattern. (3.5.3)
1465
1466OO.X
1467O.Y.
1468o*..
1469?...
1470
1471:8,-,value(45)
1472
1473
1474Pattern A408
1475# gf Revised constraint. (3.1.14)
1476
1477?oOo seal the opponent in
1478?...
1479.*.Y
1480....
1481???.
1482???.
1483
1484:8,-,value(70)
1485
1486?oOo
1487?...
1488e*.Y
1489....
1490?ab.
1491?cd.
1492
1493;o_somewhere(a,b,c,d) && owl_escape_value(e) > 0
1494
1495
1496Pattern A409
1497
1498??xxx
1499oO*.. try to contain
1500O.Y.O
1501?X.Oo
1502
1503:8,C,value(80)
1504
1505??abc
1506oO*..
1507O.Y.O
1508?X.Oo
1509
1510;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
1511
1512
1513Pattern A410
1514
1515xxx try to block
1516.*.
1517OYO
1518?X?
1519
1520:|,B,value(90)
1521
1522xax
1523.*.
1524OYO
1525?X?
1526
1527;owl_escape_value(a)>0
1528
1529
1530Pattern A411
1531# gf Revised pattern. Necessary to constrain it harder. (3.1.14)
1532# gf Revised and devalued pattern. (3.1.15)
1533# nn Modified constraint (3.3.11)
1534
1535??...??? try to stop escape into center
1536??...oo?
1537??.*.oo?
1538??o.Y???
1539??oo????
1540
1541:8,-,value(79)
1542
1543??.a.???
1544??...def
1545??.*.ghi
1546??j.Y???
1547??bc????
1548
1549;owl_escape_value(a)>0
1550;&& ((o_somewhere(b,c,j) && o_somewhere(d,e,f,g,h,i))
1551; || (o_somewhere(j) && owl_escape_value(d)==0 && owl_escape_value(e)==0))
1552
1553
1554Pattern A411a
1555# nn New pattern (3.3.11)
1556# FIXME: there must be a way to prevent duplicate matches with A411
1557
1558???..?? try to stop escape into center
1559??...oo
1560??.*.oo
1561??o.Y??
1562??oo???
1563??oo???
1564
1565:8,-,value(79)
1566
1567???a.??
1568??...de
1569??.*.bc
1570??f.Y??
1571??gh???
1572??ij???
1573
1574;owl_escape_value(a)>0 && o_somewhere(f,g,h,i,j) && o_somewhere(b,c,d,e)
1575
1576
1577Pattern A413a
1578# nn New pattern (3.3.11)
1579
1580o..... prevent escape
1581o.....
1582o..*..
1583O.Y...
1584
1585:8,-,value(50)
1586
1587idf...
1588jcbe..
1589k.a*..
1590O.Y...
1591
1592;(o_somewhere(j) || (o_somewhere(i) && o_somewhere(k)))
1593;&& !oplay_attack(*,a,b,c,d,e,f,*) && !oplay_attack(*,a,b,e,f,*)
1594
1595
1596Pattern A414
1597# gf Revised constraint. (3.1.14)
1598
1599??xxx?? cap to prevent escape
1600??...??
1601oo.*.oo
1602oo...oo
1603??.Y.??
1604
1605:8,-,value(82)
1606
1607??xxx??
1608??e..??
1609ab.*.fg
1610cd...hi
1611??.Y.jk
1612
1613; o_somewhere(a,b,c,d) && owl_escape_value(e)>0 && o_somewhere(f,g,h,i,j,k)
1614
1615
1616Pattern A414a
1617# nn New pattern (3.3.11)
1618
1619......o
1620......o
1621..*...o
1622oo.Y.oo
1623
1624:8,-,value(65)
1625
1626a.....b
1627......c
1628..*...d
1629ef.Y.oo
1630
1631;owl_escape_value(a)>0
1632;&& owl_escape_value(b)==0
1633;&& owl_escape_value(c)==0
1634;&& owl_escape_value(d)==0
1635;&& o_somewhere(e,f)
1636
1637
1638Pattern A415
1639
1640o.. cut off escape
1641.*Y
1642X.O
1643
1644:8,C,value(80)
1645
1646o..
1647.*Y
1648Abc
1649
1650;owl_escape_value(A)>0 && oplay_defend_both(*,b,*,c)
1651
1652
1653Pattern A416
1654
1655?.O?? hane
1656.*Y.X
1657?...x
1658
1659:8,-,value(65)
1660
1661
1662Pattern A417
1663
1664?Y.O prevent center escape
1665O.*.
1666o...
1667xxxx
1668
1669:8,-,value(75)
1670
1671?Y.O
1672O.*.
1673o...
1674xabc
1675
1676;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
1677
1678
1679Pattern A418
1680# db added (3.1.8)
1681
1682...O prevent escape
1683.*OX
1684O.Yx
1685
1686:8,-,value(80)
1687
1688...O
1689.*OA
1690O.Yx
1691
1692; lib(A)>1
1693
1694
1695Pattern A419
1696# gf New pattern. (3.1.10)
1697# gf Uncommented pattern (3.1.13)
1698# tm modified (3.1.22) (see 13x13:52 --decide-dragon K10)
1699
1700Y.O
1701.*X cut to stop escape
1702
1703:8,C,value(68)
1704
1705Ycd
1706.*A
1707
1708;(owl_escape_value(A)>0)
1709; && oplay_defend_both(*,c,*,d)
1710
1711
1712Pattern A419b
1713# Same as A419, different anchor.
1714
1715X.O
1716.*Y cut to stop escape
1717
1718:8,C,value(68)
1719
1720Acd
1721.*Y
1722
1723;(owl_escape_value(A)>0)
1724; && oplay_defend_both(*,c,*,d)
1725
1726
1727Pattern A420
1728# gf New pattern. (3.1.12)
1729
1730?X.o stop escape into center
1731OY.O
1732.O*.
1733xxxx
1734
1735:8,-,value(75)
1736
1737?X.o
1738cYaO
1739bd*.
1740xexx
1741
1742;owl_escape_value(e)>0 && !xplay_defend_both(*,a,b,c,d)
1743
1744
1745Pattern A421
1746# gf New pattern. (3.1.13)
1747
1748xx?
1749..O center block
1750.*.
1751OY?
1752
1753:8,-,value(80)
1754
1755ax?
1756b.O
1757.*.
1758OY?
1759
1760;owl_escape_value(a)>0 || owl_escape_value(b)>0
1761
1762
1763Pattern A422
1764# ab New pattern. (3.3.10)
1765
1766?Oo? prevent connection to another dragon
1767Y*.X
1768?xo?
1769
1770:8,-,value(85)
1771
1772?Oo?
1773a*.b
1774?xo?
1775
1776;(!owl_goal_dragon(b))
1777;&& !xplay_disconnect(*,a,b)
1778
1779
1780Pattern A422a
1781# same as A422; different anchor.
1782
1783?Oo? prevent connection to another dragon
1784X*.Y
1785?xo?
1786
1787:8,-,value(85)
1788
1789?Oo?
1790a*.b
1791?xo?
1792
1793;(!owl_goal_dragon(a))
1794;&& !xplay_disconnect(*,a,b)
1795
1796
1797Pattern A423
1798# db New pattern (3.3.9)
1799# complementary to D1358
1800
1801X..? try to cut
1802Y.*X
1803??O?
1804
1805:8,C,value(61)
1806
1807X..?
1808Y.*a
1809??O?
1810
1811;(owl_escape_value(a) > 0)
1812
1813
1814Pattern A423a
1815# Same as A423; different anchor.
1816
1817X..? try to cut
1818X.*Y
1819??O?
1820
1821:8,-,value(61)
1822
1823a..?
1824a.*Y
1825??O?
1826
1827;(owl_escape_value(a) > 0)
1828
1829
1830Pattern A424
1831# pp New pattern (3.3.18)
1832
1833XYO? block and prevent opponent from playing double threat move
1834.O.o
1835XX*.
1836
1837:8,-,value(80)
1838
1839XYO?
1840.O.o
1841XX*a
1842
1843;owl_escape_value(a) > 0
1844
1845
1846Pattern A425
1847#spl added 3.5.1, counter part of D1348d
1848
1849O.Y block connection
1850.*.
1851X.O
1852
1853:/,n,value(90)
1854
1855
1856#########################################################
1857# #
1858# Eye reducing moves on the second line #
1859# #
1860#########################################################
1861
1862
1863Pattern A501
1864
1865x.Y? jump under
1866.*.O
1867....
1868----
1869
1870:8,C,value(75)
1871
1872
1873Pattern A502
1874
1875?Xo extend to kill eye
1876O*Y
1877X.X
1878---
1879
1880:8,Cn,value(45)
1881
1882?Xo
1883a*Y
1884X.X
1885---
1886
1887; attack(a)
1888
1889
1890Pattern A503
1891
1892?XX push in to eliminate eye
1893Y*O
1894X.X
1895---
1896
1897:8,Cs,value(45)
1898
1899
1900Pattern A503b
1901# gf New pattern. (3.5.3)
1902
1903?XXX atari to eliminate eye or make ko
1904Y.O.
1905X.X*
1906----
1907
1908:8,s,value(32)
1909
1910?XXX
1911Y.O.
1912X.X*
1913----
1914
1915;olib(*)>1
1916
1917
1918Pattern A504
1919
1920Y* cut off one stone
1921OX
1922--
1923
1924:8,C,value(35)
1925
1926
1927Pattern A505
1928
1929?OYX there is death in the hane
1930..*.
1931....
1932----
1933
1934:8,-,value(45)
1935
1936
1937Pattern A506
1938
1939?YX undermine eyespace
1940O*.
1941...
1942---
1943
1944:8,-,value(35)
1945
1946
1947Pattern A507
1948
1949?O? destroy eye space and threaten to cut
1950Y*X
1951...
1952---
1953
1954:8,C,value(80)
1955
1956
1957Pattern A508
1958
1959o.Xx? undermine potential eye space
1960O.*.Y
1961....x
1962-----
1963
1964:8,C,value(65)
1965
1966
1967Pattern A509
1968
1969X.O destroy eye space by damezumari
1970Y*X
1971x.x
1972---
1973
1974:8,-,value(80)
1975
1976AbO
1977A*X
1978x.x
1979---
1980
1981;lib(A)<=3 && xlib(b) <= 2 && oplay_attack(*,b,b)
1982
1983
1984Pattern A510
1985
1986.XY.X destroy eyespace in reverse sente
1987OXO*.
1988.O...
1989-----
1990
1991:8,C,value(55)
1992
1993
1994Pattern A511
1995# gf New pattern. (3.1.11)
1996
1997?Y.x undermine eyespace
1998O*.x
1999...x
2000----
2001
2002:8,-,value(35)
2003
2004?Y.x
2005O*ax
2006...x
2007----
2008
2009;owl_eyespace(a)
2010
2011
2012Pattern A512
2013# gf New pattern. (3.1.11)
2014
2015.O?? attack eye shape and stop expansion
2016.*Yx
2017..oX
2018----
2019
2020:8,-,value(70)
2021
2022
2023Pattern A513
2024# tm New pattern. (3.1.15) (see trevora:620)
2025# This may be just too generic, though often useful.
2026# tm Modified (3.1.16)
2027# Added ??? rows, make sure not at upper edge.
2028# ab This is indeed too generic.
2029# gf Added constraint to make it slightly less generic. (3.5.3)
2030# See trevora:620,630 and gifu03:303 for relevant testcases.
2031
2032???|
2033???|
2034Y..|
2035O*.|
2036
2037:8,-,value(45)
2038
2039???|
2040?b?|
2041Ya.|
2042O*.|
2043
2044;x_somewhere(b) || oplay_attack(a,b,a)
2045
2046
2047Pattern A514
2048# tm New Pattern (3.1.15)
2049# see also Pattern A615
2050
2051XOo| special edge position
2052.YX|
2053x*O|
2054...|
2055
2056:8,s,value(45)
2057
2058XOb|
2059CYW|
2060A*O|
2061...|
2062
2063; oplay_attack(*,W) && !oplay_attack(*,A,b,C,b)
2064
2065
2066Pattern A515
2067# gf New pattern. See owl1:286. (3.3.17)
2068
2069XXY*O sacrifice lunch and falsify eye
2070XOO..
2071-----
2072
2073:8,-,value(35)
2074
2075XXY*O
2076XOba.
2077-----
2078
2079;!oplay_attack(*,a,b,*)
2080
2081
2082Pattern A516
2083# evand New pattern (3.3.20)
2084
2085oOXY. Begin to falsify eye in reverse sente
2086..O*X
2087.....
2088-----
2089
2090:8,-,value(70)
2091
2092oOXYa
2093..O*X
2094....b
2095-----
2096
2097;!obvious_false_xeye(a) || !obvious_false_oeye(b)
2098
2099
2100Pattern A517
2101#spl added (3.3.23) see nando:11
2102
2103?OYXxx Prevent opponent from making an eye on the first line
2104.*O.X.
2105.....X
2106------
2107
2108:8,-,value(5)
2109
2110
2111Pattern A518
2112# gf New pattern. (3.5.3)
2113# See nngs2:460
2114
2115O.xx? destroye eye
2116.*.YX
2117....X
2118-----
2119
2120:8,-,value(45)
2121
2122
2123#########################################################
2124# #
2125# Eye reducing moves on the first line #
2126# #
2127#########################################################
2128
2129
2130Pattern A601
2131
2132---- jump along edge
2133O.*.
2134Y..?
2135?Xxx
2136
2137:8,-,value(75)
2138
2139
2140Pattern A602
2141
2142--+ hane in corner
2143..|
2144Y*|
2145Oo|
2146
2147:8,-,value(70)
2148
2149--+
2150..|
2151Y*|
2152ao|
2153
2154;!attack(a)
2155
2156
2157Pattern A603
2158
2159xXY.O reduce eye space
2160x.*..
2161-----
2162
2163:8,s,value(35)
2164
2165xXY.a
2166cb*..
2167-----
2168
2169;!attack(a) && owl_proper_eye(b)
2170;&& (x_somewhere(c) || owl_proper_eye(c))
2171
2172
2173Pattern A603b
2174# tm - modified (3.1.15) (see trevora:170)
2175
2176xY.x reduce eye space
2177.*.O
2178----
2179
2180:8,s,value(35)
2181
2182xY.x
2183b*.a
2184----
2185
2186;owl_eyespace(b) && !attack(a)
2187
2188
2189Pattern A604
2190
2191XY..O reduce eye space
2192.*...
2193-----
2194
2195:8,s,value(35)
2196
2197
2198Pattern A605
2199
2200|.Y.O reduce eye space
2201|.*..
2202+----
2203
2204:8,s,value(35)
2205
2206
2207Pattern A606
2208
2209XxY.O try to destroy eye
2210xO*..
2211-----
2212
2213:8,s,value(50)
2214
2215XxYaO
2216xc*b.
2217-----
2218
2219;lib(c) > 1 && !oplay_attack(*,a,b,*)
2220
2221
2222Pattern A607a
2223# gf Split pattern. (3.5.3)
2224# gf Revised constraint. (3.5.4)
2225# gf Comment: A607a and A607b could now be merged again but I think
2226# it may be handy for later revisions to keep them apart.
2227
2228XYO there is death in the hane
2229.*.
2230---
2231
2232:8,s,value(36)
2233
2234XYa
2235b*.
2236---
2237
2238;owl_maxeye(b) > 0 && !oplay_attack(*,a) && !obvious_false_xeye(b)
2239
2240
2241Pattern A607b
2242# gf Split pattern and revised constraint. (3.5.3)
2243# gf Reordered constraint for better performance. (3.5.4)
2244
2245.YO there is death in the hane
2246.*.
2247---
2248
2249:8,s,value(36)
2250
2251.Ya
2252b*.
2253---
2254
2255;owl_maxeye(b)>0 && !oplay_attack(*,a) && !obvious_false_xeye(b)
2256
2257
2258Pattern A607c
2259# gf New pattern. (3.1.12)
2260# gf Reordered constraint for better performance. (3.5.4)
2261
2262xYO the push is also deadly
2263.*O
2264---
2265
2266:8,-,value(55)
2267
2268xYa
2269b*a
2270---
2271
2272;owl_eyespace(b) && !oplay_attack(*,b,a)
2273
2274
2275Pattern A607d
2276# gf New pattern. (3.5.4)
2277# gf Comment: A607a and A607b could now be merged again but I think
2278# it may be handy for later revisions to keep them apart.
2279
2280?XYO there is death in the hane
2281o.*.
2282----
2283
2284:8,s,value(36)
2285
2286dXYa
2287cb*.
2288----
2289
2290;owl_maxeye(b)==0
2291;&& ((o_somewhere(c) && owl_lunch(c))
2292; || (o_somewhere(d) && owl_lunch(d)))
2293;&& !oplay_attack(*,a) && !obvious_false_xeye(b)
2294
2295
2296Pattern A608
2297
2298xYO hane with atari on more than one stone
2299.*.
2300---
2301
2302:8,s,value(75)
2303
2304xCa
2305b*.
2306---
2307
2308;lib(C)==2 && wormsize(C)>1 && !oplay_attack(*,a) && !obvious_false_xeye(b)
2309
2310
2311Pattern A609
2312
2313XOY destroy eye
2314.*.
2315---
2316
2317:8,s,value(35)
2318
2319
2320Pattern A610
2321
2322X.YO try to damage eyespace in sente
2323.*.?
2324----
2325
2326:8,s,value(55)
2327
2328X.Ya
2329.*.?
2330----
2331
2332;!attack(a)
2333
2334
2335Pattern A611
2336
2337?Ox? placement where X cannot cut
2338XY.X
2339O.*.
2340----
2341
2342:8,-,value(80)
2343
2344?Ox?
2345AA.X
2346O.*.
2347----
2348
2349;lib(A)==2
2350
2351
2352Pattern A612
2353
2354oOY? threaten snapback to destroy eye
2355OX.X
2356*X.O
2357----
2358
2359:8,-,value(60)
2360
2361oOY?
2362OX.X
2363*X.a
2364----
2365
2366;lib(a) > 1
2367
2368
2369Pattern A613
2370
2371X.X? extra forceful hane
2372..YO
2373..*.
2374----
2375
2376:8,-,value(65)
2377
2378X.D?
2379.bDO
2380.a*c
2381----
2382
2383;oplay_attack(*,a,b,c,D)
2384
2385
2386Pattern A614
2387# gf New pattern. (3.1.15)
2388
2389XYO? destroy eyespace when we can't capture
2390..XO
2391X.*.
2392----
2393
2394:8,-,value(65)
2395
2396XYO?
2397.aXO
2398X.*.
2399----
2400
2401;!oplay_attack(a,*,*)
2402
2403
2404Pattern A615
2405# tm New Pattern (3.1.15)
2406
2407OXYXO attack shortage of liberties
2408?...?
2409?.*.?
2410-----
2411
2412:|,s,value(65)
2413
2414OXAXO
2415?...?
2416?.*.?
2417-----
2418
2419;lib(A) == 3
2420
2421
2422# nn Removal candidate (3.3.13)
2423# Success rate in regressions : 0.75 % (2/268)
2424
2425Pattern A616
2426# tm New Pattern (3.1.15)
2427# tm Modified (3.1.17)
2428
2429?XOo| special edge collapse
2430?.Y.|
2431?x.*|
2432?x..|
2433
2434:8,s,value(45)
2435
2436?XCa|
2437?.Y.|
2438?b.*|
2439?x..|
2440
2441; !attack(C)
2442; && (!x_somewhere(b) || (x_somewhere(b) && o_somewhere(a)))
2443
2444
2445Pattern A617
2446# tm New Pattern (3.1.15)
2447
2448OY? threaten snapback.
2449X.X
2450X.O
2451X*.
2452---
2453
2454:8,s,value(50)
2455
2456OY?
2457A.X
2458X.O
2459X*.
2460---
2461
2462; lib(A) == 3
2463
2464
2465Pattern A618
2466# tm New Pattern (3.1.17)
2467
2468XYO falsify eye
2469XOX
2470X.*
2471---
2472
2473:8,-,value(75)
2474
2475XYb
2476XOX
2477XA*
2478---
2479
2480; oplay_defend_both(*,A,b,*)
2481
2482
2483Pattern A619
2484#tm New Pattern (3.1.17)
2485
2486|.Y
2487|.*
2488+--
2489
2490:8,-,value(75)
2491
2492
2493Pattern A620
2494#evand New Pattern. (3.3.18)
2495
2496.YO push in to destroy eyespace
2497*Ox
2498---
2499
2500:8,s,value(65)
2501
2502aYO
2503*Ox
2504---
2505
2506;!obvious_false_xeye(a)
2507
2508
2509Pattern A621
2510# spl added 3.3.22
2511# gf Revised constraint. (3.5.3)
2512
2513?YOo? threaten to make ko or nakade
2514X..*.
2515-----
2516
2517:8,s,value(10)
2518
2519?AOo?
2520X..*.
2521-----
2522
2523;lib(A)<3 && owl_eyespace(*)
2524
2525
2526Pattern A622
2527# gf New pattern. (3.5.3)
2528# Compare D704b. See nngs3:450.
2529
2530xY.O half eye sometimes missed
2531X.*o
2532----
2533
2534:8,-,value(35)
2535
2536bYaO
2537X.*o
2538----
2539
2540; xplay_attack(*,a,a)
2541; && (x_somewhere(b) || !safe_omove(b))
2542
2543
2544Pattern A623
2545# gf New pattern. (3.5.5)
2546
2547|.xY.O
2548|....O monkey jump into the corner
2549|.*...
2550+-----
2551
2552:8,-,value(65)
2553
2554
2555Pattern A626
2556# gf New pattern. (3.7.3)
2557
2558??XXO?
2559XX..XO steal an eye
2560.*.X.O
2561------
2562
2563:8,s,value(75)
2564
2565??XXO?
2566XX..XO
2567a*.X.O
2568------
2569
2570;owl_proper_eye(a)
2571
2572
2573#########################################################
2574# #
2575# Eye reducing moves in the center #
2576# #
2577#########################################################
2578
2579
2580Pattern A701
2581
2582?XOo make atari
2583X.YO
2584x.*.
2585
2586:8,-,value(79)
2587
2588?AOo
2589X.YO
2590x.*.
2591
2592;lib(A)>1
2593
2594
2595Pattern A702
2596
2597?XOo make atari
2598X.YO
2599..*O
2600??x?
2601
2602:8,-,value(80)
2603
2604?AOo
2605X.YO
2606..*O
2607??x?
2608
2609;lib(A)>1
2610
2611
2612Pattern A703
2613
2614?XX? push in to limit eyeshape
2615O*.Y
2616?..x
2617
2618:8,-,value(80)
2619
2620
2621Pattern A704
2622
2623?OY? capture one stone
2624OXOX
2625.*.?
2626
2627:8,C,value(80)
2628
2629
2630Pattern A705b
2631
2632?.? attack eye shape
2633X*Y
2634?.?
2635
2636:8,C,value(61)
2637
2638?b?
2639X*Y
2640?a?
2641
2642;owl_eyespace(a) && xlib(b) <= 2 && oplay_attack(*,b,b)
2643
2644
2645Pattern A706
2646
2647?*?
2648X.X
2649?Y.
2650
2651:8,C,value(70)
2652
2653?*?
2654XaA
2655?Yb
2656
2657; (owl_topological_eye(a,A)<=2) && (owl_topological_eye(b,A)==2)
2658
2659
2660Pattern A707
2661
2662?O?
2663X*X
2664.Y.
2665
2666:8,C,value(70)
2667
2668?O?
2669X*A
2670aYb
2671
2672; (owl_topological_eye(a,A)==2)
2673; && ((owl_topological_eye(b,A)==2) || (owl_topological_eye(b,A)==3))
2674
2675
2676Pattern A708
2677
2678?Y* attack eye with sente
2679x.X
2680?x?
2681
2682:8,n,value(80)
2683
2684?Y*
2685xaB
2686?x?
2687
2688;owl_topological_eye(a,B)==3 && does_attack(*,B)
2689
2690
2691Pattern A709
2692
2693xX. half eye sometimes missed
2694Y.*
2695?x?
2696
2697:8,C,value(45)
2698
2699xXb
2700Aa*
2701?x?
2702
2703; owl_topological_eye(a,A)==3
2704; && safe_omove(b) && safe_omove(*) && xplay_attack(*,b,b)
2705
2706
2707Pattern A710
2708
2709?Y* kill a half eye with an atari
2710x.X
2711?x?
2712
2713:8,-,value(35)
2714
2715?A*
2716xba
2717?x?
2718
2719; lib(a)==2 && owl_topological_eye(b,A)==3
2720
2721
2722Pattern A711
2723
2724O*.X destroy eye
2725X..X
2726xXY?
2727
2728:8,C,value(35)
2729
2730
2731Pattern A712
2732
2733?XX? eye stealing tesuji
2734...Y
2735.*.X
2736oo.?
2737
2738:8,C,value(60)
2739
2740
2741Pattern A713
2742
2743OO? destroy potential eye
2744X.Y
2745X.X
2746x*x
2747
2748:8,-,value(45)
2749
2750bb?
2751XaY
2752X.X
2753x*x
2754
2755;!attack(b) && xplay_attack(a,b)
2756
2757
2758Pattern A714
2759
2760?XY? capture to spoil eyespace
2761O..X
2762X*.x
2763OX.x
2764
2765:8,C,value(82)
2766
2767?XY?
2768O..X
2769A*.x
2770OX.x
2771
2772;lib(A)==1
2773
2774
2775Pattern A715
2776# gf New pattern. (3.1.11)
2777# evand Modified. (3.3.18)
2778
2779?*YX attack eye shape and possibly threaten to cut
2780x..x
2781?xXO
2782
2783:8,-,value(60)
2784
2785?*YX
2786x..x
2787?xXa
2788
2789;!owl_proper_eye(*) && !attack(a)
2790
2791
2792Pattern A716
2793# gf New pattern. (3.1.12)
2794
2795O*x destroy eye in reverse sente
2796X.X
2797xYx
2798
2799:8,C,value(50)
2800
2801a*x
2802X.X
2803xYx
2804
2805;xplay_attack(*,a)
2806
2807
2808Pattern A717
2809# tm New Pattern (3.1.17)
2810
2811?.??
2812XO*Y
2813?X.X
2814
2815:8,Cs,value(75)
2816
2817?.??
2818XO*Y
2819?XAb
2820
2821; owl_big_eyespace(A)
2822; && oplay_attack(*,b)
2823
2824
2825Pattern A718
2826# tm New Pattern (3.1.22) (see trevorc:1360)
2827# see related general defense pattern D309a
2828
2829xYx? reduce eye space
2830x.*O
2831xXx?
2832
2833:8,C,value(50)
2834
2835xYx?
2836x.*A
2837xXx?
2838
2839; 1 || oplay_attack(*,A)
2840
2841
2842Pattern A719
2843# gf New pattern. (3.3.20)
2844# gf Revised constraint. (3.5.2)
2845
2846?XYO reduce eye space
2847X.*X
2848?XX.
2849
2850:8,s,value(50)
2851
2852?XYc
2853Xa*X
2854?XXb
2855
2856;owl_mineye(*)==1 && xlib(b)==2 && !oplay_attack(*,c) && !oplay_attack(*,a,b,b)
2857
2858
2859Pattern A719b
2860# gf New pattern. (3.3.20)
2861
2862|XYO reduce eye space
2863|.*X
2864|XX.
2865
2866:8,s,value(50)
2867
2868|XYc
2869|a*X
2870|XXb
2871
2872;xlib(b)==2 && !oplay_attack(*,c) && !oplay_attack(*,a,b,b)
2873
2874
2875Pattern A720
2876# evand New pattern (3.3.20)
2877
2878?.??
2879Y..x Bamboo connection to reduce eyespace
2880X*Ox
2881?...
2882?OO?
2883
2884:8,C,value(40)
2885
2886?c??
2887Ya.x
2888X*Ox
2889?...
2890?OO?
2891
2892;(owl_eyespace(a) || owl_eyespace(c))
2893;&& oplay_attack(a,a) && xplay_attack(*,a)
2894
2895
2896Pattern A721
2897
2898?XX.
2899Y.*.
2900?XX.
2901
2902:8,s,value(45)
2903
2904?XXe
2905Yd*c
2906?AAb
2907
2908;lib(A) == 3 && !obvious_false_xeye(d)
2909;&& oplay_defend(*,b,c,*) && oplay_defend(*,e,c,*)
2910;&& oplay_defend_both(*,c,b,d,e,b,e)
2911
2912
2913#########################################################
2914# #
2915# Invade the eye space #
2916# #
2917#########################################################
2918# #
2919# These are patterns where a live stone #
2920# is played where the opponent might get #
2921# an eye. They do not include sacrifice #
2922# patterns. #
2923# #
2924#########################################################
2925
2926
2927Pattern A801
2928
2929?xYx attack chimera
2930xX.X
2931X.*O
2932----
2933
2934:8,n,value(80)
2935
2936
2937Pattern A802
2938
2939xYx destroy eye
2940X.X
2941.*O
2942---
2943
2944:8,n,value(50)
2945
2946
2947Pattern A803
2948# tm modified(3.1.16)
2949
2950xxX? connect under
2951oOYO
2952..*.
2953----
2954
2955:8,-,value(80)
2956
2957xxX?
2958oAYO
2959..*.
2960----
2961
2962; attack(A) && !oplay_attack(*,A)
2963
2964
2965Pattern A804
2966
2967.YO? connect out on first line
2968O*oo
2969----
2970
2971:8,-,value(45)
2972
2973.YO?
2974A*oo
2975----
2976
2977; does_attack(*,A)
2978
2979
2980Pattern A805
2981
2982XxxX? connect under
2983.oOYO
2984...*.
2985-----
2986
2987:8,-,value(60)
2988
2989
2990Pattern A806
2991
2992O..Y clamp
2993OX*.
2994....
2995----
2996
2997:8,C,value(75)
2998
2999
3000Pattern A807
3001
3002?X. connect under
3003OY*
3004.O.
3005---
3006
3007:8,-,value(65)
3008
3009
3010Pattern A808
3011
3012|.OYO avoid leaving ko by connecting on the outside
3013|*XO.
3014+----
3015
3016:8,-,value(60)
3017
3018
3019Pattern A809
3020
3021XX.O? connect out
3022O.YO?
3023O.*..
3024-----
3025
3026:8,-,value(80)
3027
3028XX.O?
3029A.YO?
3030A.*..
3031-----
3032
3033; lib(A)>2
3034
3035
3036Pattern A810
3037# This looks a little weird. /ab
3038
3039?O?
3040X.Y safe invasion into eye
3041?*?
3042
3043:8,-,value(45)
3044
3045?O?
3046X.Y
3047?*?
3048
3049;owl_eyespace(*)
3050
3051
3052Pattern A811
3053#tm New Pattern (3.1.17)
3054
3055.X?
3056X.Y
3057.*X
3058
3059:8,s,value(65)
3060
3061aX?
3062XbC
3063.*X
3064
3065; lib(C) <= 3
3066; && owl_proper_eye(a)
3067; && owl_proper_eye(b)
3068
3069
3070Pattern A812
3071
3072.Y? clamp to invade eyespace
3073..O
3074*XO
3075..o
3076---
3077
3078:8,C,value(40)
3079
3080.Y?
3081..O
3082*XO
3083..o
3084---
3085
3086;owl_eyespace(*)
3087
3088
3089Pattern A813
3090#spl added 3.5.1 see century2002:80
3091# gf Revised constraint. (3.5.1)
3092
3093X*.
3094OYO sacrifice to eliminate eye
3095.X.
3096---
3097
3098:8,Cs,value(85)
3099
3100X*.
3101aYb
3102cXd
3103---
3104
3105;(!attack(a) && olib(d)>=3)
3106;|| (!attack(b) && olib(c)>=3)
3107
3108
3109Pattern A814
3110# gf New pattern. (3.7.2)
3111# See ld_owl:321.
3112
3113X.. try to squeeze eyespace
3114OY*
3115?X.
3116---
3117
3118:8,s,value(35)
3119
3120X..
3121OB*
3122?Ba
3123---
3124
3125;lib(B) == 3 && owl_big_eyespace(*) && olib(*)>2 && olib(a)>1
3126
3127
3128#########################################################
3129# #
3130# Nakade patterns #
3131# #
3132#########################################################
3133# #
3134# These are patterns where a sacrifice stone #
3135# is played in the opponent's eye space to #
3136# prevent two eyes. Use the s (sacrifice) #
3137# classification #
3138# #
3139#########################################################
3140
3141
3142Pattern A901
3143
3144|X???
3145|OXYX connect corner ko to make nakade
3146|*O.X
3147+----
3148
3149:8,s,value(70)
3150
3151
3152Pattern A902
3153
3154XOY nakade trick
3155O*O
3156---
3157
3158:8,s,value(70)
3159
3160XbY
3161a*c
3162---
3163
3164;lib(a)==1 && lib(b)==1 && lib(c)<=2
3165
3166
3167Pattern A902b
3168
3169XOY nakade trick
3170O*O
3171---
3172
3173:8,s,value(30)
3174
3175XbY
3176a*c
3177---
3178
3179;lib(a)<=2 && lib(b)==1 && lib(c)<=2
3180
3181
3182Pattern A903
3183
3184|xYX?
3185|.O.X try to make nakade
3186|..*.
3187+----
3188
3189:8,s,value(35)
3190
3191
3192Pattern A904
3193
3194|OX? try to form nakade
3195|XOY
3196|*.x
3197+---
3198
3199:8,s,value(55)
3200
3201|aB?
3202|XOY
3203|*.x
3204+---
3205
3206;lib(a) == 1 && lib(B) > 1
3207
3208
3209Pattern A905
3210# gf Increased value slightly. (3.1.14)
3211
3212|O.X try to form nakade
3213|XOY
3214|*..
3215+---
3216
3217:8,s,value(36)
3218
3219
3220Pattern A906a
3221# gf New pattern. (3.5.3)
3222# See seki:303.
3223
3224|X???
3225|.YX?
3226|XO.X try to make ko
3227|*.O.
3228+----
3229
3230:8,s,value(32)
3231
3232|Xa??
3233|.YX?
3234|XO.X
3235|*.O.
3236+----
3237
3238;!o_somewhere(a) || !defend(a)
3239
3240
3241Pattern A906b
3242# gf New pattern. (3.5.3)
3243# See seki:303.
3244
3245|X???
3246|.YX?
3247|.OXX try to make ko
3248|*.O.
3249+----
3250
3251:8,s,value(32)
3252
3253|Xa??
3254|.YX?
3255|.OXX
3256|*.O.
3257+----
3258
3259;!o_somewhere(a) || !defend(a)
3260
3261
3262Pattern A907
3263
3264|.X??
3265|OYX? critical point, might kill
3266|*.Xx
3267|....
3268+----
3269
3270:8,s,value(65)
3271
3272|.X??
3273|aYX?
3274|*.Xx
3275|....
3276+----
3277
3278;!defend(a)
3279
3280
3281Pattern A908
3282
3283|X??? nakade if ko can be won
3284|OYX?
3285|.OX?
3286|O*.X
3287+----
3288
3289:8,s,value(35)
3290
3291|X???
3292|OYX?
3293|.OX?
3294|O*aX
3295+----
3296
3297;xlib(a) == 2
3298
3299
3300Pattern A909
3301
3302|.X? capture to form nakade
3303|OYX
3304|XOX
3305|*O.
3306+---
3307
3308:8,s,value(35)
3309
3310
3311Pattern A910
3312# gf Revised constraint. (3.5.3)
3313
3314XYX| try nakade in corner
3315.*.|
3316---+
3317
3318:8,s,value(25)
3319
3320XYX|
3321a*.|
3322---+
3323
3324;!obvious_false_xeye(a) && owl_maxeye(*)>1
3325
3326
3327Pattern A911
3328
3329Y.Xo| try nakade
3330X.*.|
3331----+
3332
3333:8,s,value(25)
3334
3335A.Xo|
3336A.*.|
3337----+
3338
3339;lib(A)==2
3340
3341
3342Pattern A912
3343
3344OYOo destroy eyespace
3345X.XO
3346.*..
3347----
3348
3349:8,s,value(35)
3350
3351
3352Pattern A913
3353
3354XY.X try sente eyeshape reduction
3355X.*.
3356----
3357
3358:8,s,value(80)
3359
3360AAbX
3361A.*.
3362----
3363
3364;lib(A)==2 && !safe_omove(b)
3365
3366
3367Pattern A914
3368
3369XY.X try nakade
3370X.*.
3371----
3372
3373:8,s,value(25)
3374
3375XYaX
3376X.*.
3377----
3378
3379;!safe_omove(a)
3380
3381
3382Pattern A915
3383
3384X.Yoo destroy eyespace
3385.*.Xo
3386.....
3387-----
3388
3389:8,s,value(85)
3390
3391X.Yao
3392.*.Xb
3393.....
3394-----
3395
3396;o_somewhere(a,b)
3397
3398
3399Pattern A916
3400
3401??Yx play inside to kill one eye
3402XX.X
3403..*.
3404----
3405
3406:8,s,value(65)
3407
3408
3409Pattern A917
3410
3411?X?? always worth considering
3412X.Y?
3413?*.X
3414??X?
3415
3416:/,s,value(45)
3417
3418
3419Pattern A918
3420# gf New pattern. (3.1.14)
3421
3422?X?? always worth considering
3423X.Y?
3424?*.X
3425????
3426
3427:8,s,value(40)
3428
3429
3430Pattern A919
3431# evand New pattern. (3.3.20)
3432
3433o?XX??
3434OX..Y?
3435..*..x
3436------
3437
3438:8,s,value(35)
3439
3440
3441Pattern A920
3442# evand New pattern. (3.3.20)
3443
3444?XX??
3445X..Y?
3446xO*.x
3447-----
3448
3449:8,s,value(35)
3450
3451
3452Pattern A921
3453# gf New pattern. (3.7.1)
3454# See ld_owl:320.
3455
3456?XX??
3457X.*Y?
3458xO..x
3459-----
3460
3461:8,s,value(30)
3462
3463?XX??
3464X.*A?
3465xO..x
3466-----
3467
3468;oplay_defend(*,A)!=WIN
3469
3470
3471#########################################################
3472# #
3473# Cuts #
3474# #
3475#########################################################
3476
3477
3478Pattern A1001
3479
3480YO cut if safe
3481*X
3482
3483:8,Cn,value(80)
3484
3485Ba
3486*C
3487
3488;(owl_escape_value(B)>0 || owl_escape_value(C)>0)
3489;&& !oplay_attack_either(*,*,a)
3490
3491
3492Pattern A1001b
3493# Sometimes cut of small useless tail
3494# i.e.: gq -l games/niki.sgf -L 158 --decide-dragon S8 -o x.sgf
3495
3496YO cut if safe
3497*X
3498
3499:8,Cn,value(50)
3500
3501Ya
3502*X
3503
3504; !oplay_attack_either(*,*,a)
3505
3506
3507Pattern A1002
3508
3509????
3510?*.X threaten to cut
3511??YO
3512
3513:8,C,value(75)
3514
3515????
3516?*aX
3517??Yc
3518
3519; !safe_omove(a) && !oplay_attack_either(*,?,a,a,c) && !oplay_attack(*,a,*)
3520
3521
3522Pattern A1003
3523
3524????
3525?*.X threaten to cut
3526??YO
3527
3528:8,C,value(55)
3529
3530????
3531?*aX
3532??Yc
3533
3534; !safe_omove(a) && !oplay_attack_either(*,?,a,a,c)
3535
3536
3537Pattern A1005
3538
3539Y? cut!
3540*O
3541.X
3542
3543:8,C,value(90)
3544
3545Y?
3546*b
3547aC
3548
3549;owl_escape_value(C)>0 && xplay_attack_either(*,a,a,b)
3550
3551
3552Pattern A1005b
3553# gf Need to consider both directions. (3.3.13)
3554
3555X? cut!
3556*O
3557.Y
3558
3559:8,C,value(90)
3560
3561C?
3562*b
3563aY
3564
3565;owl_escape_value(C)>0 && xplay_attack_either(*,a,a,b)
3566
3567
3568Pattern A1006
3569
3570XOY push out
3571.*.
3572?.?
3573
3574:8,C,value(70)
3575
3576
3577Pattern A1006b
3578# gf New pattern. (3.1.12)
3579
3580XOY push out in reverse sente
3581.*.
3582?.?
3583
3584:8,C,value(75)
3585
3586XaY
3587.*.
3588?.?
3589
3590;lib(a) <= 2
3591
3592
3593Pattern A1008
3594
3595X*Y stop connection
3596?O?
3597
3598:8,C,value(80)
3599
3600a*b
3601?O?
3602
3603;owl_escape_value(a)>0 || owl_escape_value(b)>0
3604
3605
3606Pattern A1008b
3607# tm Modified (3.1.22) (see trevorc:810)
3608
3609ooo
3610X*Y stop connection
3611O.?
3612
3613:8,C,value(80)
3614
3615ooo
3616a*b
3617Oc?
3618
3619;(owl_escape_value(a)>0 || owl_escape_value(b)>0)
3620; && oplay_attack(*,c,c)
3621
3622
3623Pattern A1009
3624
3625XO*Y stop connection underneath
3626....
3627----
3628
3629:8,C,value(55)
3630
3631XO*Y
3632.a..
3633----
3634
3635;xplay_attack(*,a,a)
3636
3637
3638Pattern A1010
3639
3640Y.O cut and capture to destroy eyespace
3641.*X
3642...
3643---
3644
3645:8,C,value(75)
3646
3647YaO
3648.*B
3649...
3650---
3651
3652;oplay_attack(*,a,B)
3653
3654
3655Pattern A1011
3656
3657XOY stop connection underneath
3658x*x
3659---
3660
3661:8,C,value(80)
3662
3663aOb
3664x*x
3665---
3666
3667;owl_escape_value(a)>0 || owl_escape_value(b)>0
3668
3669
3670Pattern A1012
3671
3672X.?? cut
3673OY*O
3674oOX?
3675
3676:8,C,value(45)
3677
3678Xa??
3679OY*O
3680obX?
3681
3682; !safe_omove(a) && lib(b)>1
3683
3684
3685Pattern A1013
3686# tm New pattern. (3.1.13)
3687# see owl:229
3688
3689?O? enclose!
3690Y..
3691X*?
3692
3693:8,-,value(10)
3694
3695?c?
3696YAb
3697X*?
3698
3699; owl_escape_value(b)>0
3700; && oplay_defend_both(*,A,b,c,b)
3701; && oplay_defend_both(*,A,b,b,*)
3702
3703
3704Pattern A1014
3705# gf New pattern. (3.1.14)
3706
3707xx..Ox stop connection underneath
3708...*Y.
3709------
3710
3711:8,C,value(55)
3712
3713AB..Ox
3714...*Y.
3715------
3716
3717;x_somewhere(A,B) && owl_escape_value(A) + owl_escape_value(B) > 0
3718
3719
3720Pattern A1015
3721
3722X.*Y cut!
3723X..X
3724
3725:8,C,value(75)
3726
3727Ae*B
3728AfgB
3729
3730; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0)
3731; && oplay_defend_both(*,g,f,e,f,*)
3732
3733
3734Pattern A1015a
3735
3736Y.*X cut!
3737X..X
3738
3739:8,C,value(75)
3740
3741Ae*B
3742AfgB
3743
3744; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0)
3745; && oplay_defend_both(*,g,f,e,f,*)
3746
3747
3748Pattern A1016
3749# gf New pattern. (3.1.22)
3750# Converse to D1376. See lazarus:114 for an example.
3751
3752YxO?
3753o.*X
3754----
3755
3756:8,C,value(75)
3757
3758Bde?
3759oc*A
3760----
3761
3762; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0)
3763; && ((x_somewhere(d) && xplay_attack_either(*,c,c,e))
3764; || (!x_somewhere(d) && !xplay_defend_both(*,c,d,c,e)))
3765
3766
3767Pattern A1016a
3768# gf New pattern. (3.1.22)
3769# Converse to D1376. See lazarus:114 for an example.
3770
3771XxO?
3772o.*Y
3773----
3774
3775:8,C,value(75)
3776
3777Bde?
3778oc*A
3779----
3780
3781; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0)
3782; && ((x_somewhere(d) && xplay_attack_either(*,c,c,e))
3783; || (!x_somewhere(d) && !xplay_defend_both(*,c,d,c,e)))
3784
3785
3786Pattern A1017
3787# nn New pattern (3.3.11)
3788# gf Revised constraint, see owl1:354. (3.7.3)
3789
3790X.*o threaten to cut and mess up opponent's shape
3791xY.X
3792
3793:8,C,value(65)
3794
3795X.*b
3796xYaC
3797
3798;!oplay_attack(*,a,*)
3799;&& (o_somewhere(b) || !oplay_attack(*,b,*))
3800;&& !attack(C)
3801
3802
3803Pattern A1018
3804# nn New pattern (3.3.11)
3805
3806O.Y separate
3807.*.
3808X.o
3809
3810:8,C,value(35)
3811
3812
3813Pattern A1019
3814# nn New pattern (3.3.11)
3815
3816.o.O cut / prevent escape
3817X...
3818.*.Y
3819
3820:8,C,value(65)
3821
3822.fgO
3823Xbde
3824.*cA
3825
3826;!owl_goal_dragon(A) && !oplay_attack_either(*,b,c,d,e,c,e)
3827;&& (o_somewhere(f) || !oplay_attack_either(*,d,b,f,g,b,g))
3828
3829
3830Pattern A1020
3831# nn New pattern (3.3.11)
3832# FIXME: constraint is ugly
3833
3834ooooo try to cut off and kill the moyo reducing stone
3835....o
3836....o
3837.Y..o
3838*...o
3839
3840:/,-,value(45)
3841
3842abcde
3843....f
3844....g
3845.Y..h
3846*...i
3847
3848;(owl_escape_value(a)>0) + (owl_escape_value(b)>0)
3849;+(owl_escape_value(c)>0) + (owl_escape_value(d)>0)
3850;+(owl_escape_value(e)>0) + (owl_escape_value(f)>0)
3851;+(owl_escape_value(g)>0) + (owl_escape_value(h)>0)
3852;+(owl_escape_value(i)>0) < 2
3853
3854
3855Pattern A1021
3856# gf New pattern. (3.3.17)
3857
3858??O cut off from friendly stone
3859Y*X
3860?O.
3861
3862:8,-,value(45)
3863
3864??O
3865B*A
3866?O.
3867
3868;!owl_goal_dragon(A) && !oplay_connect(*,A,B)
3869
3870
3871Pattern A1022
3872# evand New pattern. (3.3.18)
3873
3874oY.O
3875..*.
3876.X.X
3877...o
3878
3879:8,C,value(55)
3880
3881oA.O
3882..*.
3883.X.B
3884...o
3885
3886;!oplay_connect(*,A,B)
3887
3888
3889Pattern A1023
3890# evand New pattern. (3.3.18)
3891
3892?Xx?
3893O*.?
3894?..?
3895xYxx
3896
3897:8,C,value(45)
3898
3899?Bx?
3900O*a?
3901?..?
3902xCxx
3903
3904;oplay_disconnect(*,a,B,C)
3905
3906
3907Pattern A1024a
3908# gf New pattern. (3.5.4)
3909# gf Revised pattern. (3.7.3)
3910# Converse to D1386a
3911
3912YO.? connect along edge to strong dragon
3913x*.X
3914----
3915
3916:8,CEb,value(90)
3917
3918AO.?
3919x*.B
3920----
3921
3922;owl_strong_dragon(B) && !xplay_disconnect(*,A,B)
3923
3924
3925Pattern A1024b
3926# gf New pattern. (3.5.4)
3927# Converse to D1386a
3928
3929XO.o connect along edge to strong dragon
3930x*.Y
3931----
3932
3933:8,Eb,value(90)
3934
3935BO.o
3936x*.A
3937----
3938
3939;owl_strong_dragon(B) && !xplay_disconnect(*,A,B)
3940
3941
3942#########################################################
3943# #
3944# Reinforce the perimeter #
3945# #
3946#########################################################
3947# #
3948# Patterns where the perimeter is already in place #
3949# but has a defect which needs repair. #
3950# #
3951#########################################################
3952
3953
3954Pattern A1100
3955#tm New Pattern (3.1.22) (see pattern D1100)
3956# gf Fixed diagram inconsistency. (3.1.23)
3957
3958XO defend connect out
3959.*
3960OY
3961
3962:8,-,value(90)
3963
3964cb
3965a*
3966OY
3967
3968;owl_escape_value(c)>0 && xplay_attack_either(*,a,a,b)
3969
3970
3971Pattern A1101
3972
3973...
3974O*O
3975?Y?
3976
3977:|,-,value(93)
3978
3979.a.
3980b*c
3981?Y?
3982
3983; xplay_break_through(*,a,b,a,c) == WIN
3984
3985
3986Pattern A1101b
3987
3988...
3989O*O
3990?Y?
3991
3992:|,-,value(94)
3993
3994.a.
3995b*c
3996?Y?
3997
3998; lib(b)<=4 && lib(c)<=4 && xplay_break_through(*,a,b,a,c) == WIN
3999
4000
4001Pattern A1101c
4002# New Pattern (before 3.1.20 - when?)
4003# see strategy3:150 for wasted move.
4004# see also lazarus:5
4005# tm Modified (3.1.22)
4006
4007O*O connect against threat
4008?Y?
4009
4010:8,-,value(81)
4011
4012A*B
4013?Y?
4014
4015; vital_chain(A) && vital_chain(B)
4016; && !xplay_defend_both(*,A,B)
4017
4018
4019Pattern A1102
4020
4021..X
4022O*O
4023?Y?
4024
4025:8,C,value(95)
4026
4027baX
4028c*O
4029?Y?
4030
4031;!xplay_defend_both(*,a,b,a,c)
4032
4033
4034Pattern A1104
4035
4036OYO connect to prevent double atari
4037XO*
4038...
4039
4040:8,C,value(85)
4041
4042OYB
4043AO*
4044.a.
4045
4046; xplay_attack(*,a,B) && !oplay_defend(*,A)
4047
4048
4049Pattern A1105
4050# gf Added n classification. (3.3.20)
4051
4052O..
4053XO* connect against double threat
4054xYO
4055x..
4056---
4057
4058:8,Cn,value(85)
4059
4060Oa.
4061XO*
4062xAb
4063x..
4064---
4065
4066;!attack(A) && xplay_attack(*,a,b)
4067
4068
4069Pattern A1106
4070
4071OO.?
4072XOX* capture cutting stone to defend
4073xYO.
4074xx..
4075----
4076
4077:8,C,value(70)
4078
4079OO.?
4080XOB*
4081xAa.
4082xx..
4083----
4084
4085;!attack(A) && attack(a) && !oplay_defend(*,B)
4086
4087
4088# tm Moved to owl_vital_apats (3.1.17)
4089# tm copied back from owl_vital_apats (3.1.22)
4090# suspect that vital_chain works differently called from there??? -tm
4091# see 13x13:52 --decide-dragon K10
4092Pattern A1107
4093# spl never on edge (3.3.23)
4094
4095??? defend the surrounding chain
4096O*?
4097YO?
4098
4099:/,-,value(95)
4100
4101???
4102a*?
4103Yb?
4104
4105; vital_chain(a) && vital_chain(b)
4106; && !xplay_defend_both(*,a,b)
4107
4108
4109Pattern A1107b
4110# gf New pattern. (3.1.9)
4111# tm Modified (3.1.17) - took away from edge
4112
4113?? defend the surrounding chain
4114*.
4115O.
4116YO
4117
4118:8,-,value(96)
4119
4120??
4121*.
4122ba
4123Yc
4124
4125;lib(c)>2 && vital_chain(b) && vital_chain(c)
4126;&& oplay_attack(*,a,a) && !xplay_defend_both(a,b,c)
4127
4128# nn Removal candidate (3.3.13)
4129# Success rate in regressions : 0.9 % (23/2562)
4130
4131Pattern A1107c
4132# tm New pattern. (3.1.17)
4133# tm Modified (3.1.20) - reduced value (see nngs:320)
4134
4135.* defend the surrounding chain
4136O.
4137YO
4138
4139:8,-,value(60)
4140
4141.*
4142ba
4143Yc
4144
4145;lib(c)>2 && vital_chain(b) && vital_chain(c)
4146;&& oplay_attack(*,a,a) && !xplay_defend_both(a,b,c)
4147
4148
4149Pattern A1108
4150
4151?XO don't let defender capture to escape
4152*OY
4153
4154:8,-,value(80)
4155
4156?BO
4157*aY
4158
4159;owl_escape_value(B) > 0 && does_defend(*,a)
4160
4161
4162Pattern A1109
4163
4164?Xx?? connect underneath
4165?OYoo
4166O.*..
4167.....
4168-----
4169
4170:8,C,value(65)
4171
4172?Xx??
4173?cYab
4174O.*..
4175.....
4176-----
4177
4178; o_somewhere(a,b) && attack(c)
4179
4180
4181Pattern A1110
4182
4183o..YO? connect underneath
4184O.*Ooo
4185------
4186
4187:8,-,value(50)
4188
4189
4190Pattern A1111
4191
4192?.x..| defend bottom while emphasizing top
4193.OXX.|
4194.*OY.|
4195?..O.|
4196??...|
4197
4198:8,-,value(65)
4199
4200
4201Pattern A1112
4202# Strict speaking we should not need patterns
4203# like this
4204
4205X.*O save lunch
4206YO..
4207....
4208----
4209
4210:8,-,value(50)
4211
4212X.*O
4213Ya..
4214....
4215----
4216
4217; attack(a)
4218
4219
4220Pattern A1113
4221# gf New pattern. (3.1.9)
4222
4223xYO.? reinforce
4224?*..?
4225O.O.?
4226...x?
4227?????
4228
4229:8,-,value(70)
4230
4231xYO.?
4232?*..b
4233O.O.?
4234...x?
4235?a???
4236
4237;owl_escape_value(a)>0 || owl_escape_value(b)>0
4238
4239
4240Pattern A1114
4241# gf New pattern. (3.1.9)
4242
4243xxO.? reinforce
4244?Y*.?
4245O.O.?
4246...x?
4247?????
4248
4249:8,-,value(81)
4250
4251xxO.?
4252?Y*.b
4253O.O.?
4254...x?
4255?a???
4256
4257;owl_escape_value(a)>0 || owl_escape_value(b)>0
4258
4259
4260Pattern A1115
4261# gf New pattern. (3.1.9)
4262
4263xxO. reinforce
4264?YXO
4265O*O.
4266...x
4267
4268:8,-,value(81)
4269
4270
4271Pattern A1116
4272# gf New pattern. (3.1.9)
4273
4274?X? Reinforce
4275OYO
4276*OX
4277xxx
4278
4279:8,C,value(90)
4280
4281?X?
4282aDO
4283*bX
4284xCx
4285
4286;owl_escape_value(C)>0 && owl_goal_dragon(D) && !xplay_defend_both(*,a,b)
4287
4288
4289Pattern A1117
4290# gf New pattern. (3.1.11)
4291
4292X*O don't let defender cut and capture to escape
4293?OY
4294
4295:8,Cn,value(80)
4296
4297X*b
4298?aY
4299
4300;!xplay_defend_both(*,a,b)
4301
4302
4303Pattern A1117a
4304# Same as A1117; different anchor.
4305
4306Y*O don't let defender cut and capture to escape
4307?OX
4308
4309:8,Cn,value(80)
4310
4311Y*b
4312?aX
4313
4314;!xplay_defend_both(*,a,b)
4315
4316
4317Pattern A1118
4318# tm New pattern (3.1.17)
4319
4320YO? defend
4321OX*
4322...
4323---
4324
4325:8,-,value(75)
4326
4327YO?
4328AX*
4329...
4330---
4331
4332; attack(A) && !oplay_attack(*,A)
4333
4334
4335Pattern A1119
4336# tm New Pattern (3.1.17)
4337# analog to defense pattern D1348
4338# tm Modified (3.1.18) (see trevorc:100)
4339# tm Modified (3.1.22) (see trevorc:810)
4340
4341Y*? cut off escape route.
4342o.X
4343
4344:8,Cn,value(36)
4345
4346a*E
4347Dcb
4348
4349;(owl_escape_value(a)>0 || owl_escape_value(b)>0)
4350;&& ((o_somewhere(E) || x_somewhere(E)) || owl_escape_value(a) < 0)
4351;&& !oplay_attack_either(*,c,D,*,D)
4352
4353
4354Pattern A1121
4355# tm New Pattern (3.1.20)
4356# see also Pattern D1361 (both this and that are too generic)
4357# see trevorc:550, trevor:1050
4358# gf Added constraint. (3.1.32)
4359
4360O.O block to protect weakness
4361Y*.
4362?O?
4363
4364:8,C,value(35)
4365
4366a.b
4367Y*.
4368?c?
4369
4370;!same_string(a,b) && (lib(a) <= 4 || lib(b) <= 4 || lib(c) <= 4)
4371
4372
4373Pattern A1122
4374# tm New Pattern (3.1.22)
4375# see -l games/trevor/auto/d02.sgf -L 142 --decide-dragon P2
4376# gf Revised constraint. (3.7.11)
4377
4378Y.
4379*.
4380.X
4381
4382:8,-,value(75)
4383
4384a.
4385*.
4386.b
4387
4388;!owl_goal_dragon(b) && !oplay_connect(*,a,b)
4389
4390
4391Pattern A1122a
4392# same as A1122 - different anchor.
4393# gf Revised constraint. (3.7.11)
4394
4395X.
4396*.
4397.Y
4398
4399:8,-,value(75)
4400
4401a.
4402*.
4403.b
4404
4405;!owl_goal_dragon(a) && !oplay_connect(*,a,b)
4406
4407
4408Pattern A1122b
4409# gf New Pattern. (3.7.11)
4410
4411Y.
4412*.
4413.X
4414
4415:8,C,value(76)
4416
4417a.
4418*.
4419.b
4420
4421;lib(a) == 2 && !oplay_connect(*,a,b)
4422
4423
4424Pattern A1123
4425# tm New Pattern (3.1.22) (see D1376)
4426# FIXME: duplicate of A1016
4427
4428YxO?
4429o.*X
4430----
4431
4432:8,-,value(75)
4433
4434bdE?
4435oc*a
4436----
4437
4438; (owl_escape_value(a) > 0 || owl_escape_value(b) > 0)
4439; && xplay_attack_either(*,c,d,c,E)
4440
4441
4442Pattern A1123a
4443# Same as A1123 - different anchor.
4444
4445XxO?
4446o.*Y
4447----
4448
4449:8,-,value(75)
4450
4451bdE?
4452oc*a
4453----
4454
4455; (owl_escape_value(a) > 0 || owl_escape_value(b) > 0)
4456; && xplay_attack_either(*,c,d,c,E)
4457
4458
4459Pattern A1124
4460# tm New Pattern (3.1.22) (see nngs:770 decide-dragon K4)
4461# see also D1140
4462# ab Revised constraint. (3.3.10)
4463
4464?OY
4465?.*
4466???
4467
4468:8,-,value(70)
4469
4470?AY
4471bd*
4472?c?
4473
4474;(owl_escape_value(c) > 0
4475; || owl_escape_value(b) > 0)
4476;&& oplay_defend_both(*,d,A,*)
4477
4478
4479Pattern A1124a
4480# tm New Pattern (3.1.22) (see nngs:770 decide-dragon K4)
4481# see also D1140
4482# gf Revised. Might still be too general. (3.5.4)
4483# spl revised (3.5.5)
4484
4485?OY
4486x*.
4487xxx
4488
4489:8,-,value(70)
4490
4491?AY
4492b*e
4493cdx
4494
4495;(owl_escape_value(d) > 0
4496; || owl_escape_value(b) > 0
4497; || owl_escape_value(c) > 0)
4498;&& !oplay_defend_both(e,*,A,e)
4499
4500
4501Pattern A1124b
4502# gf New pattern. (3.5.4) (see nngs:770 decide-dragon K4)
4503
4504?OY
4505x.*
4506xx?
4507
4508:8,C,value(70)
4509
4510?OA
4511be*
4512cd?
4513
4514;(owl_escape_value(d) > 0
4515; || owl_escape_value(b) > 0
4516; || owl_escape_value(c) > 0)
4517;&& xplay_connect(e,*,e,A)
4518;&& oplay_disconnect(*,e,e,A)
4519
4520
4521Pattern A1125
4522# tm New Pattern (3.1.22) (see D1118)
4523
4524xxx? defend threaten of escape
4525O*O?
4526XOYo
4527?X.?
4528
4529:8,C,value(76)
4530
4531
4532Pattern A1126
4533# tm New Pattern (3.1.23)
4534# gf Revised constraint. (3.5.3)
4535# See also D1378.
4536
4537O*O prevent breakout & attack
4538?Y?
4539
4540:|,-,value(55)
4541
4542a*b
4543?Y?
4544
4545; vital_chain(a) && vital_chain(b)
4546; && xplay_attack_either(*,a,b) && !xplay_connect(*,a,b)
4547
4548
4549Pattern A1127
4550# tm New Pattern (3.1.23) (see Pattern D1001)
4551# Note: there's no reason to cut the goal dragon up.
4552
4553O*X prevent connection
4554?YO
4555
4556:8,n,value(70)
4557
4558O*b
4559?cA
4560
4561; (attack(A) != WIN || (wormsize(A)<=2 && does_attack(*,A)))
4562; && (!owl_goal_dragon(b) || !owl_goal_dragon(c))
4563
4564
4565Pattern A1127a
4566# Same as A1127 - different anchor.
4567
4568O*Y prevent connection
4569?XO
4570
4571:8,n,value(70)
4572
4573O*b
4574?cA
4575
4576; (attack(A) != WIN || (wormsize(A)<=2 && does_attack(*,A)))
4577; && (!owl_goal_dragon(b) || !owl_goal_dragon(c))
4578
4579
4580Pattern A1128
4581# tm New Pattern (3.1.23)
4582# see also CB14
4583
4584OY*X cut off from home
4585X.X.
4586
4587:8,C,value(80)
4588
4589Ob*a
4590XcXd
4591
4592; owl_escape_value(a) > 0
4593; && oplay_attack(*,b)
4594; && !oplay_attack(*,c,d,d)
4595
4596
4597Pattern A1129
4598# tm New Pattern (3.1.23) (see D1123)
4599
4600xO*x stop break through
4601XYO.
4602XO..
4603O..?
4604
4605:8,C,value(86)
4606
4607xB*x
4608XYOa
4609XO..
4610O..?
4611
4612;xplay_attack(*,a,B)
4613
4614
4615Pattern A1130
4616# nn New pattern (3.3.11)
4617# FIXME: should be constrained
4618
4619...o? to be considered in crosscut cases like this
4620...Ox
4621.*.OX
4622..XYO
4623...o?
4624
4625:8,C,value(65)
4626
4627
4628Pattern A1131
4629# gf New pattern. (3.3.18)
4630
4631XO.Y
4632?*.?
4633----
4634
4635:8,-,value(90)
4636
4637AO.B
4638?*.?
4639----
4640
4641;owl_strong_dragon(A) && !xplay_disconnect(*,A,B)
4642
4643
4644Pattern A1132
4645# gf New pattern. (3.3.18)
4646
4647|.O?? save one lunch and make one a false eye
4648|OYX?
4649|*OXX
4650|..OX
4651+----
4652
4653:8,-,value(70)
4654
4655
4656Pattern A1133a
4657# evand New pattern. (3.3.20)
4658
4659?O.Y
4660?..x
4661?.*.
4662?..O
4663????
4664
4665:8,-,value(65)
4666
4667?O.Y
4668?..x
4669a.*.
4670b..O
4671cd??
4672
4673;owl_escape_value(a) + owl_escape_value(b) +
4674;owl_escape_value(c) + owl_escape_value(d) > 0
4675
4676
4677Pattern A1133b
4678# evand New pattern. (3.3.20)
4679
4680?O.Y
4681?.*.
4682?...
4683?..O
4684????
4685
4686:8,-,value(45)
4687
4688?O.Y
4689?.*.
4690a...
4691b..O
4692cd??
4693
4694;owl_escape_value(a) + owl_escape_value(b) +
4695;owl_escape_value(c) + owl_escape_value(d) > 0
4696
4697
4698Pattern A1134
4699# pp New pattern (3.5.3). See trevorb:120.
4700# FIXME: is it better to do this algorithmically with owl boundaries?
4701# gf Added explicit anchoring. (3.5.3)
4702
4703XOY prevent escaping by capturing
4704.*O
4705---
4706
4707:8,C,value(75)
4708
4709BOY
4710.*a
4711---
4712
4713; lib(a) == 1 && owl_escape_value(B) > 0
4714
4715
4716Pattern A1134b
4717# gf New pattern. (3.5.3).
4718
4719YOX prevent escaping by capturing
4720.*O
4721---
4722
4723:8,C,value(75)
4724
4725YOB
4726.*a
4727---
4728
4729; lib(a) == 1 && owl_escape_value(B) > 0
4730
4731
4732Pattern A1134c
4733# gf New pattern. (3.5.3).
4734
4735XOY prevent escaping by capturing
4736.*O
4737---
4738
4739:8,C,value(40)
4740
4741XOY
4742.*a
4743---
4744
4745; lib(a) == 1
4746
4747
4748Pattern A1134d
4749# gf New pattern. (3.5.3).
4750# See 13x13b:23
4751
4752YOX prevent escaping by capturing
4753.*O
4754---
4755
4756:8,C,value(40)
4757
4758YOX
4759.*a
4760---
4761
4762; lib(a) == 1
4763
4764
4765Pattern A1135
4766# gf New pattern. (3.5.3)
4767
4768..OY
4769X.*.
4770----
4771
4772:8,-,value(75)
4773
4774..OB
4775A.*.
4776----
4777
4778;owl_escape_value(A)>0 && !xplay_disconnect(*,A,B) && !oplay_connect(*,A,B)
4779
4780
4781Pattern A1136
4782# gf New pattern. (3.5.3)
4783
4784?Y?
4785O*O
4786..?
4787?X?
4788
4789:8,-,value(75)
4790
4791?B?
4792O*O
4793..?
4794?A?
4795
4796;owl_escape_value(A)>0 && !xplay_disconnect(*,A,B) && !oplay_connect(*,A,B)
4797
4798
4799Pattern A1137
4800# gf New pattern. (3.5.3)
4801# Converse to D1125.
4802
4803xxx?
4804...x
4805.*O.
4806?YXO
4807
4808:8,-,value(79)
4809
4810abc?
4811...x
4812.*O.
4813?YXO
4814
4815;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0
4816
4817
4818Pattern A1138
4819# gf New pattern. (3.5.5)
4820
4821xx.??
4822xx.O?
4823..*OY
4824...X.
4825-----
4826
4827:8,-,value(30)
4828
4829
4830Pattern A1139
4831# gf New pattern. (3.5.7)
4832
4833.OYx
4834*XOX
4835o..O
4836??O?
4837
4838:8,-,value(60)
4839
4840.dYx
4841*XOX
4842oabc
4843??O?
4844
4845;oplay_attack(b,d) && oplay_attack(*,a,a)
4846;&& oplay_attack(*,b,?,a,a) && !oplay_attack(*,b,c)
4847
4848
4849Pattern A1140a
4850# gf New pattern. (3.7.4)
4851# See gunnar:73.
4852
4853?XOY
4854XO*o
4855----
4856
4857:8,-,value(40)
4858
4859?AOB
4860XO*o
4861----
4862
4863;owl_escape_value(A) > 0 && xplay_disconnect(*,A,B) != WIN
4864
4865
4866Pattern A1140b
4867# gf New pattern. (3.7.4)
4868# See gunnar:76.
4869
4870?YOX
4871XO*o
4872----
4873
4874:8,-,value(40)
4875
4876?AOB
4877XO*o
4878----
4879
4880;owl_escape_value(B) > 0 && xplay_disconnect(*,A,B) != WIN
4881
4882
4883Pattern A1141
4884# gf New Pattern. (3.7.11)
4885
4886OO?
4887Y.O
4888*.o
4889.X?
4890
4891:8,C,value(76)
4892
4893OO?
4894a.O
4895*.o
4896.b?
4897
4898;!oplay_connect(*,a,b)
4899
4900
4901Pattern A1141b
4902# gf New Pattern. (3.7.11)
4903
4904OO?
4905X.O
4906*.o
4907.Y?
4908
4909:8,C,value(76)
4910
4911OO?
4912a.O
4913*.o
4914.b?
4915
4916;!oplay_connect(*,a,b)
4917
4918
4919#########################################################
4920# #
4921# Kill or threaten a worm of the dragon #
4922# #
4923#########################################################
4924
4925
4926Pattern A1201
4927
4928?O? capture one stone to rescue
4929*YO
4930
4931:8,-,value(75)
4932
4933?a?
4934*BO
4935
4936; (lib(a)==1) && (lib(B)==1)
4937
4938
4939Pattern A1203
4940
4941?*? capture 3 stones
4942OYO
4943
4944:8,s,value(80)
4945
4946?*?
4947OAO
4948
4949;wormsize(A)>3 && lib(A)==1
4950
4951
4952Pattern A1204
4953
4954?*? capture 1 or two stones
4955OYO
4956
4957:8,s,value(30)
4958
4959?*?
4960OAO
4961
4962;wormsize(A)<=3 && lib(A)==1 && olib(*) > 1
4963
4964
4965Pattern A1205
4966
4967*Y kill one string!
4968XO
4969
4970:8,s,value(75)
4971
4972*Y
4973AO
4974
4975;wormsize(A)>3 && does_attack(*,A)
4976
4977
4978Pattern A1206
4979
4980*Y kill one string, possibly with ko!
4981XO
4982
4983:8,Cs,value(30)
4984
4985*Y
4986AO
4987
4988;wormsize(A)<=3 && does_attack(*,A)
4989;&& (olib(*) > 1 || ko(*))
4990
4991
4992Pattern A1207
4993
4994..X attack one stone
4995.*Y
4996.XO
4997
4998:8,C,value(45)
4999
5000..X
5001.*Y
5002.AO
5003
5004; does_attack(*,A)
5005
5006
5007Pattern A1208
5008
5009?Ooo cut off one stone
5010Y..o
5011.*XO
5012....
5013----
5014
5015:8,C,value(40)
5016
5017
5018Pattern A1209
5019
5020OYX*
5021.O..
5022----
5023
5024:8,-,value(65)
5025
5026OYX*
5027.O..
5028----
5029
5030;owl_proper_eye(*)
5031
5032
5033Pattern A1210
5034# gf New pattern. (3.7.1)
5035# See ld_owl:318.
5036
5037?O? not always found as lunch defense
5038Y*X
5039
5040:8,-,value(65)
5041
5042?a?
5043B*C
5044
5045;attack(a) && !oplay_attack(*,a) && !oplay_defend_both(*,B,C)
5046
5047
5048#########################################################
5049# #
5050# Specific corner attacks #
5051# #
5052#########################################################
5053
5054
5055Pattern A1301
5056
5057|..o???
5058|.Oooo? kill corner
5059|.XOO.o
5060|.XY..O
5061|...*..
5062|......
5063+------
5064
5065:8,-,value(90)
5066
5067|..a???
5068|.Oboo?
5069|.XOO.o
5070|.XY..O
5071|...*..
5072|......
5073+------
5074
5075; o_somewhere(a,b)
5076
5077
5078Pattern A1302
5079
5080|..X? corner clamp, often resourceful
5081|.*YO
5082|....
5083+----
5084
5085:8,s,value(30)
5086
5087
5088Pattern A1303
5089#tm - modified (3.1.15) (see ld_owl:152)
5090
5091|..X? obligatory corner attack
5092|X.Yo
5093|.*.?
5094+----
5095
5096:8,s,value(90)
5097
5098
5099Pattern A1303b
5100
5101|..X? followup
5102|X*YO
5103|.OX?
5104+----
5105
5106:8,s,value(50)
5107
5108
5109Pattern A1303c
5110# gf New pattern. (3.5.3)
5111
5112|..X? variation
5113|XOYo
5114|.*.?
5115+----
5116
5117:8,s,value(85)
5118
5119|..X?
5120|XaYo
5121|.*.?
5122+----
5123
5124;defend(a) != WIN
5125
5126
5127Pattern A1304
5128# gf Revised constraint. (3.1.18)
5129
5130|.YO throw in threatening to destroy two corner eye vertices
5131|.*X
5132+---
5133
5134:8,s,value(60)
5135
5136|bYO
5137|.*A
5138+---
5139
5140;lib(A)==2 && !obvious_false_xeye(b)
5141
5142
5143Pattern A1305
5144
5145|XXY? try to kill corner formation
5146|.*.X
5147|...X
5148+----
5149
5150:8,s,value(90)
5151
5152
5153Pattern A1305b
5154
5155|XY.? try to kill corner formation
5156|.*.X
5157|...X
5158+----
5159
5160:8,s,value(35)
5161
5162
5163Pattern A1306
5164
5165|XXY? try to make ko in corner
5166|...X
5167|.*.X
5168+----
5169
5170:8,s,value(85)
5171
5172
5173Pattern A1307
5174
5175|XxY? kill one eye
5176|.X.X
5177|.O*X
5178+----
5179
5180:8,s,value(85)
5181
5182
5183Pattern A1308
5184
5185|Xx?? attack bent four in the corner
5186|.YXx
5187|.*.X
5188+----
5189
5190:8,s,value(90)
5191
5192
5193Pattern A1309
5194
5195|.YxX try to damage corner eye space
5196|.*Ox
5197+----
5198
5199:8,s,value(90)
5200
5201|bYxX
5202|.*ax
5203+----
5204
5205;lib(a)>1 && !obvious_false_xeye(b)
5206
5207
5208Pattern A1310
5209
5210|*X.Y try to make ko or bent four in the corner
5211|.OOx
5212+----
5213
5214:8,s,value(30)
5215
5216
5217Pattern A1310b
5218
5219|XxX?
5220|.Y.X better to kill without ko if we can
5221|*OOX
5222+----
5223
5224:8,s,value(31)
5225
5226
5227Pattern A1311
5228
5229|.XY?
5230|XO.X set up corner ko
5231|..*.
5232+----
5233
5234:8,s,value(80)
5235
5236
5237Pattern A1311b
5238# gf New pattern. (3.3.13)
5239
5240|.XY??
5241|XO.XO kill without ko
5242|.*..?
5243+-----
5244
5245:8,s,value(81)
5246
5247
5248Pattern A1312
5249
5250|OX??
5251|.YX? try to kill corner formation
5252|.*.X
5253|...x
5254+----
5255
5256:8,s,value(35)
5257
5258
5259Pattern A1313
5260
5261|.??Ooo attack 3-3 invasion
5262|.xY.oo
5263|...*..
5264|......
5265+------
5266
5267:8,-,value(50)
5268
5269
5270Pattern A1314
5271# gf Added constraint. (3.5.5)
5272
5273|x.X? sometimes correct attack in corner
5274|..YO
5275|.*.o
5276+----
5277
5278:8,s,value(45)
5279
5280|x.X?
5281|..Ya
5282|.*.o
5283+----
5284
5285;!attack(a)
5286
5287
5288Pattern A1315
5289
5290|.XO? attack corner eye space
5291|..Y?
5292|.X*O
5293|....
5294+----
5295
5296:8,-,value(55)
5297
5298
5299Pattern A1316
5300
5301|.XY? try to make ko in corner
5302|.*.X
5303|..OX
5304+----
5305
5306:8,s,value(35)
5307
5308
5309Pattern A1317
5310
5311|..X? try to make ko in corner
5312|.XYO
5313|.*.O
5314+----
5315
5316:8,s,value(55)
5317
5318|..A?
5319|.AAO
5320|.*.O
5321+----
5322
5323;lib(A) == 4 && attack(A) != WIN
5324
5325
5326Pattern A1318
5327
5328|..X? create ko
5329|*XYO
5330|.OXO
5331+----
5332
5333:8,s,value(55)
5334
5335|..A?
5336|*AAO
5337|.OXO
5338+----
5339
5340;lib(A) == 2 && attack(A) != WIN
5341
5342
5343Pattern A1319
5344
5345|.XO? critical point, might give ko
5346|*.Y?
5347|..Xx
5348|....
5349+----
5350
5351:8,s,value(61)
5352
5353|.AO?
5354|*.Y?
5355|..Xx
5356|....
5357+----
5358
5359;!attack(A)
5360
5361
5362Pattern A1319b
5363
5364|.XO critical point, might kill
5365|O.Y
5366|*.X
5367|...
5368+---
5369
5370:8,s,value(30)
5371
5372
5373Pattern A1319c
5374# gf New pattern. (3.1.11)
5375
5376|.XO? critical point, might give ko
5377|O.Y?
5378|X*Xx
5379|....
5380+----
5381
5382:8,s,value(61)
5383
5384|.AO?
5385|O.Y?
5386|X*Xx
5387|....
5388+----
5389
5390;!attack(A)
5391
5392
5393Pattern A1320
5394
5395|X?? try to make nakade instead of playing ko
5396|OYX
5397|*O.
5398+---
5399
5400:8,s,value(80)
5401
5402
5403Pattern A1321
5404
5405|X?? prevent throwin for ko
5406|.YX
5407|*O.
5408+---
5409
5410:8,s,value(45)
5411
5412
5413Pattern A1322
5414
5415|X.X sometimes correct attack point
5416|..Y
5417|.*.
5418+---
5419
5420:8,s,value(40)
5421
5422
5423Pattern A1323
5424
5425|XXO eye stealing move might kill
5426|..Y
5427|*.X
5428|...
5429+---
5430
5431:8,s,value(50)
5432
5433
5434Pattern A1324
5435
5436|oo???
5437|..O.. even if another attack works, try this first
5438|...O.
5439|..Y*.
5440|.....
5441|.....
5442+-----
5443
5444:8,-,value(90)
5445
5446
5447Pattern A1325
5448# This pattern could be generalized
5449
5450OOO.| kill the eye
5451.X*.|
5452X.Y.|
5453?X..|
5454----+
5455
5456:8,-,value(50)
5457
5458
5459Pattern A1326
5460
5461+----- block to kill
5462|.....
5463|...X*
5464|..Y.O
5465|..OO.
5466|oo???
5467
5468:8,-,value(85)
5469
5470
5471Pattern A1327
5472
5473+----- try to kill without ko
5474|.....
5475|.*.XO
5476|..Y.O
5477|.XOO.
5478|oo???
5479|oo???
5480
5481:8,Cs,value(85)
5482
5483
5484Pattern A1328
5485
5486|xX?? almost certain life if defender plays here
5487|xoY?
5488|.*oX
5489|..xx
5490+----
5491
5492:8,s,value(45)
5493
5494
5495Pattern A1329
5496
5497|X?? try to make nakade
5498|OY?
5499|*Ox
5500|Oox
5501+---
5502
5503:8,s,value(45)
5504
5505
5506Pattern A1330
5507
5508|XX? take ko to maybe kill
5509|*YX
5510|XOX
5511|OoO
5512+---
5513
5514:8,s,value(75)
5515
5516|AA?
5517|*AA
5518|XaA
5519|OoO
5520+---
5521
5522;lib(A)<=3 && defend(a) != WIN
5523
5524
5525Pattern A1331
5526
5527|*Y? capture to deny X trivial life
5528|XOX
5529|O.O
5530+---
5531
5532:8,s,value(55)
5533
5534|*Y?
5535|XOX
5536|OaO
5537+---
5538
5539;oplay_attack(a,a)
5540
5541
5542Pattern A1332
5543
5544|xYx? make nakade or escape
5545|O.*X
5546|.X.x
5547+----
5548
5549:8,s,value(55)
5550
5551|xYx?
5552|Oa*X
5553|.X.x
5554+----
5555
5556;oplay_defend(*,a,*)
5557
5558
5559Pattern A1333
5560
5561|XXY? try to get ko
5562|.*.X
5563|XOOX
5564|...X
5565+----
5566
5567:8,s,value(55)
5568
5569|XXYa
5570|.*.B
5571|XOOB
5572|...B
5573+----
5574
5575;!x_somewhere(a) || (lib(B) <= 6)
5576
5577
5578Pattern A1334
5579
5580|XXY? try to get ko
5581|XO.X
5582|XOOX
5583|..*X
5584+----
5585
5586:8,s,value(55)
5587
5588
5589Pattern A1335
5590
5591|..X? vital point
5592|*.YO
5593|.XOO
5594+----
5595
5596:8,s,value(41)
5597
5598|..X?
5599|*aYb
5600|.Xbb
5601+----
5602
5603;oplay_attack(a,a) != 0 && !oplay_attack(a,b)
5604
5605
5606Pattern A1335b
5607# gf New pattern. (3.1.1)
5608
5609|..X? vital point
5610|*OYO
5611|.X.O
5612+----
5613
5614:8,s,value(41)
5615
5616|..X?
5617|*cYO
5618|.XaO
5619+----
5620
5621;oplay_attack(a,c) != 0 || oplay_attack(a,a)
5622
5623
5624Pattern A1336
5625
5626|XXYO very special pattern
5627|...X
5628|*XO.
5629+----
5630
5631:8,s,value(35)
5632
5633|XXYO
5634|acbX
5635|*Xd.
5636+----
5637
5638;!oplay_attack(*,a,b,b) && oplay_defend(*,c,d)
5639
5640
5641Pattern A1337
5642
5643|XXx? kill without ko
5644|.OYx
5645|XOOX
5646|.*oX
5647+----
5648
5649:8,s,value(35)
5650
5651
5652Pattern A1338
5653
5654|OOo
5655|OXO kill without ko
5656|X.X
5657|.Yx
5658|*OX
5659+---
5660
5661:8,s,value(35)
5662
5663
5664Pattern A1339
5665
5666|xXx strange things happen at the 1-2 point
5667|X.Y
5668|.*x
5669+---
5670
5671:8,s,value(75)
5672
5673
5674Pattern A1340
5675# gf New pattern. (3.1.13)
5676
5677|X.X? destroy eyespace
5678|.OYx
5679|.*.X
5680+----
5681
5682:8,s,value(40)
5683
5684
5685Pattern A1341
5686# tm new pattern 3.1.13
5687# Useful for manyfaces:8
5688
5689?X?| vital corner point
5690X.X|
5691Y..|
5692X.*|
5693...|
5694---+
5695
5696:8,s,value(40)
5697
5698
5699Pattern A1342
5700# tm new pattern (3.1.14)
5701
5702|.XO
5703|..X
5704|*.X
5705|.YX
5706|.O?
5707
5708:8,Cs,value(50)
5709
5710
5711Pattern A1343
5712# gf New pattern. (3.1.14)
5713# tm modified (3.1.15) (cho1:150)
5714
5715|xxx? destroy eyespace
5716|..YX
5717|.*.x
5718+----
5719
5720:8,s,value(46)
5721
5722
5723Pattern A1344
5724# tm new pattern (3.1.15) (see cho1:150)
5725# This pattern shouldn't be necessary. It's definitely a vital move
5726# for the eyespace.
5727
5728XXY? consolidate or destroy eyespace
5729X.*O
5730----
5731
5732:8,s,value(46)
5733
5734
5735Pattern A1345
5736# tm new pattern (3.1.15) (see cho1:160)
5737
5738|.X.O special corner shape
5739|.*YO
5740|...O
5741+----
5742
5743:8,s,value(46)
5744
5745
5746Pattern A1346
5747# tm new pattern (3.1.15) (see cho1:200)
5748
5749??Xx| important 1-2 attack.
5750XY.x|
5751x.*.|
5752----+
5753
5754:8,s,value(75)
5755
5756
5757Pattern A1347
5758# gf New pattern. (3.1.15)
5759
5760|xx?
5761|..X destroy eyespace
5762|*.Y
5763|OX?
5764+---
5765
5766:8,s,value(35)
5767
5768
5769Pattern A1348
5770# gf New pattern. (3.1.15)
5771
5772|xX? fighting ko is only chance to kill
5773|OxX
5774|OYX
5775|X*X
5776+---
5777
5778:8,s,value(75)
5779
5780|xX?
5781|axB
5782|aBB
5783|X*B
5784+---
5785
5786;lib(a)==1 && lib(B)<=3 && defend(a)!=WIN
5787
5788
5789Pattern A1349a
5790# gf New pattern. (3.3.20)
5791
5792|.O? only chance to kill, sometimes tesuji
5793|.XO
5794|X.Y
5795|..X
5796|*.X
5797|.X?
5798+---
5799
5800:8,s,value(75)
5801
5802|.O?
5803|.XO
5804|X.Y
5805|..X
5806|*.X
5807|.A?
5808+---
5809
5810;!attack(A)
5811
5812
5813Pattern A1349b
5814# gf New pattern. (3.3.20)
5815
5816|oO? only chance to kill, sometimes tesuji
5817|OXO
5818|.XO
5819|X.Y
5820|..X
5821|*.X
5822|.X?
5823+---
5824
5825:8,s,value(75)
5826
5827|oO?
5828|OXO
5829|.XO
5830|X.Y
5831|..X
5832|*.X
5833|.A?
5834+---
5835
5836;!attack(A)
5837
5838
5839Pattern A1350
5840# gf New pattern. (3.3.20)
5841# See ld_owl:68.
5842
5843|XXX? try to kill without ko
5844|O.X?
5845|X.YX
5846|.*.O
5847+----
5848
5849:8,s,value(75)
5850
5851|AAA?
5852|O.A?
5853|X.AA
5854|.*.O
5855+----
5856
5857;lib(A)==3
5858
5859
5860Pattern A1351
5861# mh New Pattern (3.5.4)
5862# see ld_owl:406-412
5863
5864|OO?? better than capturing
5865|XOX?
5866|.Y.X
5867|*.X?
5868|..X?
5869+----
5870
5871:8,s,value(75)
5872
5873
5874Pattern A1352a
5875# gf New pattern. (3.7.3)
5876
5877|?X?? destroy eyespace
5878|X.Y?
5879|.*YX
5880|...x
5881+----
5882
5883:8,s,value(55)
5884
5885|?X??
5886|XaY?
5887|.*YX
5888|...x
5889+----
5890
5891;proper_eye(a)
5892
5893
5894Pattern A1352b
5895# gf New pattern. (3.7.3)
5896
5897|?X?? destroy eyespace
5898|X.Y?
5899|.*YX
5900|...x
5901+----
5902
5903:8,s,value(75)
5904
5905|?X??
5906|XaY?
5907|c*YX
5908|.b.x
5909+----
5910
5911;proper_eye(a) && oplay_defend(*,b,c,*)
5912
5913
5914#########################################################
5915# #
5916# Invasion patterns #
5917# #
5918#########################################################
5919# #
5920# These are not ordinary owl attack patterns. #
5921# #
5922#########################################################
5923
5924
5925Pattern A1401
5926# nn Increased value a bit (3.3.12)
5927
5928Y...| don't let opponent live easily in the corner
5929.*..|
5930....|
5931....|
5932----+
5933
5934:\,-,value(46)
5935
5936
5937Pattern A1403
5938#evand new pattern 3.3.13
5939
5940Y.O.|
5941.*..|
5942o...|
5943....|
5944----+
5945
5946:8,-,value(55)
5947
5948
5949#########################################################
5950# #
5951# Ko patterns #
5952# #
5953#########################################################
5954
5955Pattern A1501
5956# Necessary to have one O stone in the pattern to identify the goal.
5957# The helper is reused from a similar defense pattern.
5958
5959?O fill outer liberty in two-step ko
5960Y*
5961
5962:8,-,value(35)
5963
5964?O
5965A*
5966
5967;lib(A)==2 && olib(*)>1 && finish_ko_helper(A)
5968
5969
5970Pattern A1502
5971# Necessary to have one O stone in the pattern to identify the goal.
5972# The helper is reused from a similar defense pattern.
5973
5974Y*O fill outer liberty in two-step ko
5975
5976:-,-,value(35)
5977
5978A*O
5979
5980;lib(A)==2 && olib(*)>1 && finish_ko_helper(A)
5981
5982
5983Pattern A1503
5984
5985OX? capture ko to stop escape
5986Y*X
5987OXO
5988?O?
5989
5990:8,Cs,value(75)
5991
5992OX?
5993A*B
5994OXO
5995?O?
5996
5997;owl_escape_value(A) > 0 || owl_escape_value(B) > 0
5998
5999
6000Pattern A1503a
6001#Same as 1503 - differnt anchor.
6002
6003OX? capture ko to stop escape
6004X*Y
6005OXO
6006?O?
6007
6008:8,Cs,value(75)
6009
6010OX?
6011A*B
6012OXO
6013?O?
6014
6015;owl_escape_value(A) > 0 || owl_escape_value(B) > 0
6016
6017
6018Pattern A1504
6019# nn New pattern (3.3.13)
6020# redundant, as long as A1107c isn't removed
6021
6022OXXXO threaten to take an eye by ko
6023.OY.X
6024*..X.
6025-----
6026
6027:8,-,value(60)
6028
6029OXXXa
6030bcY.X
6031*..X.
6032-----
6033
6034;!attack(a) && !xplay_defend(b,c)
6035
6036
6037#########################################################
6038# #
6039# Specific edge attacks #
6040# #
6041#########################################################
6042
6043
6044Pattern A1601
6045
6046?xx
6047Y..
6048.*X
6049---
6050
6051:8,s,value(35)
6052
6053?xx
6054Yac
6055b*X
6056---
6057
6058;!safe_omove(a) && oplay_defend(*,a,*) && !oplay_attack(*,b,c,c)
6059
6060
6061Pattern A1602
6062
6063.YO? peep to destroy eyeshape
6064*.XO
6065.X.?
6066----
6067
6068:8,Cs,value(55)
6069
6070aYO?
6071*bCO
6072.X.?
6073----
6074
6075;!oplay_defend(*,a,b,C)
6076
6077
6078Pattern A1603
6079
6080.YO? peep to destroy eyeshape
6081*.XO
6082..X?
6083----
6084
6085:8,Cs,value(55)
6086
6087aYO?
6088*bCO
6089..X?
6090----
6091
6092;!oplay_defend(*,a,b,C)
6093
6094
6095Pattern A1604
6096
6097?XYO? peep to destroy eyeshape
6098O*.XO
6099..X.?
6100-----
6101
6102:8,Cs,value(55)
6103
6104?XYO?
6105O*aBO
6106..X.?
6107-----
6108
6109;!oplay_defend(*,?,a,B)
6110
6111
6112Pattern A1605
6113
6114?XYO? peep to destroy eyeshape
6115O*.XO
6116...X?
6117-----
6118
6119:8,Cs,value(55)
6120
6121?XYO?
6122O*aBO
6123...B?
6124-----
6125
6126;!oplay_defend(*,?,a,B)
6127
6128
6129Pattern A1606
6130
6131XYO? peep to destroy eyeshape
6132*.XO
6133.X.?
6134----
6135
6136:8,Cs,value(35)
6137
6138XYO?
6139*aBO
6140.X.?
6141----
6142
6143;!oplay_defend(*,?,a,B)
6144
6145
6146Pattern A1607
6147
6148XYO? peep to destroy eyeshape
6149*.XO
6150..X?
6151----
6152
6153:8,s,value(35)
6154
6155XYO?
6156*aBO
6157..X?
6158----
6159
6160;!oplay_defend(*,?,a,B)
6161
6162
6163Pattern A1608
6164
6165XYO? throw in to destroy eyespace
6166.*XO
6167.X.O
6168----
6169
6170:8,s,value(45)
6171
6172
6173Pattern A1608b
6174
6175xXYO? atari to reduce eyespace, with further reduction as followup
6176...XO
6177..X*O
6178-----
6179
6180:8,s,value(50)
6181
6182
6183# nn Removal candidate (3.3.13)
6184# Success rate in regressions : 0% (0/35)
6185
6186Pattern A1609
6187
6188?OOY?
6189O.X.X
6190OX.*.
6191-----
6192
6193:8,s,value(35)
6194
6195
6196Pattern A1610
6197# gf New pattern. (3.1.11)
6198
6199OXYX? edge tesuji
6200X...O
6201.X.*.
6202-----
6203
6204:8,-,value(45)
6205
6206bAAA?
6207XedfO
6208.Xc*.
6209-----
6210
6211;lib(A)==3 && !attack(b) && !oplay_attack(*,c,d,e,f,f)
6212
6213
6214Pattern A1611
6215# gf New pattern. (3.1.12)
6216
6217OXYXx? edge tesuji
6218X...XO
6219..*...
6220------
6221
6222:8,-,value(35)
6223
6224OXYXx?
6225X.edXf
6226.a*cb.
6227------
6228
6229;oplay_attack(*,a,b,c,d,e,e) && !oplay_attack(*,f)
6230
6231
6232Pattern A1612
6233# tm New pattern (3.1.15)
6234
6235?*Y??
6236?X.X.
6237?.X.O
6238-----
6239
6240:8,-,value(45)
6241
6242?*Y??
6243?eDX.
6244?BXCA
6245-----
6246
6247;lib(A) > 2 && !oplay_defend(*,?,B,?,C,?,D,e)
6248
6249
6250Pattern A1613
6251# tm New Pattern (3.1.17)
6252
6253?XY?
6254XO.x
6255OX*X
6256----
6257
6258:8,s,value(75)
6259
6260
6261#########################################################
6262# #
6263# Threats to capture #
6264# #
6265#########################################################
6266
6267
6268Pattern AC01
6269# pp New pattern (3.5.5).
6270
6271xXO threaten a snapback
6272x.Y
6273*.X
6274---
6275
6276:8,cs, threatens_to_capture(A), value(25)
6277
6278xXB
6279x.A
6280*.A
6281---
6282
6283; lib(A) == 2 && lib(B) > 1 && olib(*) > 1
6284
6285
6286#########################################################
6287# #
6288# Threats to destroy eyes #
6289# #
6290#########################################################
6291
6292
6293Pattern AE01
6294# pp New pattern (3.5.5).
6295
6296|OXx threaten to destroy the eye in ko
6297|X.X
6298|.Yx
6299|.*.
6300+---
6301
6302:8,cs, threatens_eye(a), value(20)
6303
6304|BXx
6305|XaX
6306|.Yx
6307|.*.
6308+---
6309
6310; owl_proper_eye(a) && !attack(B)
6311
6312
6313#########################################################
6314# #
6315# Reverse sente attacking moves #
6316# #
6317#########################################################
6318
6319
6320# END OF FILE