Updated README: Equal sign not required with `--mode` flag.
[sgk-go] / patterns / patterns.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 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# After the pattern, some supplementary information in the format:
52#
53# :trfno, classification, [values], helper_function
54#
55# These and other aspects of the pattern database are documented
56# in the Texinfo documentation.
57#
58#################
59#
60# Any line beginning with #, or any part of a line following
61# whitespace is a comment.
62#
63# The patterns are classified into a number of different categories:
64#
65# CC center cut/connection
66# EC edge cut/connection
67# CS center splitting
68# ES edge splitting
69# EB edge block/expand
70# CB center block/expand
71# ED edge defend/attack
72# CD center defend/attack
73# CM center miscellaneous
74# (F fuseki) moved to fuseki.db
75# (J joseki) moved to fuseki.db
76# EJ edge joseki
77# S seki
78# HH high handicap
79# LE large endgame
80#
81# The patterns are grouped in the file by category. New patterns
82# should be added close to a similar pattern or at the end of the
83# category where it belongs. When a new pattern is added, the names
84# of later patterns in the category should usually not be changed.
85# This can be accomplished by introducing names like CC35b and so on.
86#
87
88
89attribute_map general
90
91goal_elements none
92# FIXME: try to make callback_data pattern category specific
93callback_data XOxo
94
95
96##########################
97#
98# Cutting and Connecting patterns
99#
100# Mainly patterns which actually guarantee a cut or a connection are
101# accepted. Occasionally patterns which threaten to make a cut or
102# connection. These patterns are given the C or B classification.
103#
104# See ConnXXX and CutXXX for a new set of cutting and connecting patterns.
105#
106##########################
107#
108# Center Cuts and Connections
109#
110##########################
111
112
113Pattern CC1
114
115?.?? connect
116O*.O
117.X..
118
119:8,c
120
121
122Pattern CC2
123
124?.X connect against peep (not on edge)
125O*O
126?X?
127
128:8,nBC
129
130?aX
131b*c
132?X?
133
134;xplay_attack_either(*,a,a,b) || xplay_attack(*,a,c)
135
136
137Pattern CC3
138
139?O? break connection
140X*X
141?O?
142
143:+,OB
144
145?a?
146X*X
147?b?
148
149;alive(a) || alive(b)
150
151
152Pattern CC4
153# More accurate helper needed.
154
155O.? break connection
156X*X
157?O?
158
159:8,B
160
161a.?
162X*X
163?b?
164
165;lib(a)>1 && (alive(a) || alive(b))
166
167
168Pattern CC5
169
170??? push in
171...
172X*X
173?O?
174
175:|,OB
176
177
178Pattern CC6
179
180?xxx? straight extension to connect
181XOO*?
182O...?
183
184:8,C
185
186?xxx?
187XOO*?
188Oa..?
189
190;xcut(a) && odefend_against(*,a)
191
192
193Pattern CC7
194
195OX? cut
196X*.
197?.?
198
199:\,OB
200
201aX?
202X*.
203?.?
204
205;lib(a)>2 && lib2(a)>3
206
207
208Pattern CC8
209
210??X? push through to cut
211?OXx
212O.O*
213???X
214
215:8,OB
216
217??A?
218?OAx
219O.O*
220???B
221
222;!xplay_attack(*,A) && !xplay_attack(*,B)
223
224
225Pattern CC9
226
227?O? cut through
228XO?
229.*X
230
231:8,OB
232
233
234Pattern CC10
235
236O.X three crows
237.*.
238X..
239
240:\,OB
241
242
243Pattern CC10b
244
245O.X three crows
246.*.
247X..
248
249:\,OXe
250
251
252Pattern CC11
253
254o.X separate the opponent
255?*O
256?X?
257
258:8,nOB
259
260o.A
261?*O
262?B?
263
264;!attack(A) && !attack(B)
265
266
267Pattern CC12
268
269?.X cut!
270O*.
271?XO
272
273:8,B
274
275?.X
276a*B
277?Xc
278
279;(alive(a) || alive(c)) && oplay_defend(*,B,c);
280
281
282Pattern CC13
283# tm modified (3.1.10)
284# (compare Conn315)
285# gf Added n classification. (3.3.16)
286# gf Revised constraint. (3.5.4)
287
288O? cut!
289*X
290XO
291
292:8,Bn,shape(2)
293
294O?
295*A
296Bc
297
298;lib(c)>1 && oplay_attack_either(*,A,B)
299
300
301Pattern CC13b
302# gf New pattern. (3.5.3)
303
304O? cut!
305*X
306XO
307
308:8,e
309
310a?
311*X
312XO
313
314;alive(a)
315
316
317Pattern CC14
318# This connection is bad shape. Should have a helper to verify
319# that it's necessary.
320
321.O. Connect
322...
323X*.
324?OO
325
326:8,OC
327
328
329Pattern CC15
330
331?X.O break connection
332O*.X
333
334:8,B
335
336?Xac
337d*bX
338
339;(alive(c) || alive(d))
340;&& (!oplay_attack_either(*,a,b,b,c) || !oplay_attack_either(*,b,a,*,a))
341
342
343Pattern CC16
344
345X.O break connection
346*.X
347Ox?
348
349:8,B
350
351Xac
352*bX
353dx?
354
355;(alive(c) || alive(d))
356;&& (!oplay_attack_either(*,a,b,b,c) || !oplay_attack_either(*,b,a,*,a))
357
358
359Pattern CC17
360
361?X.O break connection
362.*.X
363O.??
364
365:8,B
366
367?Xac
368.*bX
369d.??
370
371;(alive(c) || alive(d))
372;&& (!oplay_attack_either(*,a,b,b,c) || !oplay_attack_either(*,b,a,*,a))
373
374
375Pattern CC19
376
377.O. defend cut
378X*.
379...
380OO.
381
382:8,OC
383
384
385Pattern CC20
386
387.O.? try to connect
388...?
389.*.X
390?.O?
391
392:8,C
393
394.O.?
395d..?
396c*aX
397?bO?
398
399;!omoyo(c) || !omoyo(d) || !xplay_attack(a,*,b,b)
400
401
402Pattern CC21
403
404?X.? connect!
405.*.O
406O..O
407??X?
408
409:8,C
410
411
412Pattern CC22
413
414?O.? connect!
415..*X
416X...
417?.O?
418
419:8,C
420
421
422Pattern CC23
423
424?O.O connect!
425..*X
426X...
427?.O?
428
429:8,C
430
431
432Pattern CC24
433
434?X.? connect!
435.OXO
436O.*O
437??X?
438
439:8,C
440
441
442Pattern CC25
443
444?X.O break connection
445..*.
446O.XO
447
448:8,B
449
450?X.a
451..*.
452O.XO
453
454;alive(a)
455
456
457Pattern CC26
458
459?X.o? break connection
460..*.O
461O.XO?
462
463:8,B
464
465?X.o?
466..*.b
467O.Xa?
468
469;lib(a)>1 && alive(b)
470
471
472Pattern CC27
473
474??.? connection helper
475O*.O
476?XO?
477
478:8,nC
479
480??.?
481O*aO
482?XO?
483
484;oplay_attack(*,a,a) == WIN
485
486
487Pattern CC28
488
489O..X? separate
490..*.?
491X...o
492....?
493???O?
494
495:8,a
496
497
498Pattern CC29
499
500?.O atari to connect
501X*.
502O.?
503
504:8,C
505
506?.O
507A*.
508a.?
509
510;lib(a)>1 && lib(A)==2
511
512
513Pattern CC30
514# gf Revised pattern. (3.3.16)
515
516?O* double connection
517X.O
518?O.
519
520:8,nC
521
522?b*
523XaO
524?c.
525
526;!xplay_connect(a,b,c)
527
528
529Pattern CC31
530# gf Revised pattern. (3.3.16)
531
532?O. double connection
533X*O
534?O.
535
536:-,C
537
538?a.
539X*O
540?b.
541
542;!xplay_connect(*,a,b)
543
544
545Pattern CC32
546
547?X. double break
548O*X
549?X.
550
551:-,-
552
553?ca
554O*d
555?eb
556
557;oplay_defend_both(*,a,b,*,b) && oplay_defend_both(*,b,a,*,a)
558
559>add_cut_move(c,d);
560>add_cut_move(c,e);
561>add_cut_move(d,e);
562
563
564Pattern CC33
565
566XO.? hane to break connection
567*..x
568.X??
569
570:8,OB
571
572BO.?
573*A.x
574.X??
575
576;oplay_attack(*,A,B)
577
578
579Pattern CC34
580
581....
582O.*O
583..X?
584
585:8,C
586
587
588Pattern CC35
589
590O?? break connection
591..X
592X*X
593?O?
594
595:8,OB
596
597O??
598baX
599X*X
600?O?
601
602;!oplay_attack(*,a,b,*) && !oplay_attack(*,a,b,b)
603
604
605Pattern CC36
606
607?Oo?? connection pattern
608o.O.?
609x*X.x
610?.O??
611
612:8,XC
613
614?Oo??
615odO.?
616x*Xbx
617?ca??
618
619;lib(a)>1 && oplay_attack(*,b,c,d,d)
620
621
622Pattern CC37
623
624?Oo? connection pattern
625o.OX
626?*X.
627?.O?
628
629:8,XC
630
631?Oo?
632odOX
633?*Xb
634?ca?
635
636;lib(a)>1 && oplay_attack(*,b,c,d,d)
637
638
639Pattern CC38
640
641?Oo? connection pattern
642o.O.
643?*X.
644?.OX
645
646:8,XC
647
648?Oo?
649odO.
650?*Xb
651?caX
652
653;lib(a)>1 && oplay_attack(*,b,c,d,d)
654
655
656Pattern CC39
657# This pattern guarantees a strong connection.
658# The constraint is asymmetric.
659
660?O. Connect
661.X*
662?O.
663
664:8,C
665
666?fb
667aD*
668?ec
669
670;lib(e)>1 && lib(f)>1
671;&& (!oplay_defend(*,D) || oplay_attack_either(*,a,b,c,D,c))
672
673
674Pattern CC40
675
676?O*x Connect on the right side
677XXOX
678?O.?
679
680:8,C
681
682?O*x
683XXOX
684?Oa?
685
686;odefend_against(*,a)
687
688
689Pattern CC41
690
691?XX? Cut or threaten to cut
692O.*O
693o.X?
694
695:8,OB
696
697
698Pattern CC42
699
700O.X.O warikomi
701oo*oo
702O.X.O
703
704:|,OB
705
706
707Pattern CC43
708# This pattern caused a problem at move 52 in ego.sgf
709
710XO
711*.
712.X
713
714:8,OB
715
716Xb
717*a
718.X
719
720;oplay_defend_both(*,a,*,b)
721
722
723Pattern CC44
724# May be too risky.
725
726O.X boldly cut before connecting
727XO*
728?X.
729
730:8,OB
731
732baX
733dO*
734?c.
735
736;oplay_attack(*,a,a) || oplay_attack(*,a,d)
737;|| (oplay_attack(*,a,c) && !oplay_attack(*,a,b))
738
739
740Pattern CC45
741# B classification is somewhat incorrect, but does convey the urgency
742# of the move.
743
744.... connect to contain
745O*OX
746?XXO
747
748:8,BC
749
750....
751c*OX
752?AAb
753
754;lib(A)>1 && lib(b)>1 && alive(c)
755
756
757Pattern CC46
758
759.XO Cut
760.*.
761OXO
762
763:8,OB
764
765.XO
766b*a
767cXO
768
769;oplay_attack(*,a,a) && !oplay_attack(*,b,a,c)
770
771
772Pattern CC47
773
774.*.X separate the opponent
775X..X
776?OO?
777
778:8,OB
779
780.*cX
781XabX
782?dO?
783
784;!oplay_attack(*,a,b,c,d) && !oplay_attack(*,a,b,c,*)
785
786
787Pattern CC48
788
789X*. Cut
790O..
791O.X
792
793:8,OB
794
795B*.
796Oa.
797O.X
798
799;oplay_attack_either(*,a,a,B)
800
801
802Pattern CC49
803
804?..X Cut
805O*..
806?X..
807
808:8,OB
809
810?..X
811O*ac
812?Xbd
813
814;!xarea(d) && !oplay_attack_either(*,a,b,*,b)
815;&& !oplay_attack_either(*,b,a,c,d,a,d)
816
817
818Pattern CC50
819
820o.X.? Cut
821O.*.?
822oOX.?
823
824:8,OB
825
826o.Xce
827Ob*af
828oOXdg
829
830;(!xarea(f) || !(xarea(e) && xarea(g)))
831;&& !oplay_attack_either(*,a,b,c,d,d,b)
832;&& !oplay_attack_either(*,a,b,d,c,c,b)
833
834
835Pattern CC51
836
837O*.O
838?XO?
839
840:8,nC
841
842O*aO
843?XO?
844
845;odefend_against(*,a)
846
847
848Pattern CC52a
849# Constraint probably needs revision.
850
851OX.. connect if invaded
852.*.O
853
854:8,C
855
856Odbe
857c*aO
858
859;oplay_attack(*,a,b,d) && oplay_attack(*,a,b,a)
860;&& oplay_attack(*,a,b,e,e) && oplay_attack(*,a,b,c,c)
861
862
863Pattern CC52b
864# ab New pattern. (3.3.10)
865
866?????
867.OX.? keep loose connection
868..*.O
869?..oo
870
871:8,c
872
873?????
874.aX.?
875..*.b
876?..oo
877
878;!same_dragon(a,b) && (alive(a) || alive(b))
879
880
881Pattern CC53
882
883XXO cut
884O*.
885??X
886
887:8,B
888
889XXb
890c*a
891??X
892
893;alive(c) && oplay_defend_both(*,a,*,b)
894
895
896Pattern CC54
897# This is a very conservative estimate of the chances to connect.
898# Other patterns are more accurate.
899# We really would need tactical reading functions for determining
900# whether a connection holds.
901
902OXO block opponent
903.*.
904?.?
905
906:|,C
907
908OXO
909a*c
910?b?
911
912;!oplay_defend(*,a,b,c,a) && !oplay_defend(*,a,b,c,c)
913
914
915Pattern CC55
916# Analogous to the previous one.
917
918XOX push out
919.*.
920?.?
921
922:|,OB
923
924AOB
925.*.
926?.?
927
928;!xplay_break_through(*,A,*,B)
929
930
931Pattern CC57
932# gf Removed obsolete add_connect_move actions. (3.3.16)
933
934??XO? connect three stones
935..*.o
936O..O?
937?..??
938
939:8,C
940
941??Xc?
942..*.o
943a..b?
944?..??
945
946;lib(a)>2 && lib(b)>2 && lib(c)>3
947
948
949Pattern CC58
950
951X... attach
952XO*X
953....
954..O.
955
956:8,OB
957
958
959Pattern CC59
960
961?X?? cut the knight's move
962..*O
963O.XO
964
965:8,OB
966
967
968Pattern CC60
969
970?X?? cut the knight's move
971.*OO
972OXXO
973
974:8,OB
975
976
977Pattern CC61
978
979X.OO break connection
980X..X
981.*.?
982
983:8,OB
984
985
986Pattern CC62
987
988O.X block off area
989.*.
990X.O
991
992:X,OB
993
994
995Pattern CC63
996
997?O? cut through
998XO?
999.*X
1000
1001:8,OB
1002
1003
1004Pattern CC64
1005
1006O.. three crows
1007.*.
1008x.O
1009
1010:/,C
1011
1012O..
1013.*.
1014x.O
1015
1016;!omoyo(*)
1017
1018
1019Pattern CC65
1020
1021..Xx separate the opponent
1022.*.?
1023X.O?
1024x???
1025
1026:\,OB
1027
1028
1029Pattern CC66
1030
1031..X. Attach to defend connection
1032O.*.
1033....
1034O.O.
1035?X??
1036
1037:8,C
1038
1039..X.
1040O.*.
1041.a..
1042ObO.
1043?X??
1044
1045;!oplay_defend(*,a,b,a)
1046
1047
1048Pattern CC67
1049
1050O*X cut!
1051X..
1052X.O
1053
1054:8,OB
1055
1056O*X
1057Xab
1058Xcd
1059
1060;!oplay_attack_either(*,a,b,*,b) && oplay_defend_both(*,b,a,c,a,d)
1061
1062
1063Pattern CC68
1064
1065?O.. cut!
1066..*X
1067.X..
1068...O
1069
1070:8,OB
1071
1072?O..
1073..*X
1074.Xab
1075..cd
1076
1077;!oplay_attack_either(*,a,b,*,b) && oplay_defend_both(*,b,a,c,a,d)
1078
1079
1080Pattern CC69
1081
1082?.? break through
1083OXO
1084.*.
1085oXO
1086
1087:8,OB
1088
1089
1090Pattern CC70
1091
1092?O.x Cut
1093.X*X
1094?O..
1095
1096:8,B
1097
1098?fbx
1099aX*E
1100?gcd
1101
1102;(alive(f) || alive(g)) && !oplay_defend_both(*,a,b,c,d,c,E)
1103
1104
1105Pattern CC71
1106# This connection is a bit sloppy but if we can't connect
1107# we do at least capture an opponent worm. Assume we are allowed
1108# to connect if the worm is at least as large as our dragon.
1109
1110?O.x Connect
1111.X*X
1112?O..
1113
1114:8,C
1115
1116?Obx
1117aX*E
1118?fcd
1119
1120;!oplay_defend_both(*,a,b,c,d,c,E) && (dragonsize(f) <= wormsize(E))
1121
1122
1123Pattern CC72
1124
1125?.... atari
1126.OX*X
1127..O..
1128?...?
1129
1130:8,OB
1131
1132
1133Pattern CC73
1134# gf Reduced shape value. (3.5.2)
1135
1136?X?? connect!
1137o.*O
1138O..X
1139?.O?
1140
1141:8,scad,shape(3)
1142
1143
1144Pattern CC74
1145# gf Split pattern. (3.1.7)
1146
1147.O*. connect and constrain X
1148OXXO
1149
1150:8,C
1151
1152aO*b
1153OXXO
1154
1155; oplay_attack(*,a,a) && oplay_attack(*,b,b)
1156
1157
1158Pattern CC74b
1159# gf Split pattern. (3.1.7)
1160# Only shape bonus if X stones can't be attacked.
1161
1162.O*. connect and constrain X
1163OXXO
1164
1165:8,C,shape(2)
1166
1167aO*b
1168OCCO
1169
1170;oplay_attack(*,a,a) && oplay_attack(*,b,b)
1171;&& !(attack(C) && oplay_defend(*,C))
1172
1173
1174Pattern CC75
1175
1176...*O connect out
1177O...X
1178..O??
1179
1180:8,Xc
1181
1182
1183Pattern CC76
1184
1185..*O connect out
1186O..X
1187.O??
1188
1189:8,Xc
1190
1191
1192Pattern CC77
1193# tm: reduced shape value from 8 to 3 (3.1.18)
1194
1195X? prevent connection
1196*O
1197.X
1198
1199:8,OB,shape(3)
1200
1201C?
1202*b
1203aD
1204
1205; !same_dragon(C,D) && xplay_attack_either(*,a,a,b)
1206
1207
1208Pattern CC78
1209
1210..OX connect
1211O*.O
1212?Xo?
1213
1214:8,C
1215
1216..OX
1217O*ba
1218?Xo?
1219
1220;lib(a)>1 && xplay_attack(b,b)==3
1221
1222
1223Pattern CC79
1224# ab modified (3.3.10)
1225# gf Reduced shape value. (3.5.2)
1226
1227?O.xx
1228XO.*.
1229XXO..
1230.....
1231
1232:8,XCad,shape(3)
1233
1234?a.xx
1235Xa.*.
1236XXO..
1237.....
1238
1239; lib(a)>=3 && !omoyo(*)
1240
1241
1242Pattern CC80
1243# db added (3.1.4)
1244
1245O*X
1246XO?
1247
1248:8,B
1249
1250a*X
1251XO?
1252
1253; does_attack(*,a)
1254
1255
1256Pattern CC81
1257# db added (3.1.4)
1258
1259O*X
1260XO?
1261?O?
1262
1263:8,B,shape(3)
1264
1265a*X
1266XO?
1267?O?
1268
1269; does_attack(*,a)
1270
1271
1272Pattern CC82
1273
1274..?? reverse sente connection
1275.OXX
1276X*O.
1277...?
1278
1279:8,ECad,shape(3)
1280
1281..??
1282.AXX
1283X*B.
1284...?
1285
1286; !dead(A) && (xplay_attack(*,B) || xplay_attack(*,A))
1287
1288
1289Pattern CC83
1290# gf New pattern. (3.1.23)
1291# See strategy3:142.
1292
1293O...
1294X.*.
1295?X.O
1296
1297:8,XC
1298
1299Oac.
1300Xb*.
1301?X.O
1302
1303;!oplay_defend(*,a,b,a) && oplay_attack(*,b,a,c,c)
1304
1305
1306Pattern CC84
1307# Formerly called EC37
1308
1309XO?? prevent double nozoki
1310O.O?
1311?*.O
1312??OX
1313
1314:8,nC
1315
1316
1317Pattern CC85
1318# Formerly called EC38
1319
1320?XO? prevent ko
1321.O*O
1322O..X
1323?XXX
1324
1325:8,C
1326
1327
1328Pattern CC86
1329# Formerly called EC39
1330
1331??o? connect out
1332X..O
1333O.*X
1334?.??
1335
1336:8,C
1337
1338??o?
1339X..O
1340O.*A
1341?.??
1342
1343; lib(A)==2
1344
1345
1346Pattern CC87
1347# Formerly called EC40
1348
1349??o? connect out
1350X*.O
1351O.OX
1352?.??
1353
1354:8,C
1355
1356
1357Pattern CC88
1358# Formerly called EC41
1359
1360.O. cut!
1361.*X
1362X..
1363..O
1364
1365:8,OB
1366
1367
1368##########################
1369#
1370# General Edge Connections
1371#
1372##########################
1373
1374
1375Pattern EC1
1376# gf Removed obsolete add_connect_move actions. (3.3.16)
1377
1378O.XO? connect under
1379..*.O
1380.....
1381-----
1382
1383:8,C
1384
1385ObEO?
1386ca*dO
1387.....
1388-----
1389
1390;odefend_against(*,d)
1391;&& !oplay_defend_both(*,a,b,a,E)
1392;&& oplay_attack_either(*,b,a,c,b,c)
1393
1394
1395Pattern EC2
1396# gf Removed obsolete add_connect_move actions. (3.3.16)
1397
1398OXXO? connect under
1399O.*.O
1400.....
1401-----
1402
1403:8,C
1404
1405eXXO?
1406ea*dO
1407.b...
1408-----
1409
1410;odefend_against(*,d) && !oplay_attack(*,a,b,e)
1411
1412
1413Pattern EC4
1414
1415?X.? connect underneath
1416O*.O
1417....
1418----
1419
1420:8,C
1421
1422?X.?
1423d*ac
1424..b.
1425----
1426
1427;odefend_against(*,a) || !oplay_attack_either(*,a,b,c,d)
1428
1429
1430Pattern EC5
1431
1432?O.? break connection
1433X*.X
1434....
1435----
1436
1437:8,OB
1438
1439?O.?
1440D*aC
1441..b.
1442----
1443
1444;xdefend_against(*,a) || !xplay_attack_either(*,a,b,C,D)
1445
1446
1447Pattern EC6
1448
1449?O.O break connection
1450X.*X
1451....
1452----
1453
1454:8,OB
1455
1456?OaO
1457Xd*X
1458.cbe
1459----
1460
1461;odefend_against(*,a) && !oplay_attack(*,b,c,d,e,e)
1462
1463
1464Pattern EC7
1465# Probably redundant
1466
1467?O.X break connection
1468X*..
1469....
1470----
1471
1472:8,OB
1473
1474?DbX
1475X*ac
1476....
1477----
1478
1479;!xplay_defend_both(*,a,b,a,D) && xplay_attack_either(*,b,a,c,b,c)
1480
1481
1482Pattern EC8
1483# gf Revised constraint. (3.5.3)
1484
1485?X.O connect
1486O*..
1487....
1488----
1489
1490:8,XC,shape(2)
1491
1492?X.b
1493a*..
1494....
1495----
1496
1497;oplay_disconnect(a,b) && !oplay_disconnect(*,a,b)
1498
1499
1500Pattern EC8a
1501
1502??xx? connect
1503O.xx?
1504.?X.O
1505.O*..
1506.....
1507-----
1508
1509:8,t
1510
1511??ab?
1512O.cd?
1513.?X.O
1514.O*..
1515.....
1516-----
1517
1518; x_alive_somewhere(a,b,c,d)
1519
1520
1521Pattern EC9
1522# Probably redundant
1523
1524??O? break connection
1525?X*X
1526O..?
1527----
1528
1529:8,OB
1530
1531
1532Pattern EC10
1533
1534?OX.? connection pattern
1535?*...
1536....O
1537....O
1538-----
1539
1540:8,C
1541
1542
1543Pattern EC11
1544
1545?OX.? connection pattern
1546?OX..
1547..*.O
1548....O
1549-----
1550
1551:8,C
1552
1553
1554Pattern EC12
1555
1556..OXX? Break connection.
1557X.*.xx
1558.....?
1559------
1560
1561:8,OB
1562
1563
1564Pattern EC13
1565
1566XXO? Stop connection.
1567.O*X
1568----
1569
1570:8,B
1571
1572XXa?
1573.O*A
1574----
1575
1576;!dead(a) && lib(A)>2
1577
1578
1579Pattern EC14
1580
1581??O? Connect under
1582X*.O
1583O...
1584----
1585
1586:8,C
1587
1588
1589Pattern EC15
1590
1591XO? separate the opponent
1592.*X
1593...
1594---
1595
1596:8,OB
1597
1598
1599Pattern EC16
1600
1601?..O? hanging connection
1602.*.OX
1603o.OXX
1604.....
1605-----
1606
1607:8,C
1608
1609
1610Pattern EC16a
1611# gf Reduced shape value. (3.5.2)
1612
1613?..O? hanging connection is best
1614.*.OX
1615o.OXX
1616.....
1617-----
1618
1619:8,C,shape(3)
1620
1621?..O?
1622.*bOX
1623o.OXX
1624..a..
1625-----
1626
1627; !oplay_attack(a,b,b)
1628
1629> antisuji(a);
1630> antisuji(b);
1631
1632
1633Pattern EC17
1634
1635OO? Get up from first line.
1636.*X
1637.OO
1638---
1639
1640:8,C
1641
1642OO?
1643.*X
1644.Oa
1645---
1646
1647;lib(a)==2
1648
1649
1650Pattern EC18
1651
1652X.OX? Prevent connection
1653..*xX
1654.....
1655-----
1656
1657:8,OB
1658
1659
1660Pattern EC19
1661
1662?X? Prevent connection
1663x.?
1664.*O
1665..X
1666---
1667
1668:8,OB
1669
1670
1671Pattern EC20
1672
1673.X? Try to prevent connection
1674.*O
1675...
1676.XX
1677---
1678
1679:8,OB
1680
1681
1682Pattern EC21
1683
1684o.o
1685XOX
1686.*.
1687...
1688---
1689
1690:|,OB
1691
1692o.o
1693aOb
1694.*.
1695...
1696---
1697
1698;!xplay_break_through(*,a,*,b)
1699
1700
1701Pattern EC22
1702
1703?O?
1704XOX
1705.*.
1706...
1707---
1708
1709:|,OB
1710
1711?O?
1712aOb
1713.*.
1714...
1715---
1716
1717;!xplay_break_through(*,a,*,b)
1718
1719
1720Pattern EC23
1721
1722x.x
1723OXO
1724.*.
1725...
1726---
1727
1728:|,c
1729
1730x.x
1731aXb
1732.*.
1733...
1734---
1735
1736;lib(a)>1 && lib(b)>1
1737
1738
1739Pattern EC24
1740# This move does not secure a connection without a constraint, see
1741# e.g. nicklas1:502.
1742
1743?X?
1744OXO
1745.*.
1746...
1747---
1748
1749:|,c
1750
1751?X?
1752aXb
1753.*.
1754...
1755---
1756
1757;lib(a)>1 && lib(b)>1
1758
1759
1760Pattern EC25
1761
1762O.X Stop connection
1763XO*
1764X..
1765---
1766
1767:8,OB
1768
1769ebX
1770cO*
1771cad
1772---
1773
1774;!xplay_defend_both(*,a,b,a,e)
1775;&& xplay_attack_either(*,b,a,d,d,b)
1776;&& oplay_attack_either(*,b,b,c)
1777;&& oplay_attack_either(*,a,d,b,b,c)
1778
1779
1780Pattern EC26
1781# Smaller endgame profit than EC25.
1782
1783O*X Stop connection
1784XO.
1785X..
1786---
1787
1788:8,OB
1789
1790d*X
1791XOa
1792Xbc
1793---
1794
1795;(!xplay_defend(a,b,*,b) || !xplay_defend(a,b,*,d))
1796;&& xplay_attack(a,*,b,c,c)
1797
1798
1799Pattern EC27
1800# gf Removed obsolete add_connect_move action. (3.3.16)
1801# gf Reduced shape value. (3.5.2)
1802
1803?X*O Use edge to stay connected.
1804?XOX
1805...O
1806....
1807----
1808
1809:8,-,shape(3)
1810
1811?X*O
1812?XOB
1813..aO
1814....
1815----
1816
1817; !attack(B) && oplay_attack(*,a,a)
1818
1819
1820Pattern EC28
1821# gf Removed obsolete add_connect_move action. (3.3.16)
1822
1823O.XO? capture to connect
1824OXOXO
1825o..*.
1826-----
1827
1828:8,-
1829
1830caXO?
1831cXOXO
1832ob.*.
1833-----
1834
1835;!oplay_attack(*,a,b,c) && !oplay_attack(*,b,a,c)
1836
1837
1838Pattern EC29
1839
1840X..Oo cut
1841..*X.
1842.....
1843-----
1844
1845:8,OB
1846
1847X.aOo
1848..*B.
1849.....
1850-----
1851
1852;oplay_attack_either(*,a,B,a)
1853
1854
1855Pattern EC30
1856
1857?O? force X to connect
1858X*X
1859...
1860---
1861
1862:|,a
1863
1864
1865Pattern EC31
1866
1867?..?? Clamp to connect under
1868X..O?
1869OX*.O
1870.....
1871-----
1872
1873:8,C
1874
1875?..??
1876X..O?
1877aX*.O
1878.....
1879-----
1880
1881;!attack(a)
1882
1883
1884Pattern EC32
1885
1886XO? cut!
1887.*X
1888...
1889---
1890
1891:8,OB
1892
1893
1894Pattern EC33
1895
1896?O? Take an important ko
1897OXO
1898X*X
1899---
1900
1901:8,B
1902
1903?b?
1904OAO
1905X*X
1906---
1907
1908;ko(A) && alive(b)
1909
1910
1911Pattern EC34
1912
1913?X? Take an important ko
1914X*X
1915OXO
1916---
1917
1918:8,C
1919
1920?X?
1921X*X
1922OAO
1923---
1924
1925;ko(A)
1926
1927
1928Pattern EC35
1929
1930?X? Fill an important ko
1931XOX
1932O*O
1933---
1934
1935:8,C
1936
1937?X?
1938XaX
1939O*O
1940---
1941
1942;ko(a)
1943
1944
1945Pattern EC36
1946
1947?O? Fill an important ko
1948O*O
1949XOX
1950---
1951
1952:8,B
1953
1954?b?
1955O*O
1956XaX
1957---
1958
1959;ko(a) && alive(b)
1960
1961
1962Pattern EC42
1963
1964..OO? cut
1965X.*X?
1966.....
1967.....
1968-----
1969
1970:8,OB
1971
1972
1973Pattern EC43
1974
1975..OO? cut
1976X.OX?
1977.*X..
1978.....
1979-----
1980
1981:8,OB
1982
1983
1984Pattern EC44
1985
1986Oo.X stop connection on edge
1987X*.X
1988----
1989
1990:8,OB
1991
1992
1993Pattern EC45
1994
1995..O. descend
1996....
1997.O.X
1998X*..
1999....
2000----
2001
2002:8,OB
2003
2004
2005Pattern EC46
2006
2007....? cut after invasion
2008O.OX?
2009..X*O
2010....?
2011....?
2012-----
2013
2014:8,OB
2015
2016
2017Pattern EC47
2018
2019X.OX block edge connection
2020X.*.
2021----
2022
2023:8,OB
2024
2025
2026Pattern EC48
2027
2028XOXX break connection
2029X*.?
2030----
2031
2032:8,OB
2033
2034
2035Pattern EC49
2036
2037.O.. block
2038X*.X
2039....
2040....
2041----
2042
2043:8,OB
2044
2045
2046Pattern EC50
2047
2048.O.. block
2049XO.X
2050.X*.
2051....
2052----
2053
2054:8,OB
2055
2056
2057Pattern EC51
2058
2059..*x? Prevent connection
2060?XO.X
2061.....
2062.....
2063-----
2064
2065:8,OB
2066
2067
2068Pattern EC52
2069
2070.*.O? Prevent connection
2071?XO.X
2072.....
2073.....
2074-----
2075
2076:8,OB
2077
2078
2079Pattern EC53
2080
2081?.O??
2082X.OX?
2083.*X..
2084.....
2085-----
2086
2087:8,OB
2088
2089
2090Pattern EC54
2091
2092..O.. prevent connection
2093XO.X.
2094..*..
2095.....
2096-----
2097
2098:8,OB
2099
2100
2101Pattern EC55
2102
2103?.O? break connection
2104.O.X
2105.X*.
2106....
2107----
2108
2109:8,OB
2110
2111?ce?
2112dOaX
2113bX*.
2114....
2115----
2116
2117;!oplay_attack(*,a,b,c,d,e)
2118
2119
2120Pattern EC56
2121# gf The constraint was too inexact, see match at B9 in score2:34.
2122# Replaced it by a connection constraint. (3.1.32)
2123
2124X*O? Prevent opponent's connection under
2125...X
2126----
2127
2128:8,OB
2129
2130B*O?
2131...A
2132----
2133
2134;oplay_connect(A,B) && !oplay_connect(*,A,B)
2135
2136
2137Pattern EC57
2138
2139??O?? Connect underneath by attaching
2140O.X.O
2141..*..
2142.....
2143-----
2144
2145:|,C
2146
2147??O??
2148OdXaO
2149fe*bc
2150.....
2151-----
2152
2153;oplay_attack_either(*,a,b,c,a,c) && oplay_attack_either(*,d,e,f,d,f)
2154;&& !oplay_defend_both(*,b,a,d,e,b,d)
2155;&& !oplay_defend_both(*,e,d,a,b,e,a)
2156
2157
2158Pattern EC58
2159
2160O.X.O connect!
2161O.*..
2162.....
2163.....
2164-----
2165
2166:8,C
2167
2168OfIaO
2169Od*bc
2170hge..
2171.....
2172-----
2173
2174;!oplay_defend_both(*,b,a,b,I) && oplay_attack_either(*,a,b,c,a,c)
2175;&& oplay_attack_either(*,b,a,d,e,f,g,h,f,h)
2176;&& !oplay_defend_both(*,b,a,d,e,g,f,g,I)
2177
2178
2179Pattern EC59
2180
2181.XO.X hane to prevent connection
2182.*..X
2183-----
2184
2185:8,OB
2186
2187.Xa.X
2188.*..X
2189-----
2190
2191;!oplay_attack(*,a)
2192
2193
2194Pattern EC60
2195# tm added constraint (3.1.18)
2196# gf Changed B classification to C. (3.1.18)
2197
2198?O.. protect cut
2199XO*X
2200XXO.
2201....
2202----
2203
2204:8,OC
2205
2206?O..
2207XO*X
2208XXcA
2209...B
2210----
2211
2212; xplay_attack(A,B,c) || xplay_attack(*,c)
2213
2214
2215Pattern EC60a
2216# tm New Pattern (3.1.18)
2217# gf Changed B classification to C. (3.1.18)
2218
2219?O.. indirectly protect cut
2220XO.X
2221XXO*
2222....
2223----
2224
2225:8,OC
2226
2227?b..
2228XOaX
2229XXO*
2230....
2231----
2232
2233; oplay_defend_both(*,a,*,b)
2234
2235
2236Pattern EC61
2237
2238OoOO? prevent connection
2239X.X*X
2240.....
2241-----
2242
2243:8,OB
2244
2245
2246Pattern EC62
2247
2248.X.?? defend the extension
2249O*...
2250....O
2251.....
2252.....
2253-----
2254
2255:8,C
2256
2257
2258Pattern EC63
2259# gf Fixed value removed and constraint revised. (3.5.2)
2260
2261?X? connect underneath if X can't cut
2262OXO
2263.*.
2264...
2265---
2266
2267:|,XC
2268
2269?X?
2270aXb
2271.*.
2272...
2273---
2274
2275;!oplay_disconnect(*,a,b)
2276
2277
2278Pattern EC64
2279# gf Removed fixed value. (3.5.2)
2280
2281..xxx threaten connection
2282.O.Xx
2283.*X.O
2284.....
2285-----
2286
2287:8,OXead
2288
2289..xxx
2290.O.Xx
2291.*X.a
2292.....
2293-----
2294
2295; lib(a)>2
2296
2297
2298Pattern EC65
2299# gf Reduced shape value. (3.5.2)
2300
2301ox..o Connect underneath
2302O*X.O
2303..O..
2304.....
2305-----
2306
2307:8,XC,shape(3)
2308
2309
2310Pattern EC66
2311# gf Reduced shape value. (3.5.2)
2312
2313OXX.O connect below
2314.*O..
2315.....
2316-----
2317
2318:8,XCad,shape(3)
2319
2320OXX.O
2321b*Oa.
2322.....
2323-----
2324
2325; oplay_attack(*,a,a) && oplay_attack(*,b,b)
2326
2327
2328Pattern EC67
2329# gf Reduced shape value. (3.5.2)
2330
2331OXX.O connect below
2332.O*..
2333.....
2334-----
2335
2336:8,XCad,shape(3)
2337
2338OXX.O
2339bO*a.
2340.....
2341-----
2342
2343; oplay_attack(*,a,a)&&oplay_attack(*,b,b)
2344
2345
2346Pattern EC68
2347
2348O.XOo connect underneath
2349..*.o
2350.....
2351-----
2352
2353:8,XCad
2354
2355O.Abo
2356..*.o
2357.....
2358-----
2359
2360; lib(A)<4 && lib(b)>2 && !attack(A)
2361
2362
2363Pattern EC69
2364
2365?OXx?
2366X*..O
2367..O..
2368.....
2369-----
2370
2371:8,XCad
2372
2373?OXx?
2374A*..O
2375..O..
2376.....
2377-----
2378
2379; does_attack(*,A)
2380
2381
2382Pattern EC70
2383# constraint looks for shortage of liberties
2384
2385oOX.O connect with ko
2386O.*..
2387-----
2388
2389:8,XCd
2390
2391oOXbO
2392Oc*ad
2393-----
2394
2395; !oplay_attack(*,a,b,c,d,*,c)
2396
2397
2398Pattern EC71
2399# constraint looks for shortage of liberties
2400
2401xXO.X prevent ko connection
2402X.*..
2403-----
2404
2405:8,Ba
2406
2407xXObX
2408Xc*ad
2409-----
2410
2411; !xplay_attack(*,a,b,c,d,*,c)
2412
2413
2414Pattern EC73
2415
2416?OXXX? secure connection
2417..OO*O
2418......
2419------
2420
2421:8,XC,value(5)
2422
2423?aXXX?
2424..OO*O
2425......
2426------
2427
2428; lib(a)==2 && !dead(a)
2429
2430
2431Pattern EC74
2432
2433?..ooo connect under
2434..X.Oo
2435O.*..o
2436......
2437......
2438------
2439
2440:8,XCd,shape(2)
2441
2442
2443Pattern EC75
2444
2445?..ooo connect under
2446..X*Oo
2447O.OX.o
2448......
2449......
2450------
2451
2452:8,Cd,shape(3)
2453
2454
2455Pattern EC76
2456#gf New pattern. (3.1.12)
2457
2458?..O? cut!
2459...OX
2460.XOXX
2461..*..
2462-----
2463
2464:8,B
2465
2466?..b?
2467..abX
2468.XOXX
2469..*..
2470-----
2471
2472;alive(b) && oplay_attack(*,a,a)
2473
2474
2475Pattern EC77
2476#tm New Pattern (3.1.16)
2477#tm modified (3.1.17)
2478
2479|..x clamp!
2480|.*.
2481|.X.
2482|XOO
2483
2484:8,OXe
2485
2486|..x
2487|.*.
2488|.A.
2489|XOO
2490
2491;oplay_defend(*,A) != WIN
2492
2493
2494Pattern EC78
2495#tm New Pattern (3.1.18)
2496# gf Revised constraint. (3.3.12)
2497# see trevora:610
2498#FIXME: There's still a problem here, in that this sacrifice
2499# is deemed unsafe, and not played....
2500# gf Is this really a cut pattern? (3.3.13)
2501
2502OOO block or cut into black's territory.
2503...
2504*X.
2505...
2506---
2507
2508:8,sOXe
2509
2510OOO
2511a..
2512*Xb
2513...
2514---
2515
2516; safe_omove(*)
2517; || !oplay_attack(*,a,b,b)
2518
2519
2520Pattern EC79
2521# gf New Pattern (3.3.13)
2522
2523X.O connect
2524X*.
2525O..
2526---
2527
2528:8,C
2529
2530
2531Pattern EC80
2532# gf New Pattern (3.3.15)
2533
2534XOOX block edge connection
2535X.*.
2536----
2537
2538:8,OB
2539
2540XOOX
2541Xa*.
2542----
2543
2544;xplay_attack(*,a,a)
2545
2546
2547Pattern EC81
2548# gf New Pattern (3.3.16)
2549# See nngs1:31
2550
2551XXX.Ox connect all stones
2552OO..*X
2553....O?
2554......
2555------
2556
2557:8,XC
2558
2559
2560##############################################
2561# First line, one space, cuts and connections.
2562##############################################
2563
2564Pattern EC101
2565
2566XOX prevent connection
2567.*.
2568---
2569
2570:|,OB
2571
2572XOX
2573a*b
2574---
2575
2576;xdefend_against(*,a) && xdefend_against(*,b)
2577
2578
2579Pattern EC102
2580
2581XOX prevent connection
2582..*
2583---
2584
2585:8,OB
2586
2587XcX
2588ab*
2589---
2590
2591;xdefend_against(b,a) && xdefend_against(b,*) && !oplay_attack(*,c)
2592
2593
2594Pattern EC103
2595
2596XOX? followup
2597.*OX
2598----
2599
2600:8,B
2601
2602XaX?
2603.*OX
2604----
2605
2606;!dead(a)
2607
2608
2609Pattern EC104
2610
2611OXO make connection
2612.*.
2613---
2614
2615:|,C
2616
2617OXO
2618a*b
2619---
2620
2621;odefend_against(*,a) && odefend_against(*,b)
2622
2623
2624Pattern EC105
2625
2626XO? don't allow connection underneath
2627.*X
2628---
2629
2630:8,OB
2631
2632BO?
2633a*X
2634---
2635
2636;(safe_xmove(*) && xplay_defend_both(*,a,*,B)) || xdefend_against(a,*)
2637
2638
2639Pattern EC106
2640
2641XO? don't allow connection underneath
2642X*X
2643---
2644
2645:8,nOB
2646
2647
2648Pattern EC107
2649
2650?O? Cut on first line
2651X*X
2652---
2653
2654:8,OB
2655
2656
2657Pattern EC108
2658
2659XOX block edge connection
2660x*x
2661---
2662
2663:8,nOB
2664
2665AOB
2666x*x
2667---
2668
2669;(!attack(A)) && (!attack(B))
2670
2671
2672Pattern EC109
2673
2674?X?
2675O*O
2676---
2677
2678:|,nC
2679
2680
2681Pattern EC110
2682# Probably redundant
2683
2684?OX*O connect under
2685o.O..
2686-----
2687
2688:8,C
2689
2690
2691##############################################
2692# First line, two spaces, cuts and connections.
2693##############################################
2694
2695
2696Pattern EC201
2697
2698XO.. don't allow connection underneath
2699.*.X
2700----
2701
2702:8,OB
2703
2704BO..
2705a*.X
2706----
2707
2708;safe_xmove(*) && xplay_defend_both(*,a,*,B)
2709
2710
2711Pattern EC202
2712
2713XO*. don't allow connection underneath
2714...X
2715----
2716
2717:8,nOB
2718
2719BO*.
2720ac.X
2721----
2722
2723;xplay_defend_both(c,a,c,B)
2724
2725
2726Pattern EC203
2727
2728XO.. don't allow connection underneath
2729X*.X
2730----
2731
2732:8,nOB
2733
2734
2735Pattern EC204
2736
2737XO*. don't allow connection underneath
2738X..X
2739----
2740
2741:8,OB
2742
2743XO*.
2744Xa.X
2745----
2746
2747;safe_xmove(a)
2748
2749
2750Pattern EC205
2751
2752XO.O don't allow connection underneath
2753x.*X
2754----
2755
2756:8,OB
2757
2758XOaO
2759xb*X
2760----
2761
2762;odefend_against(*,a) && oplay_defend(*,b,*)
2763
2764
2765Pattern EC206
2766# Probably redundant
2767
2768?XO.OX? prevent connection
2769x.X*..x
2770-------
2771
2772:8,C
2773
2774
2775Pattern EC207
2776
2777O.XO Connect at edge
2778..*.
2779----
2780
2781:8,nC
2782
2783ObEO
2784da*c
2785----
2786
2787;oplay_attack_either(*,c,E,c) && oplay_attack_either(*,b,a,d,b,d)
2788;&& oplay_attack(*,a,b,c,E) == WIN
2789
2790
2791Pattern EC208
2792# Followup to EC207
2793
2794O*XO Connect at edge
2795.XO.
2796----
2797
2798:8,nC
2799
2800O*BO
2801.XOa
2802----
2803
2804;oplay_attack(*,a,B)
2805
2806
2807Pattern EC209
2808# Probably redundant.
2809
2810X.OX block edge connection
2811X.*.
2812----
2813
2814:8,OB
2815
2816X.OB
2817X.*a
2818----
2819
2820;xdefend_against(*,a) && !xplay_attack(*,B)
2821
2822
2823Pattern EC210
2824
2825X.OX Cut at edge
2826..*.
2827----
2828
2829:8,nOB
2830
2831XbeX
2832da*c
2833----
2834
2835;xplay_attack_either(*,c,e,c) && xplay_attack_either(*,b,a,d,b,d)
2836;&& xplay_attack(*,a,b,c,e)
2837
2838
2839Pattern EC211
2840# Probably redundant.
2841
2842X.OO block edge connection
2843X.*X
2844----
2845
2846:8,OB
2847
2848
2849Pattern EC212
2850
2851??XoO Defend monkey jump
2852?O*oo
2853-----
2854
2855:8,C
2856
2857??XoO
2858?a*oo
2859-----
2860
2861;lib(a)>=3
2862
2863
2864Pattern EC213
2865
2866?..XO Defend monkey jump
2867.O.*o
2868-----
2869
2870:8,C
2871
2872
2873Pattern EC214
2874
2875?xx.. Defend inverse monkey jump
2876o.XO.
2877O.*..
2878-----
2879
2880:8,C
2881
2882
2883Pattern EC215
2884
2885??OO? Cut through monkey jump.
2886X..O?
2887..*Xx
2888-----
2889
2890:8,OB
2891
2892
2893Pattern EC216
2894
2895?X..O Monkey jump edge connection
2896O*..o
2897-----
2898
2899:8,C
2900
2901?X..O
2902a*..o
2903-----
2904
2905;lib(a)>=3
2906
2907
2908Pattern EC217
2909
2910?O??
2911X*.X
2912----
2913
2914:8,OB
2915
2916?O??
2917B*aC
2918----
2919
2920;lib(B)>1 && lib(C)>1 && xplay_attack(*,a,a)
2921
2922
2923Pattern EC218
2924
2925??o? Connect underneath
2926OX.X
2927.*.O
2928----
2929
2930:8,C
2931
2932
2933######################################################################
2934#
2935# Splitting and other strategically attacking (or defending) moves
2936#
2937# These patterns do not have the C or B classification but they
2938# often have an effect on connections.
2939#
2940######################################################################
2941
2942
2943####################################
2944#
2945# Center splitting patterns
2946#
2947####################################
2948
2949Pattern CS1
2950
2951?X?X? pattern to make two partial connections
2952O.O.O
2953.....
2954..*..
2955?????
2956
2957:|,Xd
2958
2959?A?B?
2960O.O.O
2961.....
2962..*..
2963?????
2964
2965;lib(A)>1 && lib(B)>1
2966
2967
2968Pattern CS2
2969
2970??O. pattern to connect
2971X..O
2972.*..
2973O.??
2974
2975:8,OXead
2976
2977
2978Pattern CS3
2979
2980...X Move out and separate
2981.*..
2982X.O?
2983
2984:8,OXad
2985
2986
2987Pattern CS4
2988
2989.X.O.?? pattern to separate the opponent
2990.....??
2991...*.??
2992.....X.
2993
2994:8,OXad
2995
2996
2997Pattern CS5
2998
2999??x?? Play out to separate the opponent
3000.X.O.
3001..*..
3002.....
3003.....
3004...X?
3005
3006:8,OXad
3007
3008
3009Pattern CS6
3010
3011??O.? Play out to separate the opponent. Only play if no risk for cut at a below.
3012.X.O.
3013..*..
3014.....
3015.....
3016...X?
3017
3018:8,OXad
3019
3020??Oa?
3021.X.O.
3022..*..
3023.....
3024.....
3025...X?
3026
3027;!safe_xmove(a)
3028
3029
3030Pattern CS7
3031
3032...O?? jump to separate
3033.X...?
3034...*..
3035.....X
3036
3037:8,OXad
3038
3039
3040Pattern CS8
3041
3042...O.. jump to separate
3043.X...X
3044...*..
3045
3046:8,OXad
3047
3048
3049Pattern CS9
3050
3051?????? leap to connect
3052......
3053O.*..O
3054......
3055??????
3056
3057:8,OXad,jump_out_helper
3058
3059
3060Pattern CS10
3061
3062??.?? jump to separate opponent
3063?.O..
3064X...X
3065?.*..
3066??.??
3067
3068:8,OXad
3069
3070
3071Pattern CS11
3072
3073..X Cut across large knight's move
3074...
3075.*O
3076.X?
3077
3078:8,OXad
3079
3080b.X
3081...
3082.*a
3083.X?
3084
3085;!weak(a) || !xmoyo(b)
3086
3087
3088Pattern CS12
3089
3090?OO? jump across
3091...X
3092X*..
3093
3094:8,OXad
3095
3096
3097Pattern CS13
3098
3099.X.. attach
3100.*.O
3101....
3102..X.
3103
3104:8,OXad
3105
3106
3107Pattern CS14
3108
3109??.?? jump to separate opponent
3110?.O..
3111X.*.X
3112?....
3113?oO??
3114
3115:8,OXad
3116
3117
3118Pattern CS15
3119
3120.O..
3121X*.X
3122....
3123oO??
3124
3125:8,OXa
3126
3127
3128Pattern CS16
3129# gf Revised constraint. (3.5.3)
3130# See gifu03:308.
3131
3132?O.x
3133X*.X
3134
3135:8,OXa
3136
3137?c.x
3138A*dB
3139
3140;!same_dragon(A,B) && (weak(c) || xplay_connect(*,d,A,B))
3141
3142
3143Pattern CS17
3144
3145xXx Even a computer answers a peep.
3146O*O
3147...
3148
3149:8,OXd
3150
3151xXx
3152b*c
3153.a.
3154
3155;xplay_break_through(*,a,b,a,c)
3156
3157
3158Pattern CS18
3159
3160?...?
3161O.*.O
3162o...o
3163?XxX?
3164
3165:|,OXad
3166
3167
3168Pattern CS19
3169# gf Corrected symmetry. (3.1.23)
3170
3171X...
3172O.*.
3173O..X
3174
3175:8,OXad
3176
3177
3178Pattern CS20a
3179# gf Corrected symmetry. (3.1.23)
3180# gf Split pattern. (3.3.16)
3181
3182X..
3183O*.
3184?xX
3185
3186:8,OXa
3187
3188
3189Pattern CS20b
3190# gf Corrected symmetry. (3.1.23)
3191# gf Split pattern. (3.3.16)
3192
3193X..
3194O*.
3195?xX
3196
3197:8,OXd
3198
3199A..
3200O*.
3201?xB
3202
3203;!oplay_connect(*,A,B)
3204
3205
3206Pattern CS21
3207
3208OOXX cutting tesuji
3209.X..
3210.*..
3211..O?
3212
3213:8,OXa
3214
3215aaXX
3216.X..
3217.*..
3218..O?
3219
3220;lib(a)>2
3221
3222
3223Pattern CS22
3224
3225?..?? when caught in a crosscut, extend
3226.OX.?
3227?XO*.
3228??..?
3229
3230:8,OXad
3231
3232
3233Pattern CS23
3234
3235?.X. good relationship
3236?O*.
3237....
3238X...
3239?.O?
3240
3241:8,OXad
3242
3243
3244Pattern CS24
3245# This is part of a standard sequence in 4 stone games
3246
3247...O.
3248.....
3249O.*X.
3250.....
3251.....
3252
3253:8,OXd
3254
3255...O.
3256.....
3257O.*A.
3258.....
3259.....
3260
3261;!weak(A)
3262
3263
3264Pattern CS25
3265
3266...O.
3267.....
3268O.OX.
3269..X*.
3270.....
3271
3272:8,sOXd
3273
3274
3275Pattern CS26
3276
3277?X?? make shape
3278.O.?
3279...?
3280.*..
3281?..?
3282
3283:8,OX,shape(1)
3284
3285
3286####################################
3287#
3288# Edge splitting patterns
3289#
3290####################################
3291
3292Pattern ES1
3293
3294....O attach
3295O.X..
3296..*.O
3297.....
3298-----
3299
3300:8,Xd
3301
3302
3303Pattern ES2
3304
3305....O attach
3306O*X..
3307.XO.O
3308.....
3309-----
3310
3311:8,Xd
3312
3313
3314Pattern ES3a
3315# gf New pattern. (3.5.3)
3316
3317..O..
3318....X invade with support from above
3319X.*..
3320.....
3321.....
3322-----
3323
3324:8,OEa
3325
3326..a..
3327....X
3328X.*..
3329.....
3330.....
3331-----
3332
3333;weakness(a)<0.7
3334
3335
3336Pattern ES3b
3337# gf New pattern. (3.5.3)
3338
3339..O..
3340....X invade with support from above
3341X.*..
3342.....
3343.....
3344-----
3345
3346:8,Oea
3347
3348..a..
3349..b.X
3350X.*..
3351.....
3352.....
3353-----
3354
3355;!weak(a) && oplay_connect(*,b,*,a)
3356
3357
3358######################################################################
3359#
3360# Edge block/expand patterns
3361#
3362# Moves that expand own position along the edge in some way or stops
3363# opponent from expanding his position. This includes monkey jump,
3364# various sliding moves, blocks, some extensions along the edge. This
3365# category contains very many patterns and may need to be split sooner
3366# or later. Some extensions along the edge can be found in the fuseki
3367# category.
3368#
3369# These patterns are further subdivided into the following classes:
3370#
3371# Slides
3372# Jumping underneath
3373# Center expansions
3374# Checking extensions
3375# Edge expansions
3376# Third and fourth line blocks
3377# Second line blocks
3378# First line blocks
3379# Monkey jump and other intrusions on first and second lines
3380# Third line push or extend
3381# Second line push or extend
3382# First line push
3383# Third line hane
3384# Second line hane
3385# First line hane
3386# Hane on top
3387# Attach
3388# Strengthen stones
3389# Block intrusion from above
3390# Draw back
3391# Miscellaneous
3392#
3393######################################################################
3394
3395########
3396# Slides
3397########
3398
3399Pattern EB4
3400
3401?X?o. slide
3402...O.
3403.*...
3404.....
3405-----
3406
3407:8,OXed
3408
3409?X?o.
3410..ac.
3411.*b..
3412.....
3413-----
3414
3415;!oplay_attack(*,a,b,c)
3416
3417
3418Pattern EB5
3419# gf Constraint added. See gunnar:86. (3.7.10)
3420
3421??..X? long slide
3422oO....
3423....*.
3424......
3425------
3426
3427:8,OXed
3428
3429??..X?
3430oca...
3431..b.*.
3432......
3433------
3434
3435;!oplay_disconnect(*,a,b,*,c)
3436
3437
3438Pattern EB6
3439
3440...?? slide toward opponent's position
3441.O..X
3442...*.
3443.....
3444-----
3445
3446:8,OXe
3447
3448
3449Pattern EB7
3450
3451?XX.. slide
3452OO..X
3453...*.
3454.....
3455-----
3456
3457:8,OXe
3458
3459
3460Pattern EB8
3461# tm added d class (3.1.20)
3462
3463.X.. slide
3464O..X
3465..*.
3466....
3467----
3468
3469:8,OXed
3470
3471
3472Pattern EB9
3473# tm added d class (3.1.20)
3474
3475.X.?? slide
3476...OO
3477.*...
3478.....
3479-----
3480
3481:8,OXed
3482
3483
3484Pattern EB10
3485# tm added d class (3.1.20)
3486
3487?...X? large slide
3488?O...?
3489O...*.
3490.....?
3491------
3492
3493:8,OXed
3494
3495
3496Pattern EB11
3497
3498?.X... play beneath
3499?....O
3500..*...
3501......
3502......
3503------
3504
3505:8,OXed
3506
3507
3508####################
3509# Jumping underneath
3510####################
3511
3512
3513Pattern EB102
3514
3515?XX.?? Jump underneath
3516oO.*.?
3517O....?
3518.....?
3519------
3520
3521:8,OXed
3522
3523
3524Pattern EB104
3525
3526?.X.o jump under a stone on 4-th row
3527.*..o
3528....O
3529....o
3530-----
3531
3532:8,OXed
3533
3534
3535Pattern EB105
3536
3537..... knight's move for defense
3538.X...
3539..*..
3540O....
3541.....
3542.....
3543-----
3544
3545:8,OXed
3546
3547
3548Pattern EB106
3549
3550......? knight's move for defense
3551.X.....
3552...*...
3553.O.....
3554.......
3555.......
3556-------
3557
3558:8,OXed
3559
3560
3561Pattern EB107
3562
3563.X.. knight's move to come out
3564..*.
3565O...
3566....
3567----
3568
3569:8,OXead
3570
3571
3572Pattern EB108
3573
3574..... jump under
3575.*.XO
3576...O.
3577.....
3578-----
3579
3580:8,OXe
3581
3582
3583Pattern EB109
3584
3585?.X.. jump under
3586O..*.
3587O....
3588.....
3589-----
3590
3591:8,OXed
3592
3593
3594Pattern EB110
3595
3596?X?.?? jump under
3597O..*.?
3598O....?
3599o....?
3600------
3601
3602:8,OXed
3603
3604
3605Pattern EB111
3606# if EB110 does not defend, this one may
3607
3608?X?.? jump under
3609O.*oo
3610O....
3611o....
3612-----
3613
3614:8,OXed
3615
3616
3617Pattern EB112
3618
3619|oOO? jump under
3620|...X
3621|..*?
3622|....
3623|...?
3624+----
3625
3626:8,OXed
3627
3628
3629Pattern EB113
3630
3631XX.. jump out to defend
3632O.*o
3633O...
3634....
3635----
3636
3637:8,OXe
3638
3639
3640Pattern EB114
3641
3642??X..?
3643O....?
3644O..*.?
3645.....?
3646.....?
3647------
3648
3649:8,OXed
3650
3651
3652###################
3653# Center expansions
3654###################
3655
3656
3657Pattern EB201
3658
3659..... jump when stone on third row is approached
3660.*...
3661.....
3662.O.X.
3663.....
3664.....
3665-----
3666
3667:8,OXd
3668
3669
3670Pattern EB202
3671
3672..... Jump out!
3673..*..
3674.....
3675X.O.X
3676.....
3677.....
3678-----
3679
3680:8,OXd
3681
3682
3683Pattern EB203
3684
3685....?? knight's move to come out
3686..*.X?
3687.....O
3688...O..
3689......
3690------
3691
3692:8,Oe
3693
3694
3695Pattern EB204
3696
3697.... match opponent's jump
3698X.*.
3699....
3700X.O.
3701....
3702....
3703----
3704
3705:8,OE
3706
3707
3708Pattern EB205
3709
3710.*.. jump into center
3711...X
3712.O..
3713...O
3714....
3715----
3716
3717:8,OXd
3718
3719
3720Pattern EB206
3721
3722??.?? jump out
3723?.*.?
3724X...?
3725..O.X
3726.....
3727.....
3728-----
3729
3730:8,OXd
3731
3732
3733Pattern EB207
3734
3735......? push up to expand
3736.......
3737..X*...
3738X.XO..X
3739XOO....
3740.......
3741.......
3742-------
3743
3744:8,OXd
3745
3746
3747Pattern EB208
3748
3749..... attach
3750..X*.
3751O....
3752..O..
3753.....
3754.....
3755-----
3756
3757:8,OXd
3758
3759
3760Pattern EB209
3761
3762ooo...... low approach
3763ooo....X.
3764ooo..*...
3765.........
3766.........
3767---------
3768
3769:8,j,shape(-2)
3770
3771
3772Pattern EB210
3773
3774??????x?? high approach deemed bad
3775?????..??
3776oo...*.X?
3777ooo....xx
3778.......??
3779........?
3780---------
3781
3782:8,-,shape(-8)
3783
3784
3785Pattern EB211
3786
3787??????x?? far high approach deemed bad
3788?????..??
3789oo..*..X?
3790ooo....xx
3791.......??
3792........?
3793---------
3794
3795:8,-,shape(-8)
3796
3797
3798#####################
3799# Checking extensions
3800#####################
3801
3802
3803Pattern EB301
3804
3805...... defend to prevent peep
3806.O.O..
3807.....X
3808....*.
3809......
3810------
3811
3812:8,OXed
3813
3814
3815Pattern EB302
3816
3817.O.X expand shape
3818O.*.
3819....
3820....
3821----
3822
3823:8,OXe
3824
3825
3826Pattern EB303
3827
3828....xx jump toward opponent's position
3829.O.*.X
3830......
3831......
3832------
3833
3834:8,OXe
3835
3836
3837Pattern EB304
3838
3839O.... extend
3840..*.X
3841.....
3842.....
3843-----
3844
3845:8,OXe
3846
3847
3848Pattern EB305
3849
3850X.... extend
3851..*.O
3852.....
3853.....
3854-----
3855
3856:8,OXe
3857
3858
3859Pattern EB306
3860# gf Don't attach a weak stone. (3.1.18)
3861
3862??.? extend and attach
3863X*.O
3864....
3865....
3866----
3867
3868:8,OXe
3869
3870??.?
3871A*.O
3872....
3873....
3874----
3875
3876;!weak(A)
3877
3878
3879Pattern EB307
3880
3881??O? extend and attach
3882X*.O
3883....
3884....
3885----
3886
3887:8,OXe
3888
3889
3890Pattern EB308
3891
3892O... block on third line
3893.*.X
3894....
3895....
3896----
3897
3898:8,OXe
3899
3900
3901Pattern EB309
3902
3903.O.. diagonal attachment on 3-rd line
3904..*X
3905....
3906....
3907----
3908
3909:8,OXe
3910
3911
3912Pattern EB310
3913
3914X..O. expand base
3915.*..O
3916.....
3917.....
3918-----
3919
3920:8,OXe
3921
3922
3923Pattern EB311
3924
3925........ extend
3926.O......
3927O....*.X
3928........
3929........
3930--------
3931
3932:8,OXe
3933
3934
3935Pattern EB312
3936
3937....?
3938O....
3939..*.X
3940.....
3941.....
3942-----
3943
3944:8,OXe
3945
3946
3947Pattern EB313
3948
3949?X.O? double sente kosumi
3950?.*.?
3951?...?
3952-----
3953
3954:8,OXe
3955
3956?X.O?
3957b.*.a
3958?...?
3959-----
3960
3961;omoyo(a) && xmoyo(b)
3962
3963
3964Pattern EB314
3965
3966?o?? extend towards opponent
3967X..O
3968.*..
3969....
3970....
3971----
3972
3973:8,OXe
3974
3975
3976Pattern EB315
3977
3978O....
3979..*.X
3980.....
3981.....
3982-----
3983
3984:8,OXe
3985
3986
3987Pattern EB316
3988
3989XOO... prevent opponent's slide
3990O..*X.
3991......
3992......
3993------
3994
3995:8,OXe
3996
3997
3998Pattern EB317
3999
4000...oo block extension if X is weak
4001X..oo
4002X.*.o
4003....o
4004....o
4005-----
4006
4007:8,OXea
4008
4009...oo
4010A..oo
4011A.*.o
4012....o
4013....o
4014-----
4015
4016;weak(A)
4017
4018
4019#################
4020# Edge expansions
4021#################
4022
4023
4024Pattern EB401
4025
4026O...? jump along edge
4027..*.?
4028....?
4029-----
4030
4031:8,Oe,jump_out_far_helper
4032
4033
4034Pattern EB402
4035
4036....x
4037O.*.x jump along edge
4038....?
4039....?
4040-----
4041
4042:8,Oe,jump_out_far_helper
4043
4044....a
4045O.*.b
4046....?
4047....?
4048-----
4049
4050; x_alive_somewhere(a,b)
4051
4052
4053Pattern EB403
4054
4055?..xx jump along edge
4056O...x
4057...*.
4058.....
4059-----
4060
4061:8,Oe,jump_out_far_helper
4062
4063?..dx
4064Oa..e
4065cb.*.
4066.....
4067-----
4068
4069;oplay_attack(*,a,b,c,c) && x_alive_somewhere(d,e)
4070
4071
4072Pattern EB404
4073
4074oO... jump along edge
4075O..*.
4076.....
4077-----
4078
4079:8,Oe,jump_out_helper
4080
4081
4082Pattern EB405
4083
4084OO... jump along edge
4085...*.
4086.....
4087-----
4088
4089:8,Oe,jump_out_helper
4090
4091
4092Pattern EB406
4093
4094??x.? jump along edge
4095OO.*.
4096.....
4097.....
4098-----
4099
4100:8,Oe,jump_out_helper
4101
4102
4103Pattern EB407
4104# gf Added constraint. (3.5.3)
4105
4106oO.... jump along edge
4107O...*.
4108......
4109------
4110
4111:8,Oe,jump_out_helper
4112
4113oa....
4114O...*.
4115......
4116------
4117
4118;!oplay_disconnect(*,*,a)
4119
4120
4121Pattern EB408
4122
4123o..? jump along edge
4124O.*.
4125....
4126----
4127
4128:8,Oe,jump_out_helper
4129
4130
4131Pattern EB409
4132
4133o.... jump along edge
4134O..*.
4135.....
4136-----
4137
4138:8,Oe,jump_out_helper
4139
4140o....
4141O..*.
4142.....
4143-----
4144
4145;oarea(*)
4146
4147
4148Pattern EB410
4149
4150...??? defend cut
4151O....?
4152XO*..?
4153XXO..?
4154.....?
4155.....?
4156------
4157
4158:8,ad
4159
4160
4161Pattern EB411
4162# gf Reduced shape value. (3.5.2)
4163
4164...??oo
4165O....oo
4166XO*..oo
4167XXO..oo
4168.....oo
4169.....oo
4170-------
4171
4172:8,ead,shape(3)
4173
4174...??oo
4175O....oo
4176XO*..ab
4177XXO..cd
4178.....oo
4179.....oo
4180-------
4181
4182; o_alive_somewhere(a,b,c,d)
4183
4184
4185Pattern EB412
4186# db added (3.1.8)
4187# gf Added OX classification. (3.3.3)
4188
4189X??? push along the edge
4190OXX.
4191.O*.
4192....
4193----
4194
4195:8,OXed,shape(3)
4196
4197
4198##############################
4199# Third and fourth line blocks
4200##############################
4201
4202
4203Pattern EB501
4204# gf Reduced shape value. (3.5.2)
4205
4206....? hane if attached
4207.*X.X
4208..O..
4209.....
4210.....
4211-----
4212
4213:8,ed,shape(3)
4214
4215
4216Pattern EB501a
4217# gf Reduced shape value. (3.5.2)
4218
4219?..X.? push in to stabilize
4220..OX.X
4221...O*.
4222......
4223......
4224------
4225
4226:8,ed,shape(3)
4227
4228
4229Pattern EB502
4230
4231..O.X. block if attached
4232.*X...
4233......
4234......
4235------
4236
4237:8,Oe,followup(5)
4238
4239
4240Pattern EB503
4241
4242..O..X block if attached
4243.*X...
4244......
4245......
4246------
4247
4248:8,Oe
4249
4250
4251Pattern EB504
4252
4253?.O.o block
4254xX*.o
4255.....
4256.....
4257-----
4258
4259:8,Oe
4260
4261
4262Pattern EB505
4263
4264??.?? hane on the 4-th line
4265.*X..
4266O.OO.
4267?....
4268?....
4269-----
4270
4271:8,Oe
4272
4273
4274Pattern EB506
4275
4276??.?? hane on the 4-th line
4277.*X..
4278x.OO.
4279?....
4280?....
4281-----
4282
4283:8,Oe
4284
4285??.??
4286.*B..
4287xaOO.
4288?....
4289?....
4290-----
4291
4292;oplay_attack_either(*,a,a,B)
4293
4294
4295Pattern EB507
4296# tm Reduced shape value from 4 to 3 (3.1.20)
4297# gf Removed shape value. (3.3.16)
4298
4299?o??
4300?O.. block
4301X*..
4302....
4303....
4304----
4305
4306:8,Oe
4307
4308
4309Pattern EB507a
4310# tm New Pattern (3.1.20) (see strategy:26)
4311# gf Reduced shape value. (3.5.2)
4312
4313?o??
4314?O.. block
4315X*..
4316O...
4317....
4318----
4319
4320:8,Oe,shape(3)
4321
4322
4323Pattern EB508
4324# gf FIXME: This pattern seems to need more context or a constraint. (3.3.12)
4325
4326..O. Block opponent's extension on third line
4327....
4328.*.X
4329...?
4330....
4331----
4332
4333:8,OE
4334
4335
4336Pattern EB509
4337
4338?... block to prevent incursion
4339XO.O
4340X*..
4341....
4342....
4343----
4344
4345:8,Oe
4346
4347
4348Pattern EB510
4349
4350.O.O blocking is very large
4351X*..
4352....
4353....
4354----
4355
4356:8,Oe
4357
4358
4359Pattern EB511
4360
4361.O.? endgame move
4362O.*X
4363....
4364....
4365----
4366
4367:8,OXe
4368
4369
4370Pattern EB512
4371
4372..*X attach to immobilize 1-st line stone
4373?O..
4374X...
4375----
4376
4377:8,Oe
4378
4379
4380Pattern EB513
4381
4382...... bend is urgent
4383X.X*..
4384.XOO..
4385......
4386......
4387------
4388
4389:8,Oe
4390
4391
4392Pattern EB514
4393
4394?O.? connect against peep (third line)
4395X*..
4396?O.?
4397....
4398....
4399----
4400
4401:8,ne
4402
4403
4404Pattern EB515
4405
4406?OO?? jump down and block
4407?....
4408..*.X
4409.....
4410.....
4411-----
4412
4413:8,Oe
4414
4415
4416Pattern EB516
4417
4418o.....o kosumi block
4419O.....o
4420.*.X.O.
4421.......
4422.......
4423-------
4424
4425:8,Oe
4426
4427
4428Pattern EB517
4429
4430?O.O? block
4431..*XX
4432.....
4433.....
4434-----
4435
4436:8,OXe
4437
4438
4439Pattern EB518
4440
4441o.o block
4442x*.
4443XO.
4444X..
4445---
4446
4447:8,OXe
4448
4449
4450Pattern EB519
4451
4452|...O block in corner
4453|..*.
4454|...X
4455|....
4456+----
4457
4458:8,OXe
4459
4460
4461Pattern EB520
4462
4463..... block
4464XO...
4465.*...
4466.....
4467.....
4468-----
4469
4470:8,Oe
4471
4472.....
4473XO...
4474.*..a
4475.....
4476.....
4477-----
4478
4479;omoyo(a)
4480
4481
4482Pattern EB521
4483# gf FIXED: This fixed value looks dangerous. (3.3.12)
4484# gf Removed fixed value and E classification. (3.5.2)
4485
4486..O? urgent atari
4487..OX
4488.*XO
4489....
4490....
4491----
4492
4493:8,Xd
4494
4495..O?
4496..OX
4497.*Xa
4498....
4499....
4500----
4501
4502; attack(a) && !defend(a)
4503
4504
4505####################
4506# Second line blocks
4507####################
4508
4509
4510Pattern EB601
4511
4512?Oo? block on second line
4513XO.?
4514.X*o
4515...?
4516----
4517
4518:8,OXead
4519
4520
4521Pattern EB602
4522
4523?Oo? block on second line
4524XO.?
4525..*o
4526.X.?
4527----
4528
4529:8,OXe
4530
4531
4532Pattern EB603
4533
4534?.O block on second line if safe from cut and clamp
4535.*X
4536?..
4537---
4538
4539:8,OXea
4540
4541?aO
4542b*D
4543?c.
4544---
4545
4546;oplay_attack_either(*,a,a,D)
4547;&& (oplay_attack(*,b,D) || oplay_attack_either(*,b,c,a,a,D))
4548
4549
4550Pattern EB604
4551
4552?.O block on second line if safe from cut
4553O*X
4554?..
4555---
4556
4557:8,OXe
4558
4559?aO
4560O*X
4561?..
4562---
4563
4564;odefend_against(*,a)
4565
4566
4567Pattern EB605
4568
4569?.O block on second line if safe from cut
4570X*X
4571?..
4572---
4573
4574:8,OXe
4575
4576?.O
4577A*X
4578?..
4579---
4580
4581;does_attack(*,A)
4582
4583
4584Pattern EB606
4585
4586?OOO block on second line
4587X*..
4588....
4589----
4590
4591:8,OXed
4592
4593
4594Pattern EB608
4595
4596OO? block on second row
4597.*X
4598..?
4599---
4600
4601:8,OXe
4602
4603
4604Pattern EB609
4605
4606X.O. Block off the edge
4607.X*.
4608....
4609----
4610
4611:8,OXe
4612
4613
4614Pattern EB610
4615
4616O..O?
4617O..*X
4618.....
4619-----
4620
4621:8,OXe
4622
4623
4624Pattern EB611
4625
4626OOXX block on second line
4627*X..
4628....
4629----
4630
4631:8,OXe
4632
4633
4634Pattern EB612
4635
4636????
4637.O..
4638XXO.
4639..*.
4640....
4641----
4642
4643:8,OXe
4644
4645???b
4646.Oa.
4647XXO.
4648..*.
4649....
4650----
4651
4652;odefend_against(*,a) || omoyo(b)
4653
4654
4655Pattern EB615
4656
4657.O? Prevent monkey jump or other incursion
4658.*X
4659...
4660---
4661
4662:8,OXe
4663
4664
4665Pattern EB615b
4666# gf New pattern. (3.3.13)
4667
4668.O? Prevent monkey jump or other incursion
4669.*X
4670...
4671---
4672
4673:8,OXed
4674
4675.O?
4676a*X
4677...
4678---
4679
4680;omoyo_opposite(a)
4681
4682
4683Pattern EB616
4684
4685?o.O?
4686?.*.X
4687o...X
4688-----
4689
4690:8,OXe
4691
4692
4693Pattern EB617
4694# gf Revised pattern. (3.1.9)
4695
4696oO.? Prevent monkey jump or other incursion
4697o.*X
4698....
4699----
4700
4701:8,OXe
4702
4703
4704Pattern EB618
4705
4706oO.? Prevent monkey jump or other incursion
4707.*.X
4708...X
4709----
4710
4711:8,OXe
4712
4713
4714Pattern EB619
4715
4716oO.? Prevent monkey jump or other incursion
4717..*X
4718...X
4719----
4720
4721:8,OXe
4722
4723oOa?
4724..*X
4725...X
4726----
4727
4728;oplay_attack(*,a,a)
4729
4730
4731Pattern EB624
4732# gf Unified with EB625. (3.3.12)
4733
4734?O?? block
4735?.OX
4736.*X.
4737....
4738----
4739
4740:8,Oe
4741
4742?b??
4743?.aX
4744.*X.
4745....
4746----
4747
4748;lib(a)>1 && !oplay_disconnect(*,*,b)
4749
4750
4751Pattern EB626
4752
4753X?O?? block after attachment
4754X.O.?
4755..X*.
4756.....
4757-----
4758
4759:8,Oe
4760
4761
4762Pattern EB627
4763
4764?O.... block
4765XO.X..
4766X*....
4767......
4768------
4769
4770:8,Oe
4771
4772
4773Pattern EB628
4774
4775.O.. prevent incursion
4776....
4777.*.X
4778....
4779----
4780
4781:8,OXe
4782
4783
4784Pattern EB629
4785
4786..?? don't let the opponent undermine
4787.OX?
4788.*.X
4789....
4790----
4791
4792:8,Oe
4793
4794
4795Pattern EB630
4796
4797..O.OX stop incursion
4798.*..OX
4799..X.X.
4800------
4801
4802:8,Oe
4803
4804
4805Pattern EB631
4806
4807oO.?? clamp on second
4808o..O?
4809o*XOX
4810o..X.
4811-----
4812
4813:8,Oe
4814
4815oOb??
4816o.ac?
4817o*XcX
4818o..X.
4819-----
4820
4821;!oplay_attack(*,a,b,c)
4822
4823
4824Pattern EB632
4825# gf Revised pattern. (3.3.12)
4826
4827?oO?? clamp on second
4828?O..X
4829XOX*.
4830.X...
4831-----
4832
4833:8,Oe
4834
4835?oO??
4836?a..X
4837XaX*.
4838.X...
4839-----
4840
4841;!oplay_disconnect(*,*,a)
4842
4843
4844Pattern EB633
4845
4846O.O. seal opponent in
4847?O..
4848?X*.
4849?X..
4850----
4851
4852:8,OXe
4853
4854
4855Pattern EB634
4856
4857...Oo? Fend off territory (hopefully)
4858....O?
4859.....X
4860...*.X
4861.....x
4862------
4863
4864:8,OXe
4865
4866
4867Pattern EB635
4868
4869?OOOX? Stop eye-stealing move
4870X*..OO
4871......
4872------
4873
4874:8,Xd
4875
4876
4877Pattern EB637
4878
4879?o.? stop intrusion on first line
4880.*.O
4881..XX
4882----
4883
4884:8,OXe
4885
4886?od?
4887e*cO
4888baXX
4889----
4890
4891;!oplay_attack_either(*,a,b,*,b) && oplay_attack_either(*,a,b,c,d,e,a,e)
4892
4893
4894Pattern EB638
4895
4896?O..Oo defend eye space
4897.X*..o
4898......
4899------
4900
4901:8,OXed
4902
4903?Oa.Oo
4904.X*..o
4905......
4906------
4907
4908;oplay_attack(*,a,a)
4909
4910
4911Pattern EB639
4912
4913?OoO block on edge
4914X...
4915X.*.
4916....
4917----
4918
4919:8,OXead
4920
4921?OoO
4922Xba.
4923Xc*.
4924....
4925----
4926
4927;oplay_attack(*,a,b,c,a)
4928
4929
4930Pattern EB640a
4931
4932Ooo block on edge
4933x*.
4934X..
4935---
4936
4937:8,OXe
4938
4939Ooo
4940x*.
4941Xab
4942---
4943
4944;!oplay_attack_either(*,a,b,*,b)
4945
4946
4947Pattern EB640b
4948# db modified (3.3.5)
4949
4950.Oo block on edge
4951x*.
4952X..
4953---
4954
4955:8,OXe,shape(3)
4956
4957.Oo
4958x*.
4959Xab
4960---
4961
4962;!oplay_attack_either(*,a,b,*,b)
4963
4964
4965Pattern EB640c
4966
4967..O block on edge
4968x*.
4969X..
4970---
4971
4972:8,OXe
4973
4974..O
4975x*.
4976Xab
4977---
4978
4979;!oplay_attack_either(*,a,b,*,b)
4980
4981
4982Pattern EB641a
4983
4984?Oo? block on edge
4985x.*.
4986X...
4987----
4988
4989:8,OXe
4990
4991
4992Pattern EB641b
4993
4994?.O? block on edge
4995x.*.
4996X...
4997----
4998
4999:8,OXe
5000
5001
5002Pattern EB641c
5003
5004?..O block on edge
5005x.*.
5006X...
5007----
5008
5009:8,OXe
5010
5011
5012Pattern EB642
5013
5014|XOO
5015|X*.
5016|...
5017+---
5018
5019:8,OXe,reverse_followup(6)
5020
5021
5022Pattern EB643
5023# gf New pattern. (3.5.3)
5024# See gifu03:506.
5025
5026?.O block on edge
5027O*.
5028X..
5029---
5030
5031:8,OXe
5032
5033
5034###################
5035# First line blocks
5036###################
5037
5038
5039Pattern EB701
5040
5041|.OX Descending in the corner for profit and eyespace
5042|.OX
5043|.*.
5044+---
5045
5046:8,OXe
5047
5048
5049Pattern EB702a
5050# tm modified (3.1.20) (see endgame:102)
5051
5052??o??? prevent incursion
5053?XO.??
5054..X*.?
5055------
5056
5057:8,OXe,reverse_followup(6)
5058
5059??o???
5060?Xab??
5061.cX*.?
5062------
5063
5064;lib(a)>2
5065;|| !oplay_attack_either(*,b,c,*,a)
5066
5067
5068Pattern EB702b
5069
5070??o??| prevent incursion
5071?XO.?|
5072..X*.|
5073-----+
5074
5075:8,OXe,reverse_followup(2.5)
5076
5077??o??|
5078?Xa.?|
5079..X*.|
5080-----+
5081
5082;lib(a)>2
5083
5084
5085Pattern EB703
5086# gf Added O classification. (3.1.32)
5087
5088?O? block on edge
5089O.O
5090X*.
5091---
5092
5093:8,OXe
5094
5095
5096Pattern EB704
5097
5098?oO block on edge. Sometimes better to fall back...
5099XO.
5100.X*
5101---
5102
5103:8,OXe
5104
5105
5106Pattern EB705
5107# FIXME: (see trevorc:1040)
5108
5109?????
5110?O... prevent incursion
5111X*...
5112-----
5113
5114:8,OXe
5115
5116?????
5117?b...
5118X*a..
5119-----
5120
5121;xplay_attack(*,a,a) || weak(b)
5122
5123
5124Pattern EB706
5125
5126??Oo??? prevent incursion with sente
5127..XO...
5128..X*...
5129-------
5130
5131:8,OXe
5132
5133??Oo???
5134..AO...
5135..A*...
5136-------
5137
5138;oplay_attack(*,A)
5139
5140
5141Pattern EB707
5142
5143|..? prevent incursion with sente
5144|..?
5145|XXO
5146|*Oo
5147|..?
5148|..?
5149+---
5150
5151:8,OXe,followup(8)
5152
5153|..?
5154|..?
5155|AAO
5156|*Oo
5157|..?
5158|..?
5159+---
5160
5161;oplay_attack(*,A)
5162
5163
5164Pattern EB708
5165
5166O? seal off at edge
5167.O
5168*X
5169--
5170
5171:8,OXe
5172
5173
5174Pattern EB709
5175
5176|.XO extending in the corner is huge: double sente
5177|*O.
5178|...
5179+---
5180
5181:8,OXe,reverse_followup(3)
5182
5183
5184Pattern EB709b
5185# gf New pattern. (3.1.14)
5186
5187|*XO if this move can't be captured and O is already alive, we prefer
5188|.O. hane to the descent
5189|...
5190+---
5191
5192:8,OXe,reverse_followup(3)
5193
5194
5195Pattern EB710
5196# gf Removed fixed value. (3.5.2)
5197
5198o.OOX? block
5199.*XX.X
5200------
5201
5202:8,OXe
5203
5204
5205Pattern EB711
5206
5207o.OO block
5208.*XX
5209----
5210
5211:8,OXe,followup(4)
5212
5213o.bb
5214.*AA
5215----
5216
5217;oplay_attack(*,A) && !oplay_attack(*,b)
5218
5219
5220Pattern EB712
5221# Probably bigger reverse followup in reality
5222# tm Modified (3.1.17)
5223# tm Modified (3.1.20)
5224
5225?O.. block
5226XO..
5227X*..
5228----
5229
5230:8,OXe,reverse_followup(6)
5231
5232?O..
5233XOb.
5234X*a.
5235----
5236
5237; !xplay_attack_either(*,a,b,*,b)
5238
5239
5240Pattern EB712b
5241# gf New pattern. (3.7.10)
5242# Probably bigger reverse followup in reality
5243# See trevora:340 and trevorb:370.
5244
5245?*O.. block on top
5246OXO..
5247.X...
5248-----
5249
5250:8,Xe,reverse_followup(6)
5251
5252?*d..
5253eXdb.
5254.Xca.
5255-----
5256
5257;alive(d) && !xplay_attack_either(c,a,b,c,b) && oplay_attack(*,c,c)
5258;&& !oplay_connect(c,*,d,e)
5259
5260
5261Pattern EB713
5262# tm modified (3.1.17)
5263# FIXME: (see trevorc:1040)
5264
5265?O.. block
5266X*..
5267----
5268
5269:8,OXe,reverse_followup(3)
5270
5271?Ob.
5272X*a.
5273----
5274
5275;!xplay_attack_either(*,a,b,*,b)
5276
5277
5278Pattern EB714
5279
5280XO.X
5281.X*.
5282----
5283
5284:8,B
5285
5286XO.A
5287.X*.
5288----
5289
5290;oplay_attack(*,A)
5291
5292
5293Pattern EB715
5294# ab added (3.1.14)
5295
5296O.* jump if blocking is impossible
5297X..
5298---
5299
5300:8,OXe
5301
5302ac*
5303Xbd
5304---
5305
5306;!oplay_defend_both(b,c,a,b) && !oplay_defend_both(c,b,d,*,c,d)
5307
5308
5309Pattern EB716
5310# ab added (3.1.14)
5311
5312O*. pull back if blocking is impossible
5313X..
5314---
5315
5316:8,OXe
5317
5318a*c
5319Xbd
5320---
5321
5322;!oplay_defend_both(b,*,a,b) && oplay_defend_both(*,b,d,c,a,d)
5323
5324
5325Pattern EB717
5326# tm New Pattern (3.1.18)
5327# gf FIXME: lib(A)==2 is always true in this pattern. (3.1.23)
5328
5329?OO.. prevent incursion
5330.XX*.
5331-----
5332
5333:8,sOXe
5334
5335?OB..
5336.AA*.
5337-----
5338
5339; lib(A) == 2
5340; && !oplay_attack_either(*,B,*)
5341
5342
5343Pattern EB718
5344# tm New Pattern (3.1.20)
5345# compare to EB715 - slightly different.
5346
5347O.* jump back to block
5348X..
5349---
5350
5351:8,OXe
5352
5353ac*
5354Xb.
5355---
5356
5357;!oplay_defend_both(b,c,a,b) && oplay_defend_both(*,c,a,*)
5358
5359
5360Pattern EB719
5361# gf New pattern. (3.5.3)
5362# Inexact followup but usually big.
5363
5364.XXO block
5365XOO*
5366----
5367
5368:8,Xe,followup(6)
5369
5370aBBd
5371Cee*
5372----
5373
5374;alive(d) && critical(e) && !oplay_defend_both(*,?,a,B,C)
5375
5376
5377############################################################
5378# Monkey jump and other intrusions on first and second lines
5379############################################################
5380
5381
5382Pattern EB801
5383# Not to first line.
5384
5385O.X.? jump under on second line
5386.O.*?
5387....?
5388-----
5389
5390:8,Oe
5391
5392
5393Pattern EB802
5394# gf Revised pattern and constraint. (3.3.12)
5395
5396??xxxx monkey jump
5397?O....
5398o...*.
5399------
5400
5401:8,OXe
5402
5403bcEFGx
5404da....
5405o...*.
5406------
5407
5408;!weak(a) && o_alive_somewhere(b,c,d) && x_alive_somewhere(E,F,G)
5409;&& !oplay_disconnect(*,*,a)
5410
5411
5412Pattern EB803
5413
5414?xX.. inverse monkey jump
5415O..*.
5416O....
5417-----
5418
5419:8,OXe
5420
5421
5422Pattern EB804
5423
5424?Xx.. inverse monkey jump
5425O..*.
5426O....
5427-----
5428
5429:8,OXe
5430
5431
5432Pattern EB805
5433
5434??X.? jump up
5435O..*.
5436oO...
5437-----
5438
5439:8,OXe
5440
5441
5442Pattern EB806
5443
5444??X..? jump up
5445O...*.
5446oO....
5447------
5448
5449:8,OXe
5450
5451
5452Pattern EB808
5453# tm added defend_against_atari
5454
5455?xxx? jump out on first line
5456OX..?
5457.O.*.
5458-----
5459
5460:8,OXe
5461
5462?xxx?
5463aX..?
5464bC.*.
5465-----
5466
5467;!weak(a) && oplay_attack(*,b,b)
5468
5469>defend_against_atari(C)
5470
5471
5472###########################
5473# Third line push or extend
5474###########################
5475
5476
5477Pattern EB909
5478
5479?????X.? defense is becoming urgent
5480.X.O..*.
5481.....O..
5482........
5483--------
5484
5485:8,d
5486
5487
5488Pattern EB910
5489
5490?.X.. follow up the slide with diagonal move (another slide could be broken)
5491x*..O
5492..O..
5493?....
5494-----
5495
5496:8,Oe
5497
5498
5499Pattern EB911
5500
5501X.XX.. extend to 3 since B hane would be severe.
5502.*O..O
5503...O..
5504......
5505------
5506
5507:8,Oe
5508
5509
5510Pattern EB912
5511
5512?XX? extend to defend slide
5513..O*
5514O...
5515....
5516----
5517
5518:8,Oe
5519
5520
5521Pattern EB913
5522# gf Unified with EB916. (3.3.12)
5523
5524??X. don't let opponent block
5525?O*.
5526o...
5527....
5528----
5529
5530:8,OXe
5531
5532
5533Pattern EB913b
5534
5535??X. don't let opponent block
5536?O*.
5537....
5538....
5539----
5540
5541:8,Xd
5542
5543
5544Pattern EB914
5545# gf Removed fixed value. (3.5.2)
5546
5547?O??X. an exception to the preceeding pattern
5548*XOO..
5549......
5550......
5551------
5552
5553:8,d
5554
5555?O??X.
5556*AOOa.
5557......
5558......
5559------
5560
5561; does_attack(*,A) && oplay_defend(a,A)
5562
5563> antisuji(a);
5564
5565
5566Pattern EB915
5567# gf Removed fixed value. (3.5.2)
5568
5569?O??X. exception, continued
5570OXOO..
5571*X....
5572......
5573------
5574
5575:8,d
5576
5577?O??X.
5578OAOOa.
5579*X....
5580......
5581------
5582
5583; does_attack(*,A) && oplay_defend(a,A)
5584
5585> antisuji(a);
5586
5587
5588Pattern EB917
5589
5590??X..?? leap out
5591?OX.*..
5592OoO....
5593.......
5594-------
5595
5596:8,Oe
5597
5598
5599Pattern EB918
5600
5601..XX atari to expand
5602*XOO
5603.O..
5604....
5605----
5606
5607:8,Oe,followup(6)
5608
5609..XX
5610*AOO
5611.O..
5612....
5613----
5614
5615;!attack(A)
5616
5617
5618Pattern EB919
5619
5620..XX? extend along the edge
5621.*OX?
5622...OO
5623.....
5624-----
5625
5626:8,OXe
5627
5628
5629Pattern EB920
5630
5631????..? Two space extension
5632.....O?
5633.*..OXO
5634......O
5635.......
5636-------
5637
5638:8,Oe
5639
5640
5641Pattern EB921
5642
5643|oooX?? take corner
5644|..*.X?
5645|....OO
5646|......
5647+------
5648
5649:8,e
5650
5651
5652Pattern EB922
5653
5654??Xx? override solid connection
5655XXO*.
5656OO...
5657.....
5658-----
5659
5660:8,OXe
5661
5662
5663Pattern EB923
5664
5665XO? separate!
5666.*X
5667...
5668...
5669---
5670
5671:8,Oe
5672
5673
5674Pattern EB924
5675
5676.... extend on third line
5677O.*.
5678....
5679....
5680----
5681
5682:8,Oe
5683
5684....
5685O.*a
5686....
5687....
5688----
5689
5690;!omoyo(a)
5691
5692
5693Pattern EB924a
5694
5695XX...x extend on third line
5696O.O.*.
5697......
5698......
5699------
5700
5701:8,O,shape(-3)
5702
5703
5704Pattern EB924b
5705
5706XX...x extend on third line
5707O.O...
5708....*.
5709......
5710------
5711
5712:8,O,shape(-3)
5713
5714
5715Pattern EB925
5716# gf Removed fixed value and E classification, revised constraint. (3.5.2)
5717
5718XX...x extend on third line
5719O.O*.x
5720......
5721......
5722------
5723
5724:8,d,shape(3)
5725
5726XX...x
5727a.O*.x
5728......
5729......
5730------
5731
5732; !dead(a) && !oplay_disconnect(*,a,*)
5733
5734
5735############################
5736# Second line push or extend
5737############################
5738
5739
5740Pattern EB1001
5741
5742.X.O extend to undermine opponent
5743*O..
5744....
5745----
5746
5747:8,OXe
5748
5749
5750Pattern EB1003
5751
5752XX.. move out on second line
5753OO*.
5754....
5755----
5756
5757:8,OXe
5758
5759
5760Pattern EB1004
5761# We should climb to third line if safe. Need helper.
5762# see EB1005
5763
5764??.XX push out
5765?.*OO
5766?....
5767.....
5768-----
5769
5770:8,OXe
5771
5772
5773Pattern EB1005
5774
5775??o?? hane
5776?o*XX
5777?..OO
5778?....
5779.....
5780-----
5781
5782:8,OXe
5783
5784??o??
5785?o*XX
5786?.aOO
5787?....
5788.....
5789-----
5790
5791;odefend_against(*,a)
5792
5793
5794Pattern EB1006
5795
5796?..X? push once
5797.XXOO
5798.*O..
5799.....
5800-----
5801
5802:8,OXe
5803
5804
5805Pattern EB1007
5806
5807X.. overrides 113
5808O*.
5809...
5810---
5811
5812:8,OXe
5813
5814
5815Pattern EB1008
5816
5817..X. Double sente, do it early!
5818.O*.
5819....
5820----
5821
5822:8,OXe
5823
5824
5825Pattern EB1008b
5826# gf Added n classification. See gifu03:105. (3.5.3)
5827
5828?..X. Double sente, do it early!
5829x.O*.
5830.....
5831-----
5832
5833:8,OXn,reverse_followup(2)
5834
5835
5836Pattern EB1008c
5837# gf Added n classification. See gifu03:105. (3.5.3)
5838
5839?..X. Double sente, do it early!
5840x.O*.
5841.....
5842-----
5843
5844:8,OXn,reverse_followup(5)
5845
5846?..X.
5847x.a*.
5848.....
5849-----
5850
5851;xplay_attack(*,a)
5852
5853
5854Pattern EB1009
5855
5856OX. magari on second line
5857O*.
5858...
5859---
5860
5861:8,OXe
5862
5863
5864Pattern EB1011
5865
5866?XX.?? reverse sente extend
5867OOX...
5868..O*..
5869......
5870------
5871
5872:8,OXe
5873
5874
5875Pattern EB1012
5876
5877X.?X extend on second line
5878O*.?
5879....
5880----
5881
5882:8,OXe
5883
5884
5885Pattern EB1013
5886
5887X.?? extend on second line
5888O*.X
5889....
5890----
5891
5892:8,OXe
5893
5894
5895Pattern EB1014
5896
5897X.X extend on second line
5898O*.
5899...
5900---
5901
5902:8,OXe
5903
5904
5905Pattern EB1015
5906
5907?OXX Reverse sente push
5908..O*
5909....
5910----
5911
5912:8,OXe
5913
5914
5915Pattern EB1016
5916
5917?OX.. extend on second line -- reverse sente
5918OXO*.
5919.....
5920-----
5921
5922:8,Oe
5923
5924?OA..
5925aXO*.
5926.....
5927-----
5928
5929;!attack(a) && !dead(A)
5930
5931
5932Pattern EB1017
5933
5934X... double sente push
5935..XX
5936O.O*
5937o...
5938----
5939
5940:8,Oe
5941
5942
5943Pattern EB1018
5944
5945??O.X. undermine the opponent and threaten two eyes
5946XOoO*.
5947oooo..
5948------
5949
5950:8,OXed
5951
5952
5953Pattern EB1019
5954
5955.XxoO? make eye and undermine opponent
5956.*O.OX
5957...OXX
5958------
5959
5960:8,OXed
5961
5962
5963Pattern EB1020
5964
5965|.... Double sente, do it early!
5966|.O.X
5967|.*X.
5968|....
5969|....
5970+----
5971
5972:8,OXe
5973
5974
5975Pattern EB1021
5976
5977?XX. push to get one eye
5978OO*.
5979O...
5980----
5981
5982:8,OXed
5983
5984
5985Pattern EB1022
5986# db New pattern (3.1.28)
5987
5988?Xxx?? simply extend to avoid bad aji
5989oOX.x?
5990o.O*..
5991......
5992------
5993
5994:8,O,shape(2)
5995
5996?Xxd??
5997ocX.e?
5998obO*a.
5999......
6000------
6001
6002; oplay_attack(a,b,*,c) || x_alive_somewhere(d,e)
6003> replace(a,*)
6004
6005
6006#################
6007# First line push
6008#################
6009
6010
6011Pattern EB1101
6012
6013?x?? big push in sente
6014?X..
6015O*..
6016----
6017
6018:8,OXe
6019
6020?x??
6021?X.a
6022O*..
6023----
6024
6025;xmoyo(a)
6026
6027
6028#################
6029# Third line hane
6030#################
6031
6032
6033Pattern EB1201
6034
6035?XO?.. hane underneath
6036.*.O..
6037......
6038......
6039------
6040
6041:8,OXe
6042
6043
6044Pattern EB1202
6045# gf Removed fixed value. (3.5.2)
6046
6047?...? hane
6048O.X*.
6049..O.?
6050....?
6051-----
6052
6053:8,OXeCad
6054
6055
6056Pattern EB1203
6057# gf Added constraint. (3.3.12)
6058# gf Removed fixed value. (3.5.2)
6059
6060?..X. extend to defend and connect
6061O.XO*
6062..O..
6063.....
6064-----
6065
6066:8,OXeCad
6067
6068?..X.
6069a.XO*
6070..O..
6071.....
6072-----
6073
6074;!oplay_disconnect(*,*,a)
6075
6076
6077##################
6078# Second line hane
6079##################
6080
6081
6082Pattern EB1301
6083
6084..XX hane underneath
6085.XOO
6086.*..
6087....
6088----
6089
6090:8,OXe
6091
6092
6093Pattern EB1302
6094
6095XOX hane on second line
6096O.*
6097...
6098---
6099
6100:8,OXe
6101
6102XaX
6103O.*
6104...
6105---
6106
6107;lib(a)>1
6108
6109
6110Pattern EB1303
6111
6112?XX? block
6113.XO?
6114.*.O
6115....
6116----
6117
6118:8,OXe
6119
6120
6121Pattern EB1304
6122
6123..XX. hane
6124O..OX
6125..O.*
6126.....
6127-----
6128
6129:8,OXe
6130
6131
6132Pattern EB1305
6133
6134?.XX.. hane on second line
6135.XO..O
6136.*.O..
6137......
6138------
6139
6140:8,OXe
6141
6142
6143Pattern EB1306
6144
6145?XO? hane to claim space on second line
6146.*.O
6147....
6148----
6149
6150:8,OXe
6151
6152
6153Pattern EB1307
6154# gf Removed shape bonus. (3.3.18)
6155
6156?..?? hane to undermine the opponent
6157..XOo
6158..*.o
6159....o
6160-----
6161
6162:8,OXead
6163
6164?..??
6165..Xao
6166..*.o
6167....o
6168-----
6169
6170; lib(a)>2
6171
6172
6173Pattern EB1308
6174
6175?....
6176?....
6177OX...
6178OX...
6179.*...
6180.....
6181-----
6182
6183:8,OXed
6184
6185
6186Pattern EB1309
6187# gf Reduced shape value. (3.5.2)
6188
6189??.o??? urgent hane
6190?.XO..O
6191..*....
6192.......
6193-------
6194
6195:8,-,shape(3)
6196
6197
6198Pattern EB1310
6199# gf Removed fixed value. (3.5.2)
6200
6201?..X? after hane opponent must fall back
6202..XOO
6203..*.o
6204....o
6205-----
6206
6207:8,OXead
6208
6209?.cX?
6210.bXOO
6211da*eo
6212.f..o
6213-----
6214
6215; !oplay_defend(*,a,b,c,d,e,f,f)
6216
6217
6218Pattern EB1311
6219# gf Removed fixed value. (3.5.2)
6220
6221?..X? double sente
6222.XXOO
6223.*O.o
6224....o
6225-----
6226
6227:8,OXead
6228
6229
6230#################
6231# First line hane
6232#################
6233
6234
6235Pattern EB1401
6236# gf Removed fixed value. (3.5.2)
6237
6238|.XO? large endgame move
6239|.XO?
6240|.*.o
6241+----
6242
6243:8,OXe
6244
6245
6246Pattern EB1402
6247
6248?.X?? hane
6249..XO?
6250x.*.o
6251-----
6252
6253:8,OXe
6254
6255
6256Pattern EB1403
6257# gf Revised pattern. (3.1.3)
6258# gf Revised constraint. (3.3.13)
6259# ab Removed followup value (handled by influence code). (3.3.20)
6260
6261?oX?? sente hane
6262..XO?
6263?.*.o
6264-----
6265
6266:8,Xe
6267
6268?oX??
6269b.Xa?
6270?.*..
6271-----
6272
6273;alive(a) && xmoyo(b)
6274
6275
6276Pattern EB1404a
6277# Followup to previous pattern.
6278#
6279# No need to check for sente. If we found the hane to be worth
6280# playing, we should continue with the tsugi too. (Unless we can
6281# follow up with a ko or nakade pattern or something similar, but
6282# those should have higher values.)
6283#
6284# In practice this pattern doesn't always kick in at a high enough
6285# value to guarantee that EB1403 will be followed up.
6286#
6287# gf Revised pattern. (3.1.3)
6288# eb revised constraint (3.3.13)
6289# see nngs3:1110
6290# ab FIXME: Is this still necessary?
6291
6292?oX?? Connect after hane.
6293..XO?
6294?XO*o
6295-----
6296
6297:8,Xe,followup_value(8)
6298
6299?oX??
6300..Xa?
6301?BO*o
6302-----
6303
6304;!dead(a) && !attack(B)
6305
6306
6307Pattern EB1404c
6308#cut followup to sente hane
6309#evand new pattern (3.3.13)
6310# gf Fixed value removed. (3.5.2)
6311
6312?oX??
6313.*XO?
6314?XO.o
6315-----
6316
6317:8,Xe
6318
6319?oX??
6320c*Xa?
6321?BO.o
6322-----
6323
6324;!dead(a) && xmoyo(c) && !oplay_defend(*,B) && !oplay_attack_either(*,*,a)
6325
6326
6327Pattern EB1405
6328
6329?..X? sente hane
6330..XO?
6331?.*.o
6332-----
6333
6334:8,OXe,followup_value(8)
6335
6336?..X?
6337ecDO?
6338?a*bo
6339-----
6340
6341;xmoyo(e) && !oplay_defend_both(*,a,b,?,c,a,D) && !oplay_attack(*,a,b,c,*)
6342
6343
6344#############
6345# Hane on top
6346#############
6347
6348
6349Pattern EB1501
6350
6351??oo? Hane atop opponent's attachment on third line
6352..*..
6353..XO.
6354.....
6355.....
6356-----
6357
6358:8,OXEad
6359
6360
6361Pattern EB1502
6362
6363?oooo?? hane is urgent
6364ooo*.??
6365o.OX.o?
6366o.OX.o?
6367o....??
6368o....??
6369-------
6370
6371:8,OXead
6372
6373
6374Pattern EB1503
6375
6376...? extend instead of hane
6377x*..
6378.OX.
6379.OX.
6380....
6381....
6382----
6383
6384:8,OXed
6385
6386
6387########
6388# Attach
6389########
6390
6391
6392Pattern EB1601
6393
6394...... attach underneath
6395.X.O.O
6396.*....
6397......
6398------
6399
6400:8,OXe
6401
6402
6403Pattern EB1603
6404
6405?...? top attachment
6406.O.*.
6407...X.
6408.....
6409.....
6410-----
6411
6412:8,OXE
6413
6414
6415Pattern EB1604
6416# The attachment is beneficial even if captured except
6417# in the case where the opponent pushes below leading
6418# leading to a complicated fight. If this happens
6419# O3X it is unclear who will come out better. (O can
6420# 421 retaliate in various ways depending on surroundings
6421# ... and fighting strength.) Attaching is preferred
6422# --- to EB313 if it works.
6423#
6424# The final position could be:
6425#
6426# O
6427# OOXX
6428# OX.X
6429# ..X.
6430# ----
6431#
6432# or:
6433#
6434# O
6435# OOXO
6436# .XXX
6437# ..X.
6438# ----
6439#
6440# It can backfire if X pushes below. That is not always possible.
6441
6442????.? attach on second line
6443?....?
6444oO.X.o
6445o..*.?
6446.....?
6447------
6448
6449:8,OXe
6450
6451????.?
6452?....?
6453oO.A.o
6454o..*.?
6455.....?
6456------
6457
6458;!weak(A)
6459
6460
6461Pattern EB1605
6462
6463????.? attach on second line in sente
6464?....?
6465oO.X.o
6466o..*.?
6467.....?
6468------
6469
6470:8,OXe,followup(5)
6471
6472????.?
6473?....?
6474oO.Dco
6475o.b*a?
6476.....?
6477------
6478
6479;!weak(D) && !oplay_attack(*,a,b,?,c,c)
6480
6481
6482Pattern EB1606
6483# Explicit followup.
6484
6485???.? attach on second line
6486....?
6487O.X.o
6488.*OX?
6489....?
6490-----
6491
6492:8,e
6493
6494
6495Pattern EB1606b
6496# Explicit followup.
6497
6498???.? threat to cut
6499....?
6500O.X.o
6501.*OX?
6502....?
6503-----
6504
6505:8,-,followup(8)
6506
6507???.?
6508....?
6509O.Xao
6510.*OX?
6511....?
6512-----
6513
6514;!oplay_attack(*,?,a,a)
6515
6516
6517Pattern EB1607
6518
6519X... attach to expand
6520..X.
6521O.*.
6522....
6523----
6524
6525:8,OXe
6526
6527
6528Pattern EB1608
6529
6530O..X. attach below
6531oO.*.
6532o....
6533-----
6534
6535:8,OXe
6536
6537
6538Pattern EB1609
6539
6540..x.. attach to connect
6541.....
6542O.X.O
6543..*..
6544.....
6545-----
6546
6547:|,OXcad
6548
6549..x..
6550.....
6551O.X.O
6552.a*b.
6553.....
6554-----
6555
6556>antisuji(a);
6557>antisuji(b);
6558
6559
6560Pattern EB1610
6561# gf Reduced shape value. (3.5.2)
6562
6563..x.. followup
6564.....
6565O*X.O
6566.XO..
6567.....
6568-----
6569
6570:8,cad,shape(3)
6571
6572
6573Pattern EB1611
6574# gf Reduced shape value. (3.5.2)
6575
6576..x.. followup
6577..*..
6578OOX.O
6579.XOX.
6580.....
6581-----
6582
6583:8,cad,shape(3)
6584
6585
6586###################
6587# Strengthen stones
6588###################
6589
6590
6591Pattern EB1701
6592
6593.*X? strengthen stone to prevent undermining hane
6594.OX.
6595....
6596....
6597----
6598
6599:8,OXd
6600
6601
6602Pattern EB1702
6603
6604.*.X jump up when kicked
6605.OX.
6606....
6607....
6608----
6609
6610:8,OXd,shape(3)
6611
6612
6613Pattern EB1702b
6614# gf New pattern. (3.1.17)
6615
6616...*.X jump up when kicked
6617...OX.
6618......
6619......
6620------
6621
6622:8,OXa,reverse_followup(8)
6623
6624
6625Pattern EB1703
6626
6627O.*X Strengthen stone on second line
6628..OX
6629....
6630----
6631
6632:8,OXed
6633
6634
6635Pattern EB1704
6636
6637?*.? Stand on third line
6638XO.?
6639...?
6640----
6641
6642:8,nOXed
6643
6644
6645Pattern EB1705
6646
6647??o? Stand to defend connection
6648O.*X
6649..OX
6650....
6651----
6652
6653:8,OXed
6654
6655
6656Pattern EB1706
6657
6658??X? Draw back to defend connection
6659O*.X
6660..OX
6661....
6662----
6663
6664:8,OXed
6665
6666
6667Pattern EB1707
6668
6669..?? stand after attachment
6670.*..
6671.OXX
6672....
6673....
6674----
6675
6676:8,OXed
6677
6678
6679Pattern EB1708
6680# If we are strong we prefer to connect solidly
6681
6682?.O? Defend after hanetsugi
6683*.OX
6684.OXX
6685----
6686
6687:8,OXe
6688
6689?.O?
6690*acX
6691bOXX
6692----
6693
6694;xcut(a) || xplay_attack(a,b,c)
6695
6696
6697Pattern EB1709
6698
6699X*.O? make eye and reach for center
6700xO.OX
6701..OXX
6702-----
6703
6704:8,OXd
6705
6706
6707Pattern EB1710
6708# Sometimes better to hane. But under which constraints?
6709
6710.....? contact instability
6711..X..?
6712..O*.?
6713.....?
6714.....?
6715------
6716
6717:8,OXed
6718
6719
6720Pattern EB1711
6721# gf Shape bonus reduced. (3.1.12)
6722
6723.O.X prevent slide
6724.*X.
6725....
6726....
6727----
6728
6729:8,OXead,shape(1)
6730
6731
6732#############################
6733# Block intrusion from above
6734#############################
6735
6736
6737Pattern EB1801
6738
6739..*.. connect
6740O...O
6741.....
6742-----
6743
6744:8,Oe
6745
6746..*..
6747O...O
6748.....
6749-----
6750
6751;!omoyo(*)
6752
6753
6754Pattern EB1802
6755
6756..X.. connect
6757O.*.O
6758.....
6759-----
6760
6761:8,OXec
6762
6763
6764Pattern EB1803
6765
6766o..Xx defend!
6767O.*..
6768....O
6769.....
6770.....
6771-----
6772
6773:8,OXec
6774
6775
6776Pattern EB1804
6777
6778??.?? defend!
6779O.*..
6780....O
6781.....
6782.....
6783-----
6784
6785:8,Oec
6786
6787??.??
6788O.*..
6789....O
6790.....
6791.....
6792-----
6793
6794;!omoyo(*)
6795
6796
6797Pattern EB1805
6798
6799??.?? defend!
6800O.*.O
6801.....
6802.....
6803.....
6804-----
6805
6806:8,Oec
6807
6808??.??
6809O.*.O
6810.....
6811.....
6812.....
6813-----
6814
6815;!omoyo(*)
6816
6817
6818Pattern EB1806
6819
6820?.X.?? block intrusion into wide extension
6821......
6822O.*..O
6823......
6824......
6825------
6826
6827:8,OXec
6828
6829
6830Pattern EB1807
6831
6832?XO don't accept position being split
6833O*.
6834...
6835...
6836---
6837
6838:8,OXec
6839
6840
6841Pattern EB1808
6842# evand added shape value -0.5 (3.5.4)
6843
6844??.?? defend!
6845O.*.O
6846.....
6847.....
6848-----
6849
6850:8,OXec,shape(-0.5)
6851
6852??.??
6853O.*.O
6854.....
6855.....
6856-----
6857
6858;!omoyo(*)
6859
6860
6861Pattern EB1808a
6862
6863??.?? defend!
6864O...O
6865..*..
6866.....
6867-----
6868
6869:8,OXec
6870
6871??.??
6872O...O
6873..*..
6874.....
6875-----
6876
6877;!omoyo(*)
6878
6879
6880Pattern EB1809
6881
6882..X.. secure fourth line territory
6883o.O*o
6884o....
6885.....
6886.....
6887-----
6888
6889:8,OXe
6890
6891..X..
6892o.O*o
6893o....
6894..a..
6895.....
6896-----
6897
6898;safe_xmove(*) && oterri(a)
6899
6900
6901Pattern EB1810
6902
6903?X? block below
6904OXO
6905.*.
6906...
6907---
6908
6909:|,OXeC
6910
6911?X?
6912bXa
6913.*.
6914...
6915---
6916
6917;!oplay_break_through(*,a,*,b)
6918
6919
6920###########
6921# Draw back
6922###########
6923
6924
6925Pattern EB1901
6926
6927?X?? draw back
6928XO.O
6929XO*.
6930?X?.
6931----
6932
6933:8,OXe
6934
6935
6936Pattern EB1902
6937
6938.O*. draw back if opponent plays below
6939XX..
6940....
6941----
6942
6943:8,OXe
6944
6945.O*.
6946XXa.
6947....
6948----
6949
6950;!odefend_against(a,*)
6951
6952
6953Pattern EB1903
6954
6955.... draw back
6956.*OX
6957..X.
6958....
6959----
6960
6961:8,OXed
6962
6963
6964Pattern EB1904
6965
6966..... draw back
6967..*OO
6968...XX
6969.....
6970-----
6971
6972:8,OXe
6973
6974
6975Pattern EB1905
6976
6977oo.O?? draw back
6978o.*OX?
6979o..X.X
6980------
6981
6982:8,OXe
6983
6984oo.c??
6985o.*cX?
6986o.aXbX
6987------
6988
6989;xplay_attack_either(b,a,a,c)
6990
6991>antisuji(a);
6992
6993
6994Pattern EB1906
6995
6996O... draw back if clamp is impossible
6997.*O.
6998.XOX
6999..Xx
7000----
7001
7002:8,OXe
7003
7004Oab.
7005.*O.
7006.XOX
7007..Xx
7008----
7009
7010;!xplay_attack(*,a,b,b)
7011
7012
7013###############
7014# Miscellaneous
7015###############
7016
7017
7018Pattern EB2001
7019
7020X... space odyssey
7021.*X.
7022O.OX
7023o...
7024----
7025
7026:8,OXed
7027
7028
7029Pattern EB2002
7030# gf Reduced shape value. (3.5.2)
7031
7032?..... don't jump if the edge is open
7033.*....
7034......
7035O.....
7036......
7037......
7038......
7039------
7040
7041:8,-,shape(-3)
7042
7043
7044Pattern EB2003
7045# With a sufficiently strong position directly to the right of the
7046# diagram, this may be a good move to build a moyo.
7047# gf Reduced shape value. (3.5.2)
7048
7049?...... don't jump if the edge is open
7050.*.....
7051?......
7052?O.....
7053?......
7054?......
7055?......
7056-------
7057
7058:8,-,shape(-3)
7059
7060
7061######################################################################
7062#
7063# Center block/expand patterns
7064#
7065# Moves that expand own position in the center in some way or stops
7066# opponent from expanding his position. This includes moves like
7067# block, bend, hane, and various extensions into empty space or
7068# opponent's area. This category contains very many patterns and may
7069# need to be split sooner or later.
7070#
7071######################################################################
7072
7073
7074#################################################
7075# safe jump out patterns, cannot (usually) be cut
7076#################################################
7077
7078
7079Pattern CB1
7080# gf Removed d classification (pattern too general). (3.3.13)
7081
7082???????? jump into empty space
7083.......?
7084.O.O.*.?
7085.......?
7086????????
7087
7088:-,OE,jump_out_helper
7089
7090
7091Pattern CB2
7092# gf Removed d classification (pattern too general). (3.3.13)
7093
7094?????? jump into empty space
7095?....x
7096?.*.OO
7097?....x
7098??????
7099
7100:8,OE,jump_out_helper
7101
7102
7103Pattern CB3
7104
7105?.OO. extend
7106?....
7107?....
7108?.*..
7109?....
7110?????
7111
7112:8,OEd,jump_out_helper
7113
7114
7115Pattern CB4
7116# gf Removed d classification (pattern too general). (3.3.13)
7117
7118????? Jump out if starting to get surrounded
7119?...?
7120?.*.?
7121?...?
7122?.OO?
7123
7124:8,Oe,jump_out_helper
7125
7126
7127Pattern CB5
7128# gf Removed d classification (pattern too general). (3.3.13)
7129
7130????? jump out
7131?...O
7132?.*.O
7133??..?
7134?????
7135
7136:8,Oe,jump_out_helper
7137
7138
7139Pattern CB6
7140# gf Removed d classification (pattern too general). (3.3.13)
7141
7142?????? jump out
7143?...Oo
7144?.*..o
7145??..Oo
7146??????
7147
7148:8,Oe,jump_out_helper
7149
7150
7151Pattern CB7
7152
7153???.o? jump out
7154?....O
7155?.*..O
7156??...?
7157??????
7158
7159:8,OEd,jump_out_helper
7160
7161
7162Pattern CB8
7163
7164???.??? jump out
7165?....Oo
7166?.*...o
7167??...Oo
7168???????
7169
7170:8,OEd,jump_out_helper
7171
7172
7173Pattern CB9
7174
7175??O..O
7176?....O
7177?.*...
7178??.???
7179??????
7180
7181:8,OEd,jump_out_helper
7182
7183
7184Pattern CB10
7185
7186OoOo? jump out!
7187...??
7188....?
7189O.*.?
7190??.??
7191?????
7192
7193:8,OEd,jump_out_helper
7194
7195
7196Pattern CB12
7197
7198.... atari to break X connection
7199.*XO
7200X.O.
7201
7202:8,OXeBad,shape(2)
7203
7204..a.
7205.*XO
7206XbOc
7207
7208; oplay_attack(*,a,b,c,c)
7209
7210
7211Pattern CB13
7212
7213???? jump out to reduce and possibly expand
7214x..O
7215.*.O
7216x..o
7217????
7218
7219:8,Oe,jump_out_helper
7220
7221
7222Pattern CB14
7223
7224?o?? attach
7225...O
7226.*..
7227.X.O
7228...?
7229
7230:8,OXEd,shape(2)
7231
7232?o??
7233..bO
7234.*ac
7235.XdO
7236...?
7237
7238; oplay_attack(*,a,b,c,a) || oplay_attack(*,a,d,b,a)
7239
7240
7241Pattern CB14a
7242
7243?o?? followup
7244...O
7245.OX.
7246.X*O
7247...?
7248
7249:8,OXed,shape(3)
7250
7251?o??
7252..aO
7253.OX.
7254.X*O
7255...?
7256
7257; oplay_attack(*,a,a)
7258
7259
7260Pattern CB14b
7261
7262?o?? followup
7263..*O
7264.OX.
7265.X.O
7266...?
7267
7268:8,OXed,shape(2)
7269
7270?o??
7271..*O
7272.OXa
7273.X.O
7274...?
7275
7276; oplay_attack(*,a,a)
7277
7278
7279Pattern CB15
7280
7281.xO. prevent push in
7282xx*.
7283xXO.
7284xxXO
7285
7286:8,Oed,shape(2)
7287
7288.bO.
7289ac*.
7290xXO.
7291xxXO
7292
7293; x_alive_somewhere(a,b,c)
7294
7295
7296######################################
7297# unsafe jump out patterns, can be cut
7298######################################
7299
7300Pattern CB101
7301
7302O.....? extend
7303?...*.?
7304?.....?
7305???????
7306
7307:8,OE,shape(-1),jump_out_far_helper
7308
7309
7310Pattern CB103
7311
7312O....? extend
7313?..*.?
7314?....?
7315??????
7316
7317:8,OE,shape(-3),jump_out_far_helper
7318
7319
7320Pattern CB104
7321
7322???O??? extend
7323??...??
7324??...??
7325??.*.??
7326??...??
7327???????
7328
7329:|,OE,shape(-3),jump_out_far_helper
7330
7331
7332Pattern CB105
7333
7334O...? extend
7335?.*.?
7336?...?
7337?????
7338
7339:8,OE,jump_out_far_helper
7340
7341
7342Pattern CB105b
7343# gf New pattern, see 9x9:540. (3.7.8)
7344
7345?O...? extend
7346?..*.?
7347?....?
7348??????
7349
7350:8,OE
7351
7352?O...?
7353?..*.?
7354?a...?
7355??????
7356
7357;xarea(*) && oarea(a)
7358
7359
7360Pattern CB106
7361
7362???O??? extend
7363??...??
7364??.*.??
7365??...??
7366???????
7367
7368:|,OE,shape(2),jump_out_far_helper
7369
7370
7371########################
7372# Connect attacked keima
7373########################
7374
7375Pattern CB207
7376# gf Merge with CB208. (3.1.23)
7377
7378??x threaten connection
7379O*.
7380.XO
7381
7382:8,nOXea,shape(2)
7383
7384??x
7385O*.
7386.ba
7387
7388;(lib(a)>1) && (!attack(b) || defend(b))
7389
7390
7391Pattern CB209
7392
7393??O connect
7394O*.
7395.XO
7396
7397:8,nOXe
7398
7399??a
7400O*.
7401.Xb
7402
7403;lib(a)>1 && lib(b)>1
7404
7405
7406Pattern CB210
7407
7408??.? connect
7409O*.O
7410?XO?
7411
7412:8,nOXea
7413
7414??.?
7415O*.O
7416?Xa?
7417
7418;lib(a)>1
7419
7420
7421Pattern CB217
7422
7423?.O block
7424.*X
7425?OX
7426
7427:8,OXecd
7428
7429?.a
7430.*X
7431?OX
7432
7433;lib(a)>1
7434
7435
7436Pattern CB217a
7437
7438?.O block attacking
7439.*X
7440?OX
7441
7442:8,a
7443
7444?.O
7445.*A
7446?OA
7447
7448; owl_threatens(*,A)
7449
7450
7451Pattern CB277
7452
7453.*O connect or threaten to connect
7454OX?
7455
7456:8,nOXed
7457
7458.*O
7459aX?
7460
7461;lib(a)>1
7462
7463
7464Pattern CB327
7465# gf Reduced shape value. (3.1.23)
7466# See nngs:1750
7467# ab increased shape value (3.1.29)
7468# gf Added constraint. (3.3.3)
7469
7470?.? seal opponent in
7471...
7472.*O
7473OX?
7474
7475:8,OXecd,shape(3)
7476
7477?.?
7478...
7479.*O
7480OA?
7481
7482;!attack(A) || !oplay_defend(*,A)
7483
7484
7485Pattern CB328
7486#ab Revised constraint (3.3.3)
7487# gf Reduced shape value. (3.5.2)
7488
7489?.? seal opponent in and connect
7490...
7491.*O
7492OX?
7493
7494:8,OXC,shape(3)
7495
7496?.?
7497...
7498a*O
7499OB?
7500
7501; oplay_attack_either(*,a,a,B) && (!attack(B) || does_attack(*,B))
7502
7503
7504######
7505# Hane
7506######
7507
7508Pattern CB202
7509
7510?o.? hane if attached
7511..*.
7512.OX.
7513....
7514..X.
7515
7516:8,OXE
7517
7518
7519Pattern CB212
7520# constraint is complementary to CB213.
7521
7522.X.O.? hane to defend
7523...X*.
7524
7525:8,OXd
7526
7527.X.Oa?
7528...B*.
7529
7530;!oplay_attack_either(*,a,a,B)
7531
7532
7533Pattern CB213
7534
7535.X.O.? extra value if X can't cut
7536...X*.
7537
7538:8,OXed,shape(2)
7539
7540.X.Oa?
7541...B*.
7542
7543;oplay_attack_either(*,a,a,B)
7544
7545
7546Pattern CB216
7547
7548OX.. connect if invaded
7549.*.O
7550...?
7551
7552:8,OXecd
7553
7554aX..
7555.*.b
7556...?
7557
7558;lib(a)>=2 && lib(b)>=2
7559
7560
7561Pattern CB219
7562
7563....O hane
7564..O..
7565.*X.X
7566.....
7567
7568:8,OXE
7569
7570
7571Pattern CB220
7572# gf Added missing '-' placeholder for classification. (3.1.18)
7573
7574*.
7575XO hane at head of two stones.
7576XO
7577..
7578
7579:8,-,shape(2)
7580
7581
7582Pattern CB221
7583
7584????O? hane
7585.XOO..
7586..XX*?
7587??..??
7588
7589:8,OXe
7590
7591
7592Pattern CB223
7593
7594ooo form eye to protect
7595O.O
7596.*X
7597
7598:8,OXed
7599
7600ooo
7601O.a
7602.*X
7603
7604;lib(a)>1
7605
7606
7607Pattern CB231
7608
7609?ooo form eye to protect
7610?O.*
7611o.OX
7612?o??
7613
7614:8,OXed
7615
7616
7617Pattern CB232
7618
7619?ooo form eye to protect
7620?O.*
7621o.OX
7622?OXX
7623
7624:8,OXed,shape(1)
7625
7626
7627Pattern CB236
7628
7629XX*. block! this can be life or death
7630?O.O
7631??O?
7632
7633:8,OXed
7634
7635
7636Pattern CB240
7637
7638.. block off area
7639.*
7640OX
7641
7642:8,OXe
7643
7644ab
7645.*
7646cD
7647
7648;!xarea(a) && !xarea(b) && lib(c)>2 && lib(D)<3
7649
7650
7651Pattern CB241a
7652
7653.. block off area
7654.*
7655OX
7656O?
7657
7658:8,OXe
7659
7660..
7661a*
7662OX
7663O?
7664
7665;odefend_against(*,a)
7666
7667
7668Pattern CB241b
7669
7670.. block off area
7671.*
7672OX
7673.x
7674
7675:8,OXe
7676
7677..
7678a*
7679OX
7680.x
7681
7682; odefend_against(*,a)
7683
7684
7685Pattern CB244
7686
7687?...? hane at the head of three stones
7688OXXX*
7689?OOO.
7690
7691:8,OXe
7692
7693
7694Pattern CB245
7695# tm modified (3.1.18)
7696# see trevorb:750
7697
7698?..?? hane at the head of two stones
7699OXX*?
7700?OO.?
7701
7702:8,OXe
7703
7704?..??
7705cXe*F
7706?bbAD
7707
7708; lib(c)>1
7709; && !oplay_attack(*,b)
7710; && oplay_defend_both(*,A,*,b)
7711; && (oplay_attack(*,A,e) || !x_alive_somewhere(D,F))
7712
7713
7714Pattern CB247
7715
7716?O.. hane
7717XO..
7718.X*.
7719....
7720
7721:8,OXe
7722
7723
7724Pattern CB262
7725
7726..o? hane is urgent
7727.*..
7728.XOO
7729..XO
7730
7731:8,OXe
7732
7733
7734Pattern CB271
7735
7736?OX.? hane is urgent
7737..OX.
7738?O.*.
7739??...
7740
7741:8,OXe
7742
7743
7744Pattern CB275
7745
7746?.X make shape
7747?..
7748O.O
7749X*.
7750?..
7751?.O
7752
7753:8,OXecd
7754
7755
7756Pattern CB281
7757
7758O.?? block!
7759O.??
7760X*.?
7761...?
7762Ooo?
7763
7764:8,OXe
7765
7766
7767Pattern CB288
7768
7769?... block and expand
7770..*.
7771OOX.
7772?X..
7773
7774:8,OXe
7775
7776
7777Pattern CB296
7778
7779Oooo block
7780.*.o
7781OX??
7782
7783:8,OXe
7784
7785
7786Pattern CB297
7787# gf Added a classification. (3.5.3)
7788
7789Oooo block in sente
7790.*.o
7791OX??
7792
7793:8,OXea,followup(5)
7794
7795Oooo
7796.*.o
7797OA??
7798
7799;!attack(A) && oplay_attack(*,A)
7800
7801
7802Pattern CB298
7803
7804O.Oo protect by drawing back
7805XO..
7806XX*O
7807
7808:8,nOXed
7809
7810
7811Pattern CB307
7812
7813X..? atari
7814OX*.
7815XO..
7816
7817:8,-,followup(5)
7818
7819X..?
7820aX*.
7821Xb..
7822
7823; dead(a) && !dead(b)
7824
7825
7826Pattern CB309
7827
7828?..XO hane, threatening atari
7829..XOo
7830..*.O
7831?...?
7832
7833:8,OXed
7834
7835
7836Pattern CB310
7837
7838?..? hane
7839.*X.
7840..O?
7841?Oo?
7842
7843:8,OXed
7844
7845
7846Pattern CB313
7847
7848?.O.. block!
7849X.X*.
7850.....
7851
7852:8,OXE
7853
7854
7855Pattern CB323
7856
7857O.? block
7858X*O
7859
7860:8,OXe
7861
7862
7863Pattern CB329a
7864# db added (3.3.6)
7865
7866?.?? atari
7867.*.?
7868OX.X
7869oOX?
7870
7871:8,OXe,followup(5),shape(2)
7872
7873
7874Pattern CB335
7875# gf New pattern. (3.1.18)
7876
7877x.O block
7878X*.
7879O.o
7880
7881:8,OXe
7882
7883
7884Pattern CB339
7885# gf New pattern. (3.3.4)
7886
7887?x?
7888x.O
7889.*X
7890
7891:8,OXe
7892
7893?x?
7894xaO
7895c*B
7896
7897;xterri(c) && oplay_attack_either(*,a,a,B)
7898
7899
7900########
7901# Kosumi
7902########
7903
7904Pattern CB205
7905
7906..... kosumi to claim space
7907.....
7908.*...
7909O....
7910?X...
7911
7912:8,OXe
7913
7914
7915Pattern CB225
7916# Move out diagonally instead
7917
7918????? diagonal move to reduce
7919.....
7920.....
7921..*..
7922.O.X.
7923.....
7924
7925:8,OXe
7926
7927?????
7928.....
7929ab...
7930..*..
7931.O.X.
7932.....
7933
7934;xarea(a) || xarea(b)
7935
7936
7937Pattern CB235
7938
7939..X. extend and block
7940O...
7941.*..
7942?...
7943
7944:8,OXe
7945
7946
7947Pattern CB251
7948
7949..O? diagonal move
7950.*..
7951...X
7952...X
7953
7954:8,OXe
7955
7956
7957Pattern CB256
7958
7959..O diagonal extension if nothing better
7960.*.
7961..X
7962
7963:8,OXe
7964
7965
7966Pattern CB257
7967
7968X..O move out
7969..*.
7970...X
7971
7972:8,OXea
7973
7974
7975Pattern CB260
7976
7977.... Take opponent's vital point for moving out
7978O...
7979X.*.
7980X..O
7981
7982:8,OXea
7983
7984
7985Pattern CB267
7986
7987OXOX prevent sealing
7988XO..
7989X.*.
7990
7991:8,Oed
7992
7993
7994Pattern CB289
7995
7996..O. reinforce and block
7997.*.O
7998.X.?
7999
8000:8,OXed
8001
8002
8003###############
8004# Miscellaneous
8005###############
8006
8007Pattern CB203
8008
8009..O. extend and peep
8010.OXX
8011.*..
8012..X.
8013
8014:8,Xea,followup(20)
8015
8016.ae.
8017.fXX
8018.*bc
8019..Xd
8020
8021;(alive(e) || alive(f)) && oplay_attack(*,a,a) && !oplay_attack(*,?,b,c,d,d)
8022
8023
8024Pattern CB204
8025# Kosumi is better if GNU is going to go back and defend anyway.
8026
8027..... knight's move to claim space
8028.....
8029..*..
8030O....
8031?X...
8032
8033:8,OXE
8034
8035e....
8036.....
8037cb*..
8038da...
8039?X...
8040
8041;!xmoyo(e) && oplay_defend(*,a,b,c,d)
8042
8043
8044Pattern CB204b
8045# ab removed shape value (3.1.28)
8046
8047..... knight's move to claim space
8048.....
8049..*..
8050O....
8051?X...
8052
8053:8,OXEd
8054
8055e....
8056.....
8057cb*..
8058Oa...
8059?X...
8060
8061;!xmoyo(e) && oplay_attack(*,a,b,c,c)
8062
8063
8064Pattern CB206
8065
8066..... block solid to claim space --
8067..... not so good if X (easily) can play double hane.
8068.....
8069O*...
8070?X...
8071
8072:8,OXe
8073
8074.....
8075.....
8076.dc..
8077O*a..
8078?Xb..
8079
8080;!oplay_attack(*,a,b,b) || !oplay_attack(*,a,c,d,*)
8081
8082
8083Pattern CB214
8084
8085O.X.. connect if invaded
8086..*.O
8087?...?
8088
8089:8,OXecd
8090
8091
8092Pattern CB215
8093
8094..X.. connect if invaded
8095O.*.O
8096o...?
8097
8098:8,OXecd
8099
8100
8101Pattern CB218
8102
8103?.? extend
8104.*.
8105.OX
8106OX?
8107OX?
8108
8109:8,OXe
8110
8111?.?
8112.*.
8113.OA
8114OX?
8115OX?
8116
8117;!attack(A) || does_attack(*,A)
8118
8119
8120Pattern CB224
8121
8122????? knight's move to claim space
8123.....
8124..*..
8125.....
8126.O.X.
8127.....
8128
8129:8,OXE
8130
8131?????
8132.....
8133ab*..
8134.....
8135.O.X.
8136.....
8137
8138;!xarea(a) && !xarea(b)
8139
8140
8141Pattern CB226
8142
8143????? one space jump to reduce
8144.....
8145.*...
8146.....
8147.O.X.
8148.....
8149
8150:8,OXE
8151
8152?????
8153.....
8154a*...
8155.....
8156.O.X.
8157.....
8158
8159;xarea(a) || xarea(*)
8160
8161
8162Pattern CB227
8163# gf Reduced shape value. (3.5.2)
8164
8165?OO. bend around
8166XX*.
8167....
8168
8169:8,OXead,shape(3)
8170
8171
8172Pattern CB228
8173# gf Sometimes it's better shape to jump. See nngs:1180. (3.3.7 )
8174
8175?XX. prevent bend
8176OO*.
8177....
8178
8179:8,OXe,shape(3)
8180
8181?AAb
8182OO*.
8183....
8184
8185; !does_attack(b,A)
8186
8187
8188Pattern CB229
8189
8190xXO extend after hane
8191XO.
8192.*.
8193...
8194
8195:8,OXed,reverse_followup(5)
8196
8197
8198Pattern CB230
8199
8200?.... knight's move with good shape
8201.*..O
8202...O.
8203??XXO
8204
8205:8,OXed
8206
8207
8208Pattern CB233
8209
8210..X. extend and block
8211O...
8212..*.
8213?...
8214
8215:8,OXed
8216
8217..X.
8218Obc.
8219da*.
8220e...
8221
8222;omoyo(e) || (oplay_attack(*,a,b,c,a) && oplay_attack_either(*,b,a,d,b,d))
8223
8224
8225Pattern CB234
8226
8227..X. extend and block
8228O...
8229O.*.
8230?...
8231
8232:8,OXe
8233
8234
8235Pattern CB237
8236# tm Modified (3.1.23)
8237# gf Corrected constraint. (3.3.12)
8238
8239??x? extend
8240O..X
8241..*.
8242?.o?
8243
8244:8,OXe
8245
8246??x?
8247a..X
8248..*.
8249?.o?
8250
8251; !oplay_disconnect(*,*,a)
8252
8253
8254Pattern CB238
8255
8256..? block off area
8257O*o
8258?X?
8259
8260:8,OXe
8261
8262
8263Pattern CB239
8264# db added (3.3.3)
8265# see nngs1:50
8266# gf Revised to avoid bad shape. Constraint revised. (3.5.3)
8267
8268..x connect to reinforce and attack
8269O*O
8270?X?
8271
8272:8,Xeda
8273
8274..x
8275a*b
8276?X?
8277
8278; !same_dragon(a,b) && (alive(a) || alive(b))
8279
8280
8281Pattern CB241c
8282
8283.. block off area
8284*.
8285OX
8286.O
8287
8288:8,OXe
8289
8290..
8291*.
8292OX
8293bO
8294
8295;odefend_against(*,b)
8296
8297
8298Pattern CB242
8299
8300?..? default if previous pattern is not feasible
8301?*.?
8302?OX?
8303
8304:8,OXe
8305
8306
8307Pattern CB243
8308#evand new (3.5.4)
8309
8310?oo? extend in center
8311...?
8312.*.?
8313?OX?
8314?ox?
8315
8316:8,OXead
8317
8318
8319Pattern CB243b
8320# gf New pattern. (3.7.4)
8321# See gunnar:79.
8322
8323?oo? block in center
8324...?
8325..*O
8326?OX?
8327?Ox?
8328
8329:8,OXead
8330
8331?oo?
8332...?
8333.a*O
8334?OX?
8335?Ox?
8336
8337;oplay_attack(*,a,a)
8338
8339
8340Pattern CB246
8341
8342.O.O.? block opponent
8343.....?
8344..X.*.
8345.....?
8346
8347:8,OXed
8348
8349
8350Pattern CB248
8351
8352?.XX? extend
8353.*OOX
8354....X
8355
8356:8,OXed
8357
8358
8359Pattern CB250
8360
8361??.O Here X has 3 liberties.
8362?O.?
8363.*X?
8364?..?
8365
8366:8,OXed
8367
8368??.O
8369?O.?
8370.*A?
8371?..?
8372
8373;lib(A)==3
8374
8375
8376Pattern CB252
8377# gf Merged with CB253. (3.1.23)
8378
8379... bend around
8380O*.
8381OX?
8382
8383:8,OXe
8384
8385
8386Pattern CB254
8387# gf Revised classification and constraint. (3.1.14)
8388# db added shape value (3.1.28)
8389
8390..O
8391o*X
8392..O
8393
8394:-,Xead,shape(3)
8395
8396..a
8397o*X
8398..b
8399
8400;(alive(a) || alive(b)) && !oplay_attack(*,a) && !oplay_attack(*,b)
8401
8402
8403Pattern CB255
8404
8405O.XO bend around
8406..*O
8407??x?
8408
8409:8,OXe
8410
8411
8412Pattern CB258
8413# gf Added constraint. (3.3.13)
8414
8415?????? jump! (But not down to second line)
8416?....?
8417oO.*.?
8418?....?
8419?X...?
8420
8421:8,OXd
8422
8423??????
8424?....?
8425oa.*.?
8426?....?
8427?X...?
8428
8429;is_surrounded(a)
8430
8431
8432Pattern CB259
8433# gf Removed d classification (pattern too general). (3.3.13)
8434
8435?.... jump!
8436oO.*.
8437?....
8438?X.X.
8439
8440:8,OX
8441
8442
8443Pattern CB261
8444
8445?O.? knight's move to block center
8446XO..
8447X...
8448X.*.
8449
8450:8,OXea
8451
8452
8453Pattern CB263
8454
8455?x.? jump abreast
8456.*.O
8457...O
8458?X??
8459
8460:8,OXed
8461
8462
8463Pattern CB263b
8464# gf New pattern. (3.7.4)
8465# See gunnar:74.
8466
8467?x.? jump and attach
8468...O
8469.*.O
8470OX??
8471
8472:8,OXed
8473
8474?x.?
8475...O
8476a*.O
8477OX??
8478
8479;oplay_attack(*,a,a)
8480
8481
8482Pattern CB264
8483
8484..O?? knight's move block
8485...X?
8486.O..?
8487...*.
8488???.?
8489
8490:8,OXea
8491
8492a.O??
8493...X?
8494.O..?
8495...*.
8496b??.?
8497
8498;omoyo(a) && omoyo(b)
8499
8500
8501Pattern CB265
8502
8503O.??? seal the opponent in
8504..X??
8505.*..?
8506....O
8507
8508:8,OXea
8509
8510
8511Pattern CB266
8512
8513....O build fence
8514..*.O
8515O..XO
8516
8517:8,OXea
8518
8519
8520Pattern CB268
8521
8522O.... sketch a connection
8523...*.
8524?....
8525??..O
8526
8527:8,OEcd,jump_out_helper
8528
8529a....
8530...*.
8531?....
8532??..b
8533
8534;!attack(a) && lib(a)>2 && !attack(b) && lib(b)>2
8535
8536
8537Pattern CB269
8538
8539O..? seal the opponent
8540..*.
8541?X..
8542??.O
8543
8544:8,OXEa
8545
8546
8547Pattern CB270
8548
8549O... attach to make shape
8550..*.
8551O.X?
8552OX??
8553X???
8554
8555:8,OXed
8556
8557
8558Pattern CB272
8559# gf Not on the edge without more support, see 9x9:540. (3.7.8)
8560
8561?..O. block jump
8562?....
8563?....
8564?.*.X
8565?....
8566?????
8567
8568:8,OXEa
8569
8570
8571Pattern CB273
8572# See global:8, global:9
8573# tm modified (3.1.22)
8574
8575??O? jump out
8576?XOo
8577X...
8578..*o
8579????
8580
8581:8,OXe
8582
8583??O?
8584?XOa
8585Xecd
8586..*b
8587????
8588
8589; o_alive_somewhere(a,b)
8590; || oplay_attack(*,c,d,e,b,a)
8591; || oplay_attack(*,c,d,e,a,b)
8592
8593
8594Pattern CB274
8595
8596?????? extend (urgent)
8597?..XX?
8598?.*OOX
8599?....?
8600
8601:8,OXed
8602
8603
8604Pattern CB276
8605
8606?...? knight's move expansion
8607O..*.
8608oO..?
8609?XX??
8610
8611:8,OXe
8612
8613
8614Pattern CB278
8615
8616OXO block opponent
8617.*.
8618?.?
8619
8620:|,OXed
8621
8622aXb
8623.*.
8624?.?
8625
8626;lib(a)>1 && lib(b)>1
8627
8628
8629Pattern CB279
8630
8631XOX push out
8632.*.
8633?.?
8634
8635:|,OXe
8636
8637aOb
8638.*.
8639?.?
8640
8641;lib(a)>1 && lib(b)>1
8642
8643
8644Pattern CB280
8645
8646?.? extend to defend
8647.*.
8648XO?
8649X.?
8650XO?
8651
8652:8,OXe
8653
8654
8655Pattern CB282
8656
8657.......? block opponent in center
8658X.X.*..?
8659.......?
8660
8661:-,E
8662
8663.......?
8664X.X.*..?
8665.......?
8666
8667;!xmoyo(*)
8668
8669
8670Pattern CB283
8671
8672..x? bend around
8673O*..
8674OX..
8675X..?
8676
8677:8,OXe
8678
8679
8680Pattern CB284
8681
8682.O.X.? make shape to enclose
8683....OO
8684..*...
8685......
8686
8687:8,OXeca
8688
8689
8690Pattern CB285
8691
8692..... vital point for both
8693..*..
8694O...O
8695?X.X?
8696
8697:|,OXEc
8698
8699
8700Pattern CB286
8701
8702..... vital point for both
8703..*..
8704X...X
8705?O.O?
8706
8707:|,OXe
8708
8709
8710Pattern CB287
8711
8712..O pattern to enclose
8713...
8714...
8715.*.
8716..X
8717O.?
8718
8719:8,OXEca
8720
8721
8722Pattern CB290
8723
8724?.... jump out
8725?.*.X
8726....?
8727.XOO?
8728?.XO?
8729
8730:8,OXed
8731
8732
8733Pattern CB291
8734# gf Shape value removed. (3.1.9)
8735
8736.OX?? extend
8737..OX?
8738..*.?
8739?..??
8740
8741:8,OXed
8742
8743.OX??
8744.aOX?
8745..*.?
8746?..??
8747
8748; oplay_attack(*,a,a)
8749
8750
8751Pattern CB292
8752
8753.O??? jump and block
8754..O??
8755....?
8756.*.X?
8757...??
8758
8759:8,OXE
8760
8761
8762Pattern CB293
8763# db reduced shape value (3.1.8)
8764# gf Revised constraint. (3.3.12)
8765
8766?O.. knight's move
8767?O..
8768X...
8769..*.
8770?x.?
8771
8772:8,OXead,shape(3)
8773
8774?a..
8775?a..
8776X...
8777..*.
8778?x.?
8779
8780;!oplay_disconnect(*,*,a)
8781
8782
8783Pattern CB294
8784
8785XOO?? push
8786.XO??
8787.X*..
8788.....
8789....?
8790
8791:8,OXe
8792
8793
8794Pattern CB295
8795
8796oOo? attach
8797...?
8798.*X.
8799...?
8800
8801:8,OXE
8802
8803
8804Pattern CB299
8805
8806OoO make good shape
8807Ox.
8808X*O
8809
8810:8,OXe
8811
8812
8813Pattern CB300
8814
8815... bend around
8816O*.
8817OXX
8818
8819:8,OXe
8820
8821
8822Pattern CB301
8823
8824X..
8825.*.
8826XO.
8827?O.
8828
8829:8,OXead
8830
8831
8832Pattern CB302
8833
8834..O. seal the opponent
8835....
8836.*..
8837..X.
8838O...
8839
8840:8,OXEca
8841
8842
8843Pattern CB303
8844
8845?.X? make shape - reverse sente
8846.*OX
8847?..?
8848?OO?
8849
8850:8,OXe,followup(3)
8851
8852?.A?
8853.*OX
8854?..?
8855?OO?
8856
8857;!xplay_attack(*,A)
8858
8859
8860Pattern CB304
8861
8862?X.. extend out
8863OO*.
8864?X..
8865
8866:-,OXe
8867
8868
8869Pattern CB305
8870
8871?OX.. extend out
8872o.O*.
8873?OX..
8874
8875:-,OXe
8876
8877
8878Pattern CB306
8879
8880?oX.. extend out
8881O.O*.
8882?OX..
8883
8884:8,OXe
8885
8886
8887Pattern CB308
8888
8889?.?? Push, threatening atari -- Don't play if block at a
8890...? doesn't leave a cut at b.
8891O*..
8892?X..
8893
8894:8,OXe,followup(5)
8895
8896?.??
8897...?
8898O*a.
8899?Ab.
8900
8901;lib(A)==3 && !xdefend_against(a,b)
8902
8903
8904Pattern CB311
8905
8906.... prevent escape
8907O*..
8908X...
8909?.O.
8910
8911:8,OXeca
8912
8913
8914Pattern CB312
8915
8916?.X. extend to defend
8917O.OX
8918..*.
8919????
8920
8921:8,OXe
8922
8923
8924Pattern CB314
8925# tm modified (3.1.23)
8926# FIXED: See global:8 for unexpected match.
8927
8928xX.. jump!
8929?...
8930O.*.
8931?o??
8932
8933:8,OXe
8934
8935xX..
8936?...
8937A.*.
8938?o??
8939
8940; !oplay_disconnect(*,A,*)
8941
8942
8943Pattern CB315
8944
8945??XO? connect three stones
8946..*.o
8947O..O?
8948?..??
8949
8950:8,OXe
8951
8952
8953Pattern CB316
8954
8955?OO make bamboo joint
8956X..
8957.*O
8958O.?
8959
8960:8,OXe
8961
8962?aa
8963X..
8964.*O
8965O.?
8966
8967;lib(a)<4
8968
8969
8970Pattern CB317
8971
8972xX.. urgent extension
8973XO*.
8974O..X
8975ooo?
8976
8977:8,OXed
8978
8979
8980Pattern CB318
8981
8982o.X break out
8983O*.
8984X..
8985
8986:8,OXed
8987
8988o.X
8989O*.
8990Cba
8991
8992;!xmoyo(a) && !oplay_attack(b,C)
8993
8994
8995Pattern CB319
8996
8997?.X? breakout
8998.*.O
8999?..O
9000?.XO
9001??.X
9002
9003:8,OXed
9004
9005
9006Pattern CB320
9007
9008X.O.? jump to move out and separate
9009....X
9010o.*.?
9011oo.o?
9012?????
9013
9014:8,OXad
9015
9016
9017Pattern CB321
9018# gf No moyo building on the second line, see 9x9:540. (3.7.8)
9019
9020???????
9021??....? block to build moyo
9022xxX.*.?
9023??....?
9024???????
9025
9026:-,XE
9027
9028???????
9029??....?
9030xxX.*.a
9031??....?
9032???????
9033
9034;!xmoyo(*) && !xarea(a)
9035
9036
9037Pattern CB322
9038#FIXME: Pattern needs revision see nngs:860
9039
9040??.ooo? block to attack
9041??....?
9042xxX.*.?
9043??....?
9044??.ooo?
9045
9046:-,XE
9047
9048??.ooo?
9049??....?
9050xxA.*.?
9051??....?
9052??.ooo?
9053
9054;!xterri(*) && weak(A)
9055
9056
9057Pattern CB322a
9058# gf Corrected symmetry. (3.1.23)
9059
9060??.ooo? block to attack
9061??.ooo?
9062??....?
9063xxX.*.?
9064??....?
9065??.ooo?
9066
9067:8,XEa
9068
9069??.bcd?
9070??.efg?
9071??....?
9072xxA.*.?
9073??....?
9074??.ooo?
9075
9076;!xterri(*) && weak(A) && o_alive_somewhere(b,c,d,e,f,g)
9077
9078
9079Pattern CB324
9080
9081xxX? block
9082O*..
9083...O
9084
9085:8,OXe
9086
9087
9088Pattern CB325
9089
9090*O block
9091.X
9092.X
9093
9094:8,nOXe
9095
9096
9097Pattern CB326
9098# gf Reduced shape value. (3.5.2)
9099
9100?.?? seal opponent in
9101....
9102O.*.
9103OXXO
9104
9105:8,OXe,shape(3)
9106
9107?.??
9108.bc.
9109Ba*d
9110BAAO
9111
9112;lib(A)<=3 && lib(B)>=3 && oplay_attack(*,a,b,c,d,?,A)
9113
9114
9115Pattern CB330
9116# tm removed 'd' attribute (3.1.20) (see arend:3)
9117
9118?.? push
9119...
9120X*X
9121?O?
9122
9123:|,OXe,shape(3)
9124
9125
9126Pattern CB331
9127
9128?.? push
9129...
9130X*X
9131o.O
9132
9133:8,OXe
9134
9135?.?
9136...
9137X*X
9138oaO
9139
9140;oplay_attack(*,a,a)
9141
9142
9143Pattern CB332
9144
9145?xX..O expand and block
9146?.....
9147?.*..O
9148?....o
9149
9150:8,OXE
9151
9152
9153Pattern CB333
9154# db added (3.1.7)
9155# shape only --- other patterns matched give other attributes
9156
9157?.? prevent X from pushing out
9158OXO
9159.*.
9160?.?
9161
9162:8,OX,shape(3)
9163
9164?a?
9165BXC
9166.*.
9167?.?
9168
9169; !safe_omove(a) && lib(B)>1 && lib(C)>1
9170
9171
9172Pattern CB334
9173# db added (3.1.8)
9174
9175...O magnificent shape
9176...O
9177.*OX
9178O.Xx
9179
9180:8,OX,shape(2)
9181
9182
9183Pattern CB337
9184# db added (3.3.3)
9185# see nngs1:47
9186
9187.X. Don't get sealed!
9188...
9189O*.
9190X..
9191
9192:8,OXeda,shape(3)
9193
9194
9195Pattern CB338
9196# gf New pattern. (3.3.3)
9197# see e.g. trevorb:440
9198# The diagonal move is potentially very problematic since X often
9199# can play either b or c threatening to cut off *. If that move
9200# simultaneously threatens something more, we're in trouble. This
9201# pattern has a very conservative constraint, where it is required
9202# that neither b nor c is a threat against the connection.
9203
9204xxx diagonal push
9205.*x
9206O.x
9207
9208:/,OXe
9209
9210def
9211c*g
9212abh
9213
9214;(x_alive_somewhere(d,e,f,g,h) || xarea(f))
9215;&& !oplay_disconnect(*,b,*,a) && !oplay_disconnect(*,c,*,a)
9216
9217
9218Pattern CB338b
9219# gf New pattern. (3.3.16)
9220# Another safe variation of the diagonal move. See comment for CB338.
9221
9222?xxx diagonal push
9223?.*x
9224OO.x
9225?oO?
9226
9227:8,OXe
9228
9229?def
9230?.*g
9231aach
9232?ib?
9233
9234;(x_somewhere(d,e,f,g,h) || xarea(f))
9235;&& (same_string(a,b) || oplay_attack(*,c,?,i,i))
9236
9237
9238Pattern CB340
9239# db added (3.3.14)
9240# compare CB242
9241
9242X... extend to prevent hane
9243..X.
9244O.O*
9245o...
9246
9247:8,OXda,shape(3)
9248
9249
9250Pattern CB341
9251# db added (3.3.14)
9252# compare CB242
9253
9254..X. extend to prevent hane and split
9255O.O*
9256o...
9257..X.
9258
9259:8,OXda,shape(3)
9260
9261
9262Pattern CB342
9263# gf New pattern. (3.5.3)
9264
9265?.X.? extend to prevent hane and split
9266O..*.
9267o....
9268oooOo
9269
9270:8,OXe
9271
9272
9273Pattern CB343
9274# evand New pattern. (3.7.1)
9275# Is there a better way to do this than r_followup, followup, and terri?
9276# See gifu03:202.
9277
9278xX..
9279..*.
9280....
9281..Oo
9282....
9283
9284:8,OXe,reverse_followup(2),followup(1),terri(3)
9285
9286xXde
9287..*.
9288....
9289..Oo
9290.abc
9291
9292;omoyo(a) && omoyo(b) && omoyo(c) && xmoyo(d) && xmoyo(e)
9293
9294
9295Pattern CB344a
9296# evand New pattern. (3.7.1)
9297# see endgame:850
9298
9299?X??
9300.*.o
9301O..O
9302?..?
9303
9304:8,OXe
9305
9306?X??
9307.*.o
9308O..O
9309?ab?
9310
9311;omoyo(a) || omoyo(b)
9312
9313
9314Pattern CB344b
9315# evand New pattern. (3.7.1)
9316# see endgame:850
9317
9318?X??
9319*..o
9320O..O
9321?..?
9322
9323:8,OXe
9324
9325?X??
9326*..o
9327O..O
9328?ab?
9329
9330;omoyo(a) || omoyo(b)
9331
9332
9333Pattern CB344c
9334# evand New pattern. (3.7.1)
9335# see endgame:850
9336
9337?X??
9338..*o
9339O..O
9340?..?
9341
9342:8,OXe
9343
9344?X??
9345..*o
9346O..O
9347?ab?
9348
9349;omoyo(a) || omoyo(b)
9350
9351
9352######################################################################
9353#
9354# Edge defend/attack patterns
9355#
9356# Moves that threaten to capture, cut, or destroy eyes, and moves
9357# defending against this or preventing such moves. Also moves that
9358# actually do capture or destroy eyes are included here.
9359#
9360######################################################################
9361
9362
9363Pattern ED1
9364
9365?XX? Avoid opponent's push between two stones on second line
9366.O*O
9367....
9368----
9369
9370:8,OXad
9371
9372
9373Pattern ED2
9374
9375.O.O.. capture 2 stones
9376......
9377O.X.*.
9378.OX...
9379......
9380------
9381
9382:8,OXa
9383
9384
9385Pattern ED3
9386
9387X.?? prevent severe attachment
9388..O.
9389O.*X
9390....
9391----
9392
9393:8,OXd
9394
9395
9396Pattern ED4
9397
9398???.?.x Block to defend
9399?XO.O.x
9400OO..*.x
9401.......
9402.......
9403-------
9404
9405:8,OXd
9406
9407???.?.x
9408?XO.O.a
9409OO..*.b
9410.......
9411.......
9412-------
9413
9414;x_alive_somewhere(a,b)
9415
9416
9417Pattern ED6
9418
9419?X? connect against peep (on edge)
9420O*O
9421?.?
9422---
9423
9424:|,OXd
9425
9426
9427Pattern ED7
9428
9429|??O? Make sente throw in to kill eye in corner
9430|XXOX
9431|.*X.
9432+----
9433
9434:8,sOXa
9435
9436|??a?
9437|XXaX
9438|.*X.
9439+----
9440
9441;!oplay_attack(*,a)
9442
9443
9444Pattern ED8
9445
9446XXXOX sente throw in to kill eye on the edge
9447X.*X.
9448-----
9449
9450:8,sOXa
9451
9452XXXaX
9453X.*X.
9454-----
9455
9456;!oplay_attack(*,a)
9457
9458
9459Pattern ED9
9460
9461??X? Prevent capture of 2 stones, or forcing sequence
9462OO*O
9463....
9464----
9465
9466:8,OXd
9467
9468
9469Pattern ED10
9470
9471??O? Capture 2 stones, or force opponent
9472XX*X
9473....
9474----
9475
9476:8,OXa
9477
9478
9479Pattern ED11
9480
9481xxxx???? if attached, cut!
9482.......?
9483.X.O..Oo
9484..*X...o
9485........
9486--------
9487
9488:8,sOXBd,shape(3)
9489
9490
9491Pattern ED12
9492# bad to intercept in this case
9493
9494..O.??? block!
9495.......
9496.X.O..O
9497...X*..
9498.......
9499-------
9500
9501:8,OXed,shape(3)
9502
9503..O.???
9504.......
9505.X.O..O
9506..aX*..
9507.......
9508-------
9509
9510>antisuji(a);
9511
9512
9513Pattern ED13
9514# Add followup value if this is sente.
9515
9516.O.??? block!
9517......
9518X.O..O
9519..X*..
9520......
9521------
9522
9523:8,OX,followup(7)
9524
9525.O.???
9526......
9527X.Ob.O
9528.aX*..
9529......
9530------
9531
9532;oplay_attack(*,a,b,b)
9533
9534
9535Pattern ED14
9536
9537?...Ooo block!
9538X.O...o
9539.*X..oo
9540.......
9541-------
9542
9543:8,OXBd,shape(2)
9544
9545
9546Pattern ED15
9547
9548??.? atari improves our group
9549.*XO
9550..OO
9551....
9552----
9553
9554:8,OXd
9555
9556
9557Pattern ED16
9558
9559oOX? Make atari to kill eye
9560OX.X
9561.*..
9562----
9563
9564:8,OXa
9565
9566
9567Pattern ED17
9568
9569??OOO enclose two stones
9570?OX..
9571oOX.*
9572o??..
9573-----
9574
9575:8,OXa
9576
9577
9578Pattern ED18
9579
9580?OOO? threatens capture
9581OXX*.
9582OX.X.
9583O....
9584-----
9585
9586:8,OXa,followup(8)
9587
9588?OOO?
9589bAA*.
9590bA.X.
9591b....
9592-----
9593
9594;oplay_attack(*,A) && !oplay_attack(*,b)
9595
9596
9597Pattern ED19
9598
9599?XXXO oki --- sacrifice helper because defend2 doesn't see the tesuji
9600OX..X
9601..*..
9602-----
9603
9604:8,sOXa
9605
9606?XXXO
9607cX.bX
9608.a*..
9609-----
9610
9611;!oplay_attack(*,c) && !oplay_defend(*,a,b,a)
9612
9613
9614Pattern ED20
9615
9616?O? force X to connect
9617X*X
9618...
9619---
9620
9621:|,OXa
9622
9623
9624Pattern ED21
9625
9626?OO. atari!
9627XOX*
9628.X..
9629----
9630
9631:8,OXa
9632
9633
9634Pattern ED22
9635# gf Added b classification. (3.1.18)
9636# gf Split pattern and revised constraint. (3.3.3)
9637
9638??*X sente endgame (maybe rather middle game) move
9639..XO
9640..X?
9641----
9642
9643:8,OXed,followup(5)
9644
9645??*X
9646..Ab
9647..A?
9648----
9649
9650;oplay_attack(*,A) && !oplay_attack_either(*,*,b)
9651
9652
9653Pattern ED22b
9654# gf Added b classification. (3.1.18)
9655# gf Split pattern and revised constraint. (3.3.3)
9656
9657??*. sente endgame (maybe rather middle game) move
9658..XO
9659..X?
9660----
9661
9662:8,OXed,followup(5)
9663
9664??*c
9665..Ab
9666..A?
9667----
9668
9669;oplay_attack(*,A) && oplay_defend_both(*,c,*,b)
9670
9671
9672Pattern ED23
9673# gf Added b classification. (3.1.18)
9674
9675??*O sente endgame (maybe rather middle game) move
9676..X?
9677..X?
9678----
9679
9680:8,OXed,followup(5)
9681
9682??*O
9683..A?
9684..A?
9685----
9686
9687;oplay_attack(*,A)
9688
9689
9690Pattern ED24
9691
9692??*O sente endgame (maybe rather middle game) move
9693..XX
9694..xx
9695----
9696
9697:8,OXd,followup(7)
9698
9699??*O
9700..AA
9701..xx
9702----
9703
9704;oplay_attack(*,A)
9705
9706
9707Pattern ED25
9708
9709X.OX Avoid peep.
9710.*.O
9711....
9712----
9713
9714:8,OXd
9715
9716X.OA
9717.*.O
9718....
9719----
9720
9721;!attack(A)
9722
9723
9724Pattern ED26
9725
9726oOOo?? Capture some stones
9727OX.*.?
9728OX....
9729?X....
9730------
9731
9732:8,OXa
9733
9734
9735Pattern ED27
9736
9737oOO*. Punish X's weak shape
9738OXOX.
9739.XX..
9740-----
9741
9742:8,OXad
9743
9744
9745Pattern ED28
9746
9747?XO..
9748?XO..
9749..*.X
9750..X..
9751.....
9752-----
9753
9754:8,OXea
9755
9756
9757Pattern ED29
9758
9759OXO Sacrifice a second stone tesuji
9760XOX
9761.*.
9762---
9763
9764:|,sa
9765
9766aAb
9767BOC
9768.*.
9769---
9770
9771;lib(A)<=2 && lib(B)>1 && lib(C)>1
9772;&& !oplay_attack(*,a) && !oplay_attack(*,b)
9773;&& oplay_attack(*,A) && oplay_attack(*,B) && oplay_attack(*,C)
9774
9775
9776Pattern ED30
9777
9778|.o?? hane is big, often urgent
9779|.*X?
9780|..OO
9781|....
9782+----
9783
9784:8,OXd
9785
9786
9787Pattern ED31
9788
9789xxX.o extend to defend
9790..O*.
9791O....
9792.....
9793-----
9794
9795:8,OXead
9796
9797
9798Pattern ED31b
9799
9800x.xXx extend to defend
9801O.*O.
9802.....
9803.....
9804-----
9805
9806:8,OXed
9807
9808
9809Pattern ED31c
9810
9811x.X*.. hane
9812o.O..O
9813o.....
9814......
9815------
9816
9817:8,OXed
9818
9819
9820Pattern ED32
9821
9822X.X.. useful kikashi
9823OX.*.
9824.....
9825.....
9826-----
9827
9828:8,-,followup(10)
9829
9830X.X..
9831aX.*.
9832.....
9833.....
9834-----
9835
9836;lib(a)>2
9837
9838
9839Pattern ED33
9840
9841|xXx??? slide to live
9842|.OXX??
9843|.OO..x
9844|....*.
9845|......
9846+------
9847
9848:8,OXd
9849
9850
9851Pattern ED34
9852
9853|xXx??? hane to live
9854|.OXX??
9855|.OOX.x
9856|...*..
9857|......
9858+------
9859
9860:8,OXd
9861
9862
9863Pattern ED35
9864
9865|..XX?? hane to live
9866|.OOX.x
9867|...*..
9868|......
9869+------
9870
9871:8,OXd
9872
9873
9874Pattern ED36
9875# this can be aji keshi because 1 point above is also sente
9876
9877?XXOo atari on edge
9878?..XO
9879.X.*.
9880-----
9881
9882:8,OXa
9883
9884
9885Pattern ED37
9886# This should not need be a sacrifice pattern, and the constraint
9887# on the O stones should be superfluous, if only the tactical reading
9888# could understand a double snapback.
9889
9890O???O double snapback
9891X.X.X
9892X.*.X
9893-----
9894
9895:8,sX
9896
9897c???d
9898A.X.B
9899A.*.B
9900-----
9901
9902;lib(A)==2 && lib(B)==2 && lib(c)>1 && lib(d)>1
9903
9904>test_attack_either_move(A,B);
9905
9906
9907Pattern ED38
9908
9909XXOXX swallow either side
9910..X*.
9911.....
9912-----
9913
9914:8,s
9915
9916DDOCC
9917.aX*.
9918..b..
9919-----
9920
9921;oplay_attack(*,b,C) && oplay_attack(a,b,D)
9922
9923>test_attack_either_move(C,D);
9924
9925
9926Pattern ED39
9927# This is almost always a good idea.
9928
9929?XXO decrease eye space in sente (unless it kills)
9930X.*X
9931----
9932
9933# helper sets followup value
9934:8,sXa,throw_in_atari_helper
9935
9936?bba
9937Xc*A
9938----
9939
9940;lib(A)==2 && lib(a)>1 && !alive(b) && proper_eye(c)
9941
9942
9943Pattern ED40
9944
9945OXO decrease eye space in sente (unless it kills)
9946X*X
9947X.X
9948---
9949
9950# helper sets followup value
9951:8,sXa,throw_in_atari_helper
9952
9953aAb
9954X*X
9955X.X
9956---
9957
9958;lib(A)==2 && lib(a)>1 && lib(b)>1
9959
9960
9961Pattern ED41
9962
9963|XXO decrease eye space in sente (unless it kills)
9964|.*X
9965+---
9966
9967# helper sets followup value
9968:8,sXa,throw_in_atari_helper
9969
9970|XXa
9971|.*A
9972+---
9973
9974;lib(A)==2 && lib(a)>1
9975
9976
9977Pattern ED42
9978
9979?XX... jump out
9980OO.*..
9981......
9982......
9983------
9984
9985:8,OXead
9986
9987?XX.g.
9988HHA*..
9989.EbCd.
9990...f..
9991------
9992
9993; lib(H)>4 || !oplay_defend(*,A,b,C,d,E,f,E)
9994
9995>antisuji(g);
9996
9997
9998Pattern ED43
9999# gf Reduced shape value. (3.5.2)
10000
10001?OO..o push through and cut!
10002XX*X.o
10003.....o
10004.....?
10005------
10006
10007:8,OXad,shape(3)
10008
10009?OO..o
10010AA*B.o
10011.fcdeo
10012...g.?
10013------
10014
10015; oplay_attack(*,c,d,f,B) && oplay_attack(*,c,d,e,f,g,A)
10016
10017
10018Pattern ED44
10019# gf Reduced shape value. (3.5.2)
10020
10021O.... capture one stone
10022O..*.
10023O.X.O
10024.....
10025.....
10026-----
10027
10028:8,OXecad,shape(3)
10029
10030
10031Pattern ED45
10032# gf Fixed value removed. (3.5.2)
10033
10034?XX... defense is urgent
10035OO.O*.
10036?.....
10037?.....
10038------
10039
10040:8,OXead
10041
10042?XX...
10043OOaO*.
10044?cbd..
10045?.....
10046------
10047
10048; xplay_defend(a,b,c,d,c)
10049
10050
10051Pattern ED46
10052# gf Removed fixed value. (3.5.2)
10053
10054?X... jump to take territory on 4-th line
10055.....
10056O.*..
10057.....
10058.....
10059.....
10060-----
10061
10062:8,OXead
10063
10064
10065Pattern ED47
10066# gf Reduced shape value. (3.5.2)
10067
10068X.O...x
10069xXO.*.x
10070?XXO...
10071.......
10072-------
10073
10074:8,OXed,shape(3)
10075
10076
10077Pattern ED48
10078# gf Reduced shape value. (3.5.2)
10079
10080?... break ponnuki, threaten to cut
10081?.*O
10082.XOX
10083?.X.
10084?...
10085----
10086
10087:8,OXead,shape(3)
10088
10089?...
10090?.*O
10091.XOA
10092?.X.
10093?...
10094----
10095
10096; lib(A)==2
10097
10098
10099Pattern ED49
10100# gf Reduced shape value. (3.5.2)
10101
10102??..? push to stabilize O
10103?.X..
10104..*O.
10105.....
10106.....
10107-----
10108
10109:8,OXead,shape(3)
10110
10111
10112Pattern ED49b
10113
10114oo....? push to stabilize O and (probably) make territory
10115oo..X..
10116oo..*O.
10117.......
10118.......
10119-------
10120
10121:8,OXJ
10122
10123oo....?
10124bc..X..
10125de..*a.
10126.......
10127.......
10128-------
10129
10130;weak(a) && o_alive_somewhere(b,c,d,e)
10131
10132
10133Pattern ED50
10134# gf Removed fixed value. (3.5.2)
10135
10136..... don't get sealed in!
10137..*Xx
10138X.O..
10139....O
10140.....
10141.....
10142-----
10143
10144:8,OeBad
10145
10146
10147Pattern ED51
10148# gf Reduced shape value. (3.5.2)
10149
10150......... block to build influence
10151o.....*Xx
10152oo....O..
10153oo......O
10154.........
10155.........
10156---------
10157
10158:8,OXead,shape(3)
10159
10160
10161Pattern ED52
10162# gf Removed fixed value. (3.5.2)
10163
10164?..... attach in sente
10165......
10166..X.X.
10167..*..O
10168...O..
10169......
10170......
10171------
10172
10173:8,OXad
10174
10175
10176Pattern ED53
10177# gf Removed fixed value, added B classification. (3.5.2)
10178
10179?OO... push through and cut
10180XX*X..
10181?.....
10182?.....
10183------
10184
10185:8,OXBead
10186
10187?OO...
10188EE*D..
10189?bac..
10190?.....
10191------
10192
10193; oplay_attack(*,a,b,c,E) && oplay_attack(*,a,c,D)
10194
10195
10196Pattern ED54
10197# gf Removed fixed value. (3.5.2)
10198
10199?OO... cut
10200XXOX..
10201.*X...
10202?.....
10203------
10204
10205:8,sOXBad
10206
10207?OO...
10208AAOB..
10209.*Xd..
10210?.....
10211------
10212
10213; oplay_attack(*,d,A) && oplay_attack(d,B)
10214
10215
10216Pattern ED55
10217# gf Removed fixed value. (3.5.2)
10218
10219?OO... cut
10220XXOX..
10221XOX*..
10222?.....
10223------
10224
10225:8,Bad
10226
10227?OO...
10228XXOB..
10229XOX*..
10230?a....
10231------
10232
10233; oplay_attack(*,a,B)
10234
10235
10236Pattern ED56
10237# tm modified (3.1.20) (nngs:1170)
10238
10239...X.? extend to defend if attached
10240O..O*.
10241......
10242......
10243------
10244
10245:8,OXCad,shape(3)
10246
10247
10248Pattern ED57
10249# gf Reduced shape value. (3.5.2)
10250
10251OOXX?? push to defend
10252.XOX..
10253..O*..
10254......
10255------
10256
10257:8,-,shape(3)
10258
10259OOXX??
10260.AOX..
10261..O*..
10262......
10263------
10264
10265; does_attack(*,A)
10266
10267
10268Pattern ED58
10269# gf Removed fixed value and revised constraint. (3.5.2)
10270
10271??X?? connect to defend everything
10272?OXO?
10273.*OX.
10274.....
10275-----
10276
10277:8,BCad
10278
10279??G??
10280?cGO?
10281.*OAd
10282..bef
10283-----
10284
10285; alive(G) && !oplay_defend(*,A) && xplay_attack(*,b,c)
10286
10287> antisuji(b);
10288> antisuji(d);
10289> antisuji(e);
10290> antisuji(f);
10291
10292
10293Pattern ED59
10294
10295??X?? capture to defend everything
10296?OXO?
10297..OX*
10298.....
10299-----
10300
10301:8,Xad
10302
10303??X??
10304?OXA?
10305caOX*
10306deb..
10307-----
10308
10309; (lib(A)>1) && !oplay_defend(*,a,b,a) && oplay_attack(a,A)
10310
10311> antisuji(a);
10312> antisuji(c);
10313> antisuji(d);
10314> antisuji(e);
10315
10316
10317Pattern ED61
10318
10319??.?? follow up ED59
10320?.O.?
10321.OXOX
10322..X*.
10323.....
10324-----
10325
10326:8,J
10327
10328
10329Pattern ED62
10330# gf Reduced shape value. (3.5.2)
10331
10332....? if double hane is not reasonable, extend
10333OO..?
10334XXO*.
10335..X..
10336.....
10337-----
10338
10339:8,OXead,shape(3)
10340
10341....?
10342OOb.?
10343FFO*.
10344.dXac
10345...e.
10346-----
10347
10348; !oplay_attack(a,*,b,c,d,e,F)
10349
10350
10351Pattern ED63
10352
10353oOXx capture one stone---don't descend!
10354OXOX
10355.*..
10356----
10357
10358:8,ad,shape(2)
10359
10360oOXx
10361OXOX
10362.*a.
10363----
10364
10365> antisuji(a);
10366
10367
10368Pattern ED64
10369
10370..... connect solidly
10371.O*..
10372XXO..
10373.....
10374.....
10375-----
10376
10377:8,OXead,shape(2)
10378
10379..a..
10380.O*..
10381XXO..
10382.....
10383.....
10384-----
10385
10386> antisuji(a);
10387
10388
10389Pattern ED65
10390# gf Removed fixed value. (3.5.2)
10391
10392?o..? pull back to stabilize
10393?O..?
10394XXO*.
10395?xX..
10396xxx..
10397-----
10398
10399:8,OXad
10400
10401
10402Pattern ED68
10403# tm Modified (3.1.20) (see nngs:1130)
10404
10405?O*Xx reinforce
10406o..OO
10407.....
10408.....
10409-----
10410
10411:8,OXed
10412
10413?O*Xx
10414o.aOO
10415.....
10416.....
10417-----
10418
10419; xplay_defend(a,*,a)
10420
10421
10422Pattern ED69
10423
10424O..x connect under
10425.*.X
10426...O
10427....
10428----
10429
10430:8,Cad,shape(3)
10431
10432O..x
10433.*cA
10434..bO
10435....
10436----
10437
10438; !attack(A) && !oplay_defend(*,b,c,b)
10439
10440
10441Pattern ED70
10442# Threaten to capture some stones.
10443
10444O*X
10445OX.
10446
10447:8,OXe,followup(6)
10448
10449O*C
10450OBa
10451
10452;xterri(a) && !attack(B) && !attack(C) && !oplay_attack(*,?,a,a)
10453;&& !oplay_defend_both(*,?,a,B,C)
10454
10455
10456Pattern ED71
10457
10458O*.X capture correctly
10459OXOX
10460....
10461----
10462
10463:8,Cad,shape(1)
10464
10465O*.X
10466OXOX
10467..a.
10468----
10469
10470>antisuji(a)
10471
10472
10473Pattern ED72
10474
10475?OXO?
10476..O*X
10477.....
10478-----
10479
10480:8,Xd,shape(3)
10481
10482?OXB?
10483.aO*X
10484.....
10485-----
10486
10487;xplay_attack(*,a,B)
10488
10489
10490Pattern ED73
10491
10492?OXO??
10493..O.X*
10494......
10495------
10496
10497:8,-,shape(-3)
10498
10499?OXO??
10500..OaB*
10501......
10502------
10503
10504; !oplay_attack(*,a,B)
10505
10506
10507Pattern ED74
10508
10509O*. connect solid if descent is impossible
10510XOX
10511...
10512---
10513
10514:8,d,shape(3)
10515
10516O*.
10517AOX
10518.a.
10519---
10520
10521; !attack(A) && !oplay_attack(a,*,*)
10522
10523
10524Pattern ED75
10525
10526O.. don't descend if X can cut
10527XOX
10528.*.
10529---
10530
10531:8,-,shape(-3)
10532
10533Oa.
10534XOX
10535.*.
10536---
10537
10538; !oplay_attack(*,a,a)
10539
10540
10541Pattern ED76
10542# gf The negative shape value is a temporary measure to avoid
10543# overvaluation. (3.1.17)
10544# tm Added right hand side check (3.1.20) (see strategy4:195)
10545# db removed 'a' classification and reduced negative shape.
10546
10547oOo??? stop expansion and undermine
10548o..X??
10549o.*.x?
10550....??
10551------
10552
10553:8,OXe,shape(-2)
10554
10555oOo???
10556obaX?g
10557oc*.xf
10558....??
10559------
10560
10561;oplay_attack_either(*,a,b,c,a,c)
10562;&& !oarea(f) && !oarea(g)
10563
10564
10565Pattern ED77
10566# gf Reduced shape value. (3.5.2)
10567
10568?XX? defend cut
10569O*O.
10570....
10571....
10572----
10573
10574:8,OXead,shape(3)
10575
10576?XX?
10577O*Oc
10578.ab.
10579....
10580----
10581
10582;xplay_attack_either(*,a,b,c,a,c)
10583
10584
10585Pattern ED78
10586# gf Reduced shape value. (3.5.2)
10587
10588?OO? push through and cut
10589X*X.
10590....
10591....
10592----
10593
10594:8,OXead,shape(3)
10595
10596?OO?
10597X*Xc
10598.ab.
10599....
10600----
10601
10602;oplay_attack_either(*,a,b,c,a,c)
10603
10604
10605Pattern ED79
10606# avoid does_defend since some levels GNU may not see attack on B
10607
10608?OXX avoid a stupid defense
10609..OX
10610..*O
10611----
10612
10613:8,X,shape(-2)
10614
10615?OXX
10616.aOX
10617..*B
10618----
10619
10620; does_attack(a,B) && !xplay_attack(a,B)
10621
10622
10623Pattern ED80
10624# descending at 'a' is almost always bad
10625
10626?x?? defend correctly
10627x.Oo
10628XOX*
10629....
10630----
10631
10632:8,d
10633
10634?x??
10635x.Oo
10636XOX*
10637.a..
10638----
10639
10640> antisuji(a);
10641
10642
10643Pattern ED81
10644
10645.?.??? give up one stone
10646...O..
10647...*XX
10648....OX
10649......
10650------
10651
10652:8,-
10653
10654.?.???
10655..cO..
10656.db*XX
10657...aOX
10658......
10659------
10660
10661; oplay_defend(a,*,b,c,d,c)
10662
10663>antisuji(a);
10664
10665
10666Pattern ED82
10667# gf Reduced shape value. (3.5.2)
10668
10669|..... atari is usually a better way to use the dead stone
10670|..*..
10671|.....
10672|..XOO
10673|..OX?
10674
10675:8,-,shape(-3)
10676
10677|.....
10678|..*..
10679|.....
10680|..XOO
10681|..aX?
10682
10683; dead(a)
10684
10685
10686Pattern ED83
10687
10688|xXX?
10689|XOOX
10690|.*.x
10691|..O?
10692
10693:8,ed,shape(2)
10694
10695|xXX?
10696|XOOX
10697|a*.x
10698|..O?
10699
10700> antisuji(a)
10701
10702
10703Pattern ED84
10704# db added (3.1.7)
10705# gf Changed antisuji action to replace action. (3.1.14)
10706
10707|xXXx fall back to defend territory
10708|XOOX
10709|..OX
10710|.*.O
10711|...o
10712
10713:8,OXd,shape(2)
10714
10715|xXXx
10716|XOOX
10717|a.OX
10718|.*.O
10719|...o
10720
10721>replace(a,*)
10722
10723
10724Pattern ED85
10725# gf New pattern. (3.1.14)
10726
10727|...... attach at 3-3 to defend
10728|..X.O.
10729|..*...
10730|......
10731|......
10732+------
10733
10734:8,Xd
10735
10736
10737Pattern ED86
10738# gf New pattern. (3.1.14)
10739# This is not redundant in the presence of ED85, since it also infers
10740# a strategical defense of the stone on the fifth line. If the two O
10741# stones are not amalgamated, this makes a difference.
10742
10743|..x.O.
10744|...... attach at 3-3 to defend
10745|..X.O.
10746|..*...
10747|......
10748|......
10749+------
10750
10751:8,Xd
10752
10753
10754Pattern ED87
10755# db New pattern (3.1.28)
10756
10757ooOo? Don't leave aji
10758...*X
10759...OX
10760.....
10761-----
10762
10763:8,-,shape(2)
10764
10765ooOo?
10766...*X
10767...OX
10768..ba.
10769-----
10770
10771>replace(a,*);
10772>replace(b,*);
10773
10774
10775Pattern ED87a
10776# db New pattern (3.1.28)
10777
10778ooOX? Don't leave aji
10779..*.X
10780...OX
10781.....
10782-----
10783
10784:8,-,shape(2)
10785
10786ooOX?
10787..*.X
10788...OX
10789..ba.
10790-----
10791
10792>replace(a,*);
10793>replace(b,*);
10794
10795
10796Pattern ED88
10797# db New pattern (3.1.28)
10798# gf Corrected the replace action. (3.1.30)
10799
10800??...X? take territory on the fourth line
10801oo..*OX
10802oo....O
10803......o
10804.......
10805-------
10806
10807:8,-,shape(2)
10808
10809??...X?
10810oo..*OX
10811oo..b.a
10812......o
10813.......
10814-------
10815
10816; lib(a)>2
10817> replace(b,*)
10818
10819
10820Pattern ED89
10821# db New pattern (3.1.28)
10822# It is difficult to give an exact criterion for when it is good to
10823# fight this ko. But it is bad to lose it, may even threaten the
10824# life of the O dragon. See nngs1:11
10825
10826??XxOo? Don't fight an unfavorable ko!
10827..XO.Oo
10828.XO*O.?
10829-------
10830
10831:8,-
10832
10833??XxOo?
10834.aXO.bo
10835.XO*O.?
10836-------
10837
10838; alive(b)
10839> replace(a,*)
10840
10841
10842Pattern ED90
10843# db New pattern (3.1.28)
10844# ab d classification added (3.1.29)
10845
10846???..o? Jump under on the third line
10847???X.oo
10848?O..*.o
10849?O....o
10850o......
10851-------
10852
10853:8,dj
10854
10855???..o?
10856???X.oo
10857?hfa*.o
10858?hcbd.o
10859o.e....
10860-------
10861
10862; oplay_attack(*,a,b,c,d,e,e) && !oplay_attack(*,a,b,c,d,f,e,h)
10863> replace(b,*)
10864
10865
10866Pattern ED91
10867# db New pattern (3.1.28)
10868# gf Changed to connection pattern. (3.7.2)
10869
10870??XXoo Extend after the push
10871O..O*.
10872O....o
10873......
10874------
10875
10876:8,C
10877
10878??XXoo
10879a..O*.
10880a....o
10881......
10882------
10883
10884;!oplay_disconnect(*,*,a)
10885
10886
10887Pattern ED92
10888# db New pattern (3.1.30)
10889# See nngs1:18, where * is found as an owl defense
10890
10891oOXx?? don't do this!
10892..OXx?
10893...*.x
10894.....?
10895------
10896
10897:8,-,shape(-3)
10898
10899oOXx??
10900..OAx?
10901...*.x
10902.....?
10903------
10904
10905; lib(A)>2
10906
10907
10908Pattern ED93
10909# db new pattern (3.3.6)
10910# see century2002:120
10911# ab Added e classification (3.3.20)
10912
10913.....X? don't make the wrong atari
10914..X...?
10915...*XO?
10916....Ooo
10917.......
10918-------
10919
10920:8,edO
10921
10922.....X?
10923..X.a.?
10924...*XO?
10925....Ooo
10926.......
10927-------
10928
10929> replace(a,*)
10930
10931
10932Pattern ED94
10933# gf New pattern. (3.3.13)
10934
10935oo.O? Significant improvement of eyespace.
10936.*.OX Often sufficient for local life.
10937..OXX
10938-----
10939
10940:8,dX
10941
10942oo.O?
10943.*aOB
10944..OBB
10945-----
10946
10947;!attack(B) && safe_xmove(a)
10948
10949
10950Pattern ED95
10951# gf New pattern. (3.3.14)
10952# gf Added constraint. (3.3.17)
10953
10954...xx
10955.O.Xx fourth line sente kosumi
10956..*..
10957.....
10958.....
10959-----
10960
10961:8,OXea
10962
10963...xx
10964.a.Xx
10965..*..
10966.....
10967.....
10968-----
10969
10970;!weak(a)
10971
10972
10973Pattern ED96
10974# ab New pattern (3.3.20)
10975# See arend2:120
10976
10977?....
10978O*.X.
10979..OX.
10980.....
10981-----
10982
10983:8,OXe
10984
10985?....
10986f*.X.
10987hgeXd
10988..cab
10989-----
10990
10991;!oplay_connect(a,b,c,d,?,g,?,h,e,f)
10992> replace(a,*)
10993
10994
10995Pattern ED97
10996# gf New pattern. (3.5.3)
10997# See gifu03:401
10998
10999........
11000x..O.*.X
11001x.......
11002........
11003........
11004--------
11005
11006:8,OXeda
11007
11008........
11009c..a.*.B
11010d.......
11011........
11012........
11013--------
11014
11015;weak(a) && weak(B) && x_somewhere(c,d)
11016
11017
11018Pattern ED98
11019# evand new Pattern (3.5.4)
11020
11021.....
11022O.*.x
11023O...x
11024.....
11025.....
11026-----
11027
11028:8,OXed
11029
11030.....
11031A.*.b
11032A...c
11033.....
11034.....
11035-----
11036
11037;x_alive_somewhere(b,c) && weak(A)
11038
11039
11040Pattern ED99a
11041# pp New pattern (3.5.8)
11042
11043|..X.? stabilize the corner in double sente
11044|..XO.
11045|.XO.O
11046|.*...
11047+-----
11048
11049:8,OXd,reverse_followup(3)
11050
11051|..X.?
11052|..XA.
11053|.XO.O
11054|.*...
11055+-----
11056
11057; weak(A)
11058
11059
11060Pattern ED100
11061# gf New pattern. (3.7.8)
11062
11063..... cut through to weaken
11064X.O..
11065.XOX.
11066..*..
11067.....
11068-----
11069
11070:8,OXae
11071
11072
11073Pattern ED101
11074# gf New pattern. (3.7.9)
11075
11076|oo?
11077|.O?
11078|.*X
11079+---
11080
11081:8,Xd
11082
11083|oo?
11084|.a?
11085|.*X
11086+---
11087
11088;weak(a)
11089
11090
11091#####################################################################
11092#
11093# Center defend/attack patterns
11094#
11095# Moves that threaten to capture, cut, or destroy eyes, and moves
11096# defending against this or preventing such moves. Also moves that
11097# actually do capture or destroy eyes are included here.
11098#
11099######################################################################
11100
11101
11102Pattern CD1
11103
11104?xx? protect by drawing back
11105XO*.
11106XX.O
11107
11108:8,nOXd
11109
11110
11111Pattern CD3
11112
11113??? Usually better to atari on this side.
11114.*.
11115.XO
11116XO?
11117
11118:8,X,followup(5)
11119
11120???
11121.*.
11122.Xa
11123XO?
11124
11125;!oplay_attack(*,a)
11126
11127
11128Pattern CD7
11129
11130?X? attack eye
11131X.X
11132.*.
11133
11134:|,Xa
11135
11136?X?
11137A.B
11138.*.
11139
11140;weak(A) || weak(B) || !xterri(*)
11141
11142
11143Pattern CD28
11144
11145xXO? urgent to attack and defend
11146XOX.
11147.O*.
11148....
11149.X.?
11150
11151:8,ad
11152
11153
11154Pattern CD31
11155
11156?.X? vital point
11157.*.X
11158X.X?
11159?X??
11160
11161:8,Xa
11162
11163
11164Pattern CD39
11165
11166?Oo? vital point
11167OX.X
11168OX?*
11169?O..
11170?..?
11171
11172:8,OXa
11173
11174
11175Pattern CD40
11176
11177?X?? trap
11178.*..
11179OX..
11180?XO.
11181
11182:8,X
11183
11184?D??
11185.*b.
11186cEa.
11187?EO.
11188
11189;lib(E)==2 && !oplay_attack(*,c) && !oplay_defend_both(*,a,b,E,D)
11190
11191>test_attack_either_move(D,E);
11192
11193
11194# Pattern CD41
11195# # gf Too general, removed. See gunnar:87. (3.7.10)
11196#
11197# ?o? don't double atari if it backfires
11198# ?..
11199# .OX
11200# OX*
11201# ?.?
11202#
11203# :8,-
11204#
11205# ?o?
11206# ?.b
11207# ceX
11208# dX*
11209# ?a?
11210#
11211# ;!oplay_defend_both(*,a,b,c,d,e)
11212#
11213# >antisuji(*);
11214
11215
11216Pattern CD43
11217
11218.X.X kosumi tesuji
11219.*.X
11220X.O?
11221
11222:8,OXa
11223
11224.X.B
11225a*.B
11226X.O?
11227
11228;!attack(B) && oplay_attack(*,a,B)
11229
11230
11231Pattern CD48
11232
11233?xX?? prevent trouble
11234..X.O
11235O.O*.
11236.....
11237.....
11238
11239:8,OXed
11240
11241
11242Pattern CD49
11243
11244?Xx?? prevent trouble
11245..X.O
11246O.O*.
11247.....
11248.....
11249
11250:8,OXed
11251
11252
11253Pattern CD55
11254
11255?... Double peep
11256X.X.
11257o*..
11258OoX?
11259
11260:/,OXa
11261
11262
11263Pattern CD56
11264
11265.... Double peep
11266X.X.
11267.*..
11268O.X.
11269
11270:8,OXad
11271
11272gf..
11273ibX.
11274.*cd
11275O.he
11276
11277;oplay_attack(*,b,c,d,e,d) && oplay_attack(*,b,c,d,e,h)
11278;&& oplay_attack(*,c,b,f,g,f) && oplay_attack(*,c,b,f,g,i)
11279
11280
11281Pattern CD64
11282# Converse to ED68
11283
11284?XXO decrease eye space in sente (unless it kills)
11285X.*X
11286?XXO
11287
11288# helper sets followup value
11289:8,sXa,throw_in_atari_helper
11290
11291?XXa
11292Xc*A
11293?XXb
11294
11295;lib(A)==2 && lib(a)>1 && lib(b)>1 && proper_eye(c)
11296
11297
11298Pattern CD67
11299# Sometimes the cap or another move in the area kills.
11300# Always advisable to move out.
11301
11302??X? avoid cap
11303?O..
11304X.*.
11305?...
11306
11307:\,OXd
11308
11309??X?
11310?a..
11311X.*.
11312?...
11313
11314;lib(a)==3
11315
11316
11317Pattern CD76
11318
11319XOo atari (not aji keshi)
11320OX*
11321?.o
11322
11323:8,X
11324
11325Xao
11326bX*
11327?.o
11328
11329;attack(b) && !defend(b) && !oplay_attack(*,a)
11330
11331# Estimate a followup value
11332>threaten_to_save(b);
11333
11334
11335Pattern CD77
11336
11337?oo atari (not aji keshi)
11338X*o
11339OXO
11340?.o
11341
11342:8,X
11343
11344?oo
11345X*o
11346aXb
11347?.o
11348
11349;attack(a) && !defend(a) && !dead(b)
11350
11351# Estimate a followup value
11352>threaten_to_save(a);
11353
11354
11355Pattern CD79
11356# even if X can't cut, this prevents getting sealed
11357# this pattern works on second or third line also
11358
11359?OXX. tiger's mouth
11360..O..
11361.*...
11362.....
11363..X..
11364
11365:8,OXed
11366
11367
11368Pattern CD82
11369# Hard to value accurately. Wild guess that it may be worth 20 points.
11370# gf Inappropriate when scoring, disabled in that case. (3.7.2)
11371
11372?xxxx capture ladder to eliminate aji
11373?xxxx
11374O*.xx
11375OXO.?
11376?O???
11377
11378:8,O,value(20)
11379
11380?xxxx
11381?xxxx
11382O*.xx
11383aCb.?
11384?O???
11385
11386;!doing_scoring && (!same_dragon(a,b) || potential_cutstone(C))
11387
11388
11389Pattern CD83
11390
11391?OOX? tesuji to break out
11392X..X?
11393?*...
11394??..?
11395
11396:8,OXed
11397
11398?AOX?
11399Xabf?
11400?*cd.
11401??e.?
11402
11403;(lib(A)>1) && oplay_attack(*,a,b,c,d,e,f)
11404
11405
11406Pattern CD87
11407# gf Reduced shape value. (3.5.2)
11408
11409.XO create cutting points
11410.*.
11411.XO
11412
11413:-,OXad,shape(3)
11414
11415cXO
11416a*b
11417dXO
11418
11419# The second move by X at a is intentional and has the effect of X passing.
11420;oplay_attack(*,b,b)
11421;&& !oplay_attack(*,a,b,a,c,c) && !oplay_attack(*,a,b,a,d,d)
11422
11423
11424Pattern CD88
11425#tm removed shape bonus (3.1.22) (see nngs:700)
11426
11427X*.. attack 1 stone to defend and probably connect
11428O..O
11429
11430:8,OXcad
11431
11432a*..
11433O..O
11434
11435; does_attack(*,a)
11436
11437
11438Pattern CD89
11439# gf Reduced shape value. (3.5.2)
11440
11441?OXoo prevent ponnuki
11442.XO*o
11443?.Xoo
11444
11445:8,OXead,shape(3)
11446
11447?OAoo
11448.XO*o
11449?.Xoo
11450
11451;lib(A)>1 || !oplay_defend(*,A)
11452
11453
11454Pattern CD90
11455# gf Reduced shape value. (3.5.2)
11456
11457OXx extending usually better than capturing, but not at edge
11458XOX
11459?*.
11460???
11461
11462:8,OXead,shape(3)
11463
11464bXx
11465AOX
11466?*.
11467???
11468
11469; lib(A)==1 && lib(b)>1 && does_attack(*,A)
11470
11471
11472Pattern CD91
11473# gf Revised constraint. (3.3.18)
11474# gf Reduced shape value. (3.5.2)
11475
11476?XO. atari to prevent opponent's expansion
11477OOX.
11478..*.
11479
11480:8,XEd,shape(3)
11481
11482?Xa.
11483bbX.
11484..*.
11485
11486; alive(b) && attack(a) && !defend(a)
11487
11488
11489Pattern CD92
11490# tm Modified (3.1.20) - added constraint
11491
11492.X. ponnuki is worth thirty points
11493XO*
11494.XO
11495
11496:8,ad,shape(3)
11497
11498.X.
11499XO*
11500.aO
11501
11502; !attack(a)
11503
11504
11505Pattern CD92a
11506# db added X class (3.3.5)
11507
11508.O. ponnuki is worth thirty points
11509OX*
11510.Ox
11511
11512:8,OXead,shape(1)
11513
11514
11515Pattern CD92b
11516
11517.O. ponnuki, preventing threat to cut
11518OX*
11519.OX
11520
11521:8,Oead,shape(3),reverse_followup(8)
11522
11523aO.
11524OX*
11525.OX
11526
11527; !xplay_attack_either(*,?,a,*,a)
11528
11529
11530Pattern CD93
11531# gf Removed fixed value and reduced shape. (3.5.2)
11532
11533?OX. break through one way or the other
11534?*..
11535X.X.
11536...O
11537
11538:8,XBad,shape(3)
11539
11540?OF.
11541?*be
11542DcE.
11543.d.O
11544
11545; oplay_break_through(*,b,c,d,D,d,E) && oplay_break_through(*,c,b,e,F,e,E)
11546
11547
11548Pattern CD94
11549# gf Split and revised. (3.3.14)
11550# gf Reduced shape value. (3.5.2)
11551
11552???????? jump out
11553????????
11554........
11555..*.....
11556X...????
11557x.O..???
11558
11559:8,OXEad,shape(3)
11560
11561????????
11562????????
11563........
11564..*.....
11565X...abcd
11566x.O..???
11567
11568; x_alive_somewhere(a,b,c,d)
11569
11570
11571Pattern CD94b
11572# gf Split and revised. (3.3.14)
11573# gf Reduced shape value. (3.5.2)
11574
11575???????? jump out
11576????????
11577........
11578..*.....
11579X...????
11580O.O..???
11581
11582:8,OXEad,shape(3)
11583
11584????????
11585????????
11586........
11587..*.....
11588Xe..abcd
11589f.O..???
11590
11591; x_alive_somewhere(a,b,c,d) && oplay_connect(*,e,*,f)
11592
11593
11594Pattern CD95
11595# One point to the left is sometimes better
11596
11597oO.. seal the opponent
11598....
11599X.*.
11600....
11601oO..
11602
11603:-,OXEad,shape(2)
11604
11605
11606Pattern CD96
11607
11608.O? hane, threatening capture
11609...
11610X*.
11611O.X
11612
11613:8,OXad,shape(3)
11614
11615.O?
11616...
11617B*.
11618OaX
11619
11620; oplay_attack(*,a,B)
11621
11622
11623Pattern CD99
11624# gf Revised constraint. (3.1.14)
11625# gf Added !doing_scoring since this can generate a losing ko threat.
11626# We might want to take it out entirely. (3.3.17)
11627
11628OX if a cutting stone can't be caught,
11629X* play in opponent's territory
11630
11631:8,OX,followup_value(3)
11632
11633OA
11634B*
11635
11636;!doing_scoring && !attack(A) && !attack(B) && xterri(*)
11637
11638
11639# FIXME: The two following patterns may be superfluous due to the
11640# atari_atari code.
11641
11642Pattern CD102
11643
11644*X? don't help the opponent cut
11645O.O
11646...
11647
11648:8,OX,shape(-3)
11649
11650*X?
11651OaO
11652cb.
11653
11654; xplay_attack(a,b,c,c) && !oplay_attack(*,a,b,c,c)
11655
11656
11657Pattern CD104a
11658# gf Revised constraint.
11659# gf Split pattern. We can't have eE classification unless b is alive. (3.1.32)
11660
11661... atari using dead stone
11662.*.
11663OX.
11664XO?
11665
11666:8,Ed
11667
11668...
11669.*.
11670bX.
11671XA?
11672
11673;lib(b)>1 && alive(b) && attack(A) && !defend(A)
11674
11675
11676Pattern CD104b
11677# gf Revised constraint.
11678# gf Split pattern. We can't have eE classification unless b is alive. (3.1.32)
11679
11680... atari using dead stone
11681.*.
11682OX.
11683XO?
11684
11685:8,d,shape(3)
11686
11687...
11688.*.
11689bX.
11690XA?
11691
11692;lib(b)>1 && attack(A) && !defend(A)
11693
11694
11695Pattern CD105
11696
11697?.X? eliminate aji and danger of misreading!
11698O.*O
11699x...
11700xxxx
11701
11702:8,Ot
11703
11704?.A?
11705O.*b
11706x...
11707xxxx
11708
11709; dead(A) && effective_size(A)>8 && lib(b)<=4
11710
11711
11712Pattern CD107
11713# db added (3.1.8)
11714# gf Added O classification. (3.1.12)
11715# evand modified (3.5.4)
11716
11717?x.??
11718xX..? good shape keima
11719..*.?
11720O...?
11721
11722:8,OXead
11723
11724?x.??
11725xX..?
11726.a*.?
11727Abc.?
11728
11729; !dead(A) && oplay_attack(*,a,b,c,c)
11730
11731
11732Pattern CD108
11733# db added (3.1.8)
11734# Exception to CD107
11735
11736?xX.. bad shape keima
11737O..*.
11738XO...
11739
11740:8,-,shape(-3)
11741
11742
11743Pattern CD109
11744# gf New pattern. (3.3.18)
11745
11746.OX defend cut to attack
11747.*O
11748.OX
11749
11750:-,Xa,shape(2)
11751
11752.cX
11753.*a
11754.bX
11755
11756;lib(a)==1 && (alive(b) || alive(c))
11757;&& (xplay_attack(*,b) || xplay_attack(*,c))
11758
11759
11760######################################################################
11761#
11762# Edge joseki patterns.
11763#
11764# Standard invasions of wide extensions, sequences following
11765# attachment under edge stones, and other standard patterns
11766# often warranting a j or J classification.
11767#
11768######################################################################
11769
11770
11771Pattern EJ1
11772
11773?.... sacrifice cut
11774oO*X.
11775o.XO.
11776.....
11777-----
11778
11779:8,sEdJ
11780
11781
11782Pattern EJ2
11783
11784?.... hane if attached under fourth line stone
11785x.O..
11786?.X*.
11787?....
11788?....
11789-----
11790
11791:8,OedJ
11792
11793
11794Pattern EJ2b
11795
11796..... create cutting points while strengthening own stones
11797.O.O.
11798.X*X.
11799.....
11800.....
11801-----
11802
11803:8,edJ
11804
11805
11806Pattern EJ3
11807
11808?...? block on top if 2 space extension is invaded
11809..*..
11810O.XO.
11811.....
11812.....
11813-----
11814
11815:8,EadJ
11816
11817
11818Pattern EJ4
11819#tm modified (3.1.18)
11820# added ? column.
11821
11822...*.? continuation -- never play 'a' here
11823.OOX.o
11824..XOX?
11825.....?
11826------
11827
11828:8,Edj
11829
11830...*.?
11831.OOX.o
11832.aXOX?
11833.....?
11834------
11835
11836>antisuji(a);
11837
11838
11839Pattern EJ6
11840
11841...O.? continuation
11842.OOX*.
11843..X.X.
11844...X.?
11845------
11846
11847:8,Eaj
11848
11849
11850Pattern EJ7
11851
11852?????...?
11853........?
11854.O..O.X.o
11855......*..
11856.........
11857---------
11858
11859:8,ed
11860
11861?????...?
11862........?
11863.O..O.A.o
11864......*..
11865.........
11866---------
11867
11868;!weak(A)
11869
11870
11871Pattern EJ7b
11872#gf New pattern. (3.1.12)
11873
11874?????...?
11875........?
11876.O..O.X.o
11877.....*OX.
11878.........
11879---------
11880
11881:8,ed
11882
11883
11884Pattern EJ8
11885
11886??X..... extend from tsukenobi
11887X.XO....
11888XOO...*.
11889........
11890........
11891--------
11892
11893:8,ed
11894
11895
11896Pattern EJ9
11897
11898..*.? tsukenobi shape
11899O.OX?
11900..X.x
11901....?
11902....?
11903-----
11904
11905:8,Ed
11906
11907
11908Pattern EJ12
11909# Invade if we have two ladders on our side.
11910
11911ooooo invade
11912.oooo
11913...oo
11914X....
11915..*.X
11916.....
11917.....
11918-----
11919
11920:8,I
11921
11922ooooo
11923.oooo
11924.e.oo
11925IcB..
11926gD*FX
11927..H..
11928.....
11929-----
11930
11931;oplay_attack(*,B,c,D,e,B) && oplay_attack(*,B,c,D,e,F,g,H,I);
11932
11933
11934Pattern EJ13
11935
11936..... invade
11937.....
11938.....
11939X.*.X
11940.....
11941.....
11942-----
11943
11944:8,I
11945
11946.....
11947..a..
11948.....
11949X.*.X
11950.....
11951.....
11952-----
11953
11954;!xmoyo(a)
11955
11956
11957Pattern EJ13b
11958# gf New pattern. (3.3.13)
11959
11960o...... invade
11961o......
11962O.X.*.X
11963o......
11964o......
11965-------
11966
11967:8,Ia
11968
11969o......
11970o......
11971a.X.*.X
11972o......
11973o......
11974-------
11975
11976;!weak(a)
11977
11978
11979Pattern EJ14
11980
11981...... invade
11982......
11983......
11984X.*..X
11985......
11986......
11987------
11988
11989:8,I
11990
11991......
11992..a...
11993......
11994X.*..X
11995......
11996......
11997------
11998
11999;!xmoyo(a)
12000
12001
12002Pattern EJ15
12003
12004??....? cap stone on third line
12005..*....
12006.......
12007..X..O.
12008.......
12009.......
12010-------
12011
12012:8,Ea
12013
12014??....?
12015..*....
12016.......
12017a.X..O.
12018.......
12019.......
12020-------
12021
12022;!xmoyo(a)
12023
12024
12025Pattern EJ17
12026
12027..... cut!
12028.X*O.
12029.OX..
12030.....
12031.....
12032-----
12033
12034:8,adJ
12035
12036
12037Pattern EJ18
12038# Override capturing single X stone.
12039
12040?oXXOOo Connect underneath.
12041oOXOX.o
12042o.*O..o
12043o.....o
12044-------
12045
12046:8,ed
12047
12048?oXXOOo
12049oOXOXao
12050o.*Ob.o
12051o..c..o
12052-------
12053
12054>antisuji(a);
12055>antisuji(b);
12056>antisuji(c);
12057
12058
12059Pattern EJ19
12060# Override capturing single X stone.
12061
12062???.??? Punish overplay.
12063?o*XOOo
12064oOXOX.o
12065o.XO..o
12066o.....o
12067-------
12068
12069:8,ad
12070
12071???.???
12072?o*XOOo
12073oOXOXao
12074o.XOb.o
12075o..c..o
12076-------
12077
12078>antisuji(a);
12079>antisuji(b);
12080>antisuji(c);
12081
12082
12083Pattern EJ20
12084
12085?x.XOOo Connect underneath.
12086oOXOX.o
12087o.*O..o
12088o.....o
12089-------
12090
12091:8,ed
12092
12093?x.XOOo
12094oOXOXao
12095o.*Ob.o
12096o..c..o
12097-------
12098
12099>antisuji(a);
12100>antisuji(b);
12101>antisuji(c);
12102
12103
12104Pattern EJ21
12105
12106....? tsukeosae shape
12107O.OX?
12108.*X.x
12109....?
12110....?
12111-----
12112
12113:8,ed
12114
12115
12116Pattern EJ22
12117
12118oo.X.? continuation
12119?..*..
12120?OOX.O
12121?.XOX.
12122?.....
12123------
12124
12125:8,a
12126
12127
12128Pattern EJ23
12129
12130oo.X.? continuation
12131?..O*.
12132?OOXXO
12133?.XOX.
12134?.....
12135------
12136
12137:8,a
12138
12139
12140Pattern EJ24
12141
12142XX.. extend on fourth line if pushed
12143.O*.
12144....
12145....
12146....
12147----
12148
12149:8,ed
12150
12151
12152Pattern EJ25
12153
12154XXX.. extend on fourth line if pushed
12155.OO*.
12156.....
12157.....
12158.....
12159-----
12160
12161:8,ed
12162
12163
12164Pattern EJ26
12165
12166XXXX.. extend on fourth line if pushed
12167.OOO*.
12168......
12169......
12170......
12171------
12172
12173:8,ed
12174
12175
12176Pattern EJ27
12177
12178........ wedge in after invasion
12179...X*X..
12180.X.O....
12181........
12182........
12183--------
12184
12185:8,d
12186
12187
12188Pattern EJ28
12189
12190....X... follow up
12191..XXOX..
12192.X.OO*..
12193........
12194........
12195--------
12196
12197:8,ed
12198
12199
12200Pattern EJ29
12201
12202....X... follow up
12203..XXOXX.
12204.X.OOO*.
12205........
12206........
12207--------
12208
12209:8,ed
12210
12211
12212Pattern EJ30
12213
12214oo.X.? continuation
12215?.....
12216?O.X*O
12217?..OX.
12218?.....
12219------
12220
12221:8,a
12222
12223oo.D.?
12224?.....
12225?a.C*b
12226?.eOX.
12227?.....
12228------
12229
12230>add_connect_move(a,b);
12231>add_cut_move(C,D);
12232>antisuji(e);
12233
12234
12235Pattern EJ31
12236
12237??..???? connect out beneath
12238xxX.....
12239x.O*.X.O
12240x.......
12241?.......
12242--------
12243
12244:8,ed
12245
12246?a..?b??
12247xxX.....
12248x.O*.X.O
12249x.......
12250?.......
12251--------
12252
12253;!oarea(a) && !xmoyo(b)
12254
12255
12256Pattern EJ32
12257
12258??..???? connect out beneath, continuation
12259xxXX....
12260x.OO*X.O
12261x.......
12262?.......
12263--------
12264
12265:8,ed
12266
12267?a..?b??
12268xxXX....
12269x.OO*X.O
12270x.......
12271?.......
12272--------
12273
12274;!oarea(a) && !xmoyo(b)
12275
12276
12277Pattern EJ33
12278# gf Sometimes it's better to play one step to the left. See
12279# nngs:1180. (3.3.7)
12280# gf Revised classification. (3.5.2)
12281
12282...XX common important follow up
12283.O.*O
12284.....
12285.....
12286-----
12287
12288:8,XCd
12289
12290
12291Pattern EJ34
12292
12293....O. break through
12294.X.OX.
12295...X*.
12296......
12297......
12298------
12299
12300:8,J
12301
12302
12303Pattern EJ35
12304
12305....O. break through
12306.X.OXX
12307..*XO.
12308......
12309......
12310------
12311
12312:8,J
12313
12314
12315Pattern EJ37
12316
12317..X... hane after attachment
12318......
12319.XO..O
12320.*....
12321......
12322------
12323
12324:8,J
12325
12326
12327Pattern EJ39
12328# sometimes the solid connection would be better
12329# gf Removed fixed value, added d classification. (3.5.2)
12330
12331?.XX.O draw back to defend
12332.O.O*.
12333......
12334......
12335------
12336
12337:8,d
12338
12339?.XX.O
12340.O.O*.
12341a.....
12342......
12343------
12344
12345> antisuji(a)
12346
12347
12348Pattern EJ40
12349# This pattern is sometimes too general. But more often than not, this is
12350# worth doing.
12351
12352XXx?? push to prevent opponent's block
12353OOXX?
12354..O*.
12355.....
12356-----
12357
12358:8,OXt
12359
12360
12361Pattern EJ41
12362
12363?..O? solid connection
12364xX*OX
12365..OXX
12366.....
12367-----
12368
12369:8,OJ
12370
12371?..O?
12372xX*OX
12373.aOXX
12374.....
12375-----
12376
12377>antisuji(a);
12378
12379
12380Pattern EJ42
12381
12382.....
12383..*.. jump
12384....X
12385X.O.x
12386.....
12387.....
12388-----
12389
12390:8,t
12391
12392
12393Pattern EJ43
12394# gf Revised. (3.3.16)
12395
12396?...? connect after peep
12397x.O.x
12398x.*Xx
12399x.O.x
12400?...?
12401?...?
12402-----
12403
12404:8,OJ
12405
12406
12407Pattern EJ44
12408# gf Reduced shape value. (3.5.2)
12409
12410...... almost an antisuji
12411oO.X..
12412..XO*.
12413......
12414......
12415------
12416
12417:8,-,shape(-3)
12418
12419
12420Pattern EJ45
12421
12422?....? hane making shape in the center
12423?.*..?
12424?.XOOo
12425?..XX?
12426?....?
12427?....?
12428------
12429
12430:8,J
12431
12432?....?
12433?.*..?
12434?.XBBo
12435?.aXX?
12436?....?
12437?....?
12438------
12439
12440; !safe_omove(a) && !oplay_attack(*,B)
12441
12442
12443Pattern EJ46
12444# tm modified (3.1.23) (see arend:3)
12445
12446.X. Defend after the peep
12447O*O
12448...
12449...
12450...
12451---
12452
12453:8,XeCd
12454
12455
12456Pattern EJ47
12457
12458........... invade on the third line
12459...........
12460.........xx
12461X...*....xx
12462...........
12463...........
12464-----------
12465
12466:8,t,shape(2)
12467
12468...........
12469...........
12470.........ab
12471X...*....cd
12472...........
12473...........
12474-----------
12475
12476; x_alive_somewhere(a,b,c,d)
12477
12478
12479Pattern EJ49b
12480# Actually 'a' is often playable
12481
12482..*.. connect on the outside
12483OOX.O
12484.XOX.
12485.....
12486.....
12487-----
12488
12489:8,sEj
12490
12491..*..
12492OOX.O
12493bXOX.
12494..a..
12495.....
12496-----
12497
12498>antisuji(a);
12499>antisuji(b);
12500
12501
12502Pattern EJ50
12503# tm Modified (3.1.22) (see nngs:1740)
12504
12505??.....?? good extension
12506?.O.....x
12507OO....*.x
12508.........
12509.........
12510---------
12511
12512:8,sed,shape(3)
12513
12514
12515Pattern EJ51
12516
12517...... connection is urgent for local shape
12518......
12519.O*...
12520.XO...
12521X.....
12522......
12523------
12524
12525:8,J
12526
12527......
12528......
12529.O*...
12530.AO...
12531X.....
12532......
12533------
12534
12535; !attack(A)
12536
12537
12538Pattern EJ52
12539
12540..... extend to stabilize shape
12541..*.O
12542xXO..
12543xxX.O
12544.....
12545.....
12546-----
12547
12548:8,J
12549
12550
12551Pattern EJ53
12552
12553.......xxx extend to stabilize group
12554......OO.X
12555..*...OXXx
12556..........
12557..........
12558----------
12559
12560:8,J
12561
12562
12563Pattern EJ54
12564
12565......| block the corner
12566X.O...|
12567..OX..|
12568.*X...|
12569......|
12570------+
12571
12572:8,J
12573
12574
12575Pattern EJ55
12576
12577....... tiger's mouth
12578..X.O..
12579..*.OX.
12580...OXxx
12581.....x.
12582-------
12583
12584:8,J
12585
12586.......
12587..X.O..
12588..*.OX.
12589...OXab
12590.....c.
12591-------
12592
12593; x_alive_somewhere(a,b,c)
12594
12595
12596Pattern EJ56
12597
12598.......? pull back to stabilize group
12599..OX..oo
12600..XO*.oo
12601.......o
12602........
12603--------
12604
12605:8,J
12606
12607.......?
12608..OX..ab
12609..XO*.cd
12610.......o
12611........
12612--------
12613
12614; o_alive_somewhere(a,b,c,d)
12615
12616
12617Pattern EJ57
12618
12619??.x? stop effective cut and probably connect
12620OOX*O
12621.XO..
12622.....
12623-----
12624
12625:8,cJ
12626
12627??.x?
12628OOA*O
12629.XO..
12630.....
12631-----
12632
12633;!attack(A)
12634
12635
12636Pattern EJ58
12637
12638....... urgent! attach at the top
12639oo.*.O?
12640oO.X.oo
12641o......
12642.......
12643-------
12644
12645:8,J
12646
12647
12648Pattern EJ59
12649
12650o... seal with sente
12651o.*O
12652oOXX
12653....
12654....
12655----
12656
12657:8,J
12658
12659o...
12660o.*O
12661oOAA
12662....
12663....
12664----
12665
12666; owl_threatens(*,A)
12667
12668
12669Pattern EJ60
12670# sometimes the double hane is better
12671
12672..oOO extend with sente
12673.*OXX
12674..X..
12675.....
12676-----
12677
12678:8,J
12679
12680..oOO
12681.*OAA
12682..X..
12683.....
12684-----
12685
12686; owl_threatens(*,A)
12687
12688
12689Pattern EJ62a
12690# gf Split and revised. (3.5.2)
12691
12692XX... push to expand threatened dragon
12693OOX..
12694..*..
12695.....
12696-----
12697
12698:8,OJ
12699
12700XX...
12701aaX..
12702..*..
12703.....
12704-----
12705
12706;owl_threatens(*,a)
12707
12708
12709Pattern EJ62b
12710# gf Split and revised. (3.5.2)
12711
12712XX... push to expand threatened dragon
12713OOX..
12714..*..
12715.....
12716-----
12717
12718:8,d,followup(8)
12719
12720XX...
12721aaX..
12722..*..
12723.....
12724-----
12725
12726;critical(a)
12727
12728
12729Pattern EJ63a
12730# gf Split and revised. (3.5.2)
12731
12732XX.... push again to expand threatened dragon
12733OOXX..
12734..O*..
12735......
12736------
12737
12738:8,J
12739
12740XX....
12741aaXX..
12742..O*..
12743......
12744------
12745
12746;owl_threatens(*,a)
12747
12748
12749Pattern EJ63
12750# gf Split and revised. (3.5.2)
12751
12752XX.... push again to expand threatened dragon
12753OOXX..
12754..O*..
12755......
12756------
12757
12758:8,d,followup(8)
12759
12760XX....
12761aaXX..
12762..O*..
12763......
12764------
12765
12766;critical(a)
12767
12768
12769Pattern EJ64
12770
12771XX.... atari after double hane
12772OOX*..
12773..OX..
12774......
12775------
12776
12777:8,J
12778
12779BBa...
12780OOX*..
12781..OX..
12782......
12783------
12784
12785; !oplay_attack(a,*,B)
12786
12787
12788Pattern EJ65
12789
12790?X........ extend from ponnuki to make a base
12791?XO....*.x
12792XO.O......
12793..O.......
12794----------
12795
12796:8,J
12797
12798?X........
12799?XO....*.x
12800aO.O......
12801..O.......
12802----------
12803
12804; !attack(a)
12805
12806
12807Pattern EJ66
12808
12809?X......x extend from ponnuki to make a base
12810?XO...*.x
12811XO.O.....
12812..O......
12813---------
12814
12815:8,J
12816
12817?X......x
12818?XO...*.x
12819aO.O.....
12820..O......
12821---------
12822
12823; !attack(a)
12824
12825
12826Pattern EJ67
12827
12828........ standard move to break connection and move out
12829........
12830....*...
12831.X.O....
12832.....X..
12833........
12834........
12835--------
12836
12837:8,J
12838
12839
12840Pattern EJ68
12841
12842........ standard move to break connection and move out
12843........
12844....O...
12845.X.O....
12846..*X.X..
12847........
12848........
12849--------
12850
12851:8,J
12852
12853
12854Pattern EJ69
12855
12856........ standard move to break connection and move out
12857........
12858....O...
12859.XXO....
12860..OX*X..
12861........
12862........
12863--------
12864
12865:8,J
12866
12867
12868Pattern EJ71
12869
12870........ standard move to break connection and move out
12871........
12872....O...
12873.XXO....
12874..OXOX..
12875...X*...
12876........
12877--------
12878
12879:8,J
12880
12881
12882Pattern EJ72
12883# If the right edge is the fourth line this is
12884# not too good because it provokes X to make territory
12885# but there is no really good move in this case.
12886
12887..... jump again
12888..*..
12889....X
12890..O..
12891....X
12892X.O..
12893.....
12894.....
12895-----
12896
12897:8,J
12898
12899
12900Pattern EJ73
12901
12902x.......... invade open space
12903x..........
12904X..........
12905x.....*....
12906...........
12907...........
12908-----------
12909
12910:8,t
12911
12912
12913Pattern EJ74
12914
12915??X... defend cut
12916xXXO..
12917XOO.*.
12918......
12919......
12920------
12921
12922:8,J
12923
12924
12925Pattern EJ75
12926#tm modified (3.1.22) (see trevorc:420)
12927#FIXME: Pattern still seems a bit too general
12928# consider adding appropriate constraint.
12929
12930.X.?? connect under
12931O*.oo
12932.....
12933.....
12934-----
12935
12936:8,XeE
12937
12938.X.??
12939O*.ab
12940.....
12941.....
12942-----
12943
12944; o_alive_somewhere(a,b)
12945
12946
12947Pattern EJ76
12948
12949..X... tsukenobi
12950X.XO..
12951.*O...
12952......
12953......
12954------
12955
12956:8,j
12957
12958
12959Pattern EJ77
12960
12961??oo... connection is urgent
12962?XO....
12963?XO*X..
12964xxXO...
12965x?.....
12966-------
12967
12968:8,j
12969
12970??ab...
12971?XO....
12972?XO*X..
12973cdXO...
12974e?.....
12975-------
12976
12977; o_alive_somewhere(a,b) && x_alive_somewhere(c,d,e)
12978
12979
12980Pattern EJ78
12981
12982..... seal the side
12983....O
12984.*O.?
12985O.XX?
12986.....
12987.....
12988-----
12989
12990:8,j
12991
12992
12993Pattern EJ79
12994
12995|..X??x make a base
12996|.O.X.x
12997|.....x
12998|..O...
12999|......
13000|..*...
13001|......
13002|..xxx?
13003
13004:8,j
13005
13006|..X??b
13007|.O.X.a
13008|.....x
13009|..O...
13010|......
13011|..*...
13012|......
13013|..cdx?
13014
13015; x_alive_somewhere(a,b) && x_alive_somewhere(c,d)
13016
13017
13018Pattern EJ80
13019# db generalized (3.1.25)
13020
13021|...O.x even a computer connects after nozoki
13022|..X*.x
13023|...O.x
13024|....??
13025|..x.??
13026
13027:8,J
13028
13029
13030Pattern EJ81
13031# db added (3.1.4)
13032# gf Revised. (3.3.14)
13033
13034?....x.. seal the side
13035?O.O....
13036o..*.X.x
13037........
13038........
13039--------
13040
13041:8,j
13042
13043?....x..
13044?O.O....
13045o..*.Abx
13046........
13047........
13048--------
13049
13050;x_visible_along_edge(A,b)
13051
13052
13053Pattern EJ81b
13054# gf New pattern. (3.3.14)
13055
13056?....X.... seal the side to attack
13057?O.O...ooo
13058o..*.X.ooo
13059..........
13060..........
13061----------
13062
13063:8,j
13064
13065?....X....
13066?O.O...def
13067o..*.X.abc
13068..........
13069..........
13070----------
13071
13072;o_somewhere(a,b,c,d,e,f)
13073
13074
13075Pattern EJ81c
13076# gf New pattern. (3.3.14)
13077# FIXME: May wish to prefer other pincers in some situations.
13078
13079?......... pincer
13080?O.O......
13081o....X.*..
13082..........
13083..........
13084----------
13085
13086:8,j
13087
13088?.........
13089?O.O......
13090o....Ab*..
13091..........
13092..........
13093----------
13094
13095;o_visible_along_edge(A,b)
13096
13097
13098Pattern EJ82
13099# db added (3.1.4)
13100
13101?oO.. answer the peep!
13102XXO..
13103?O*X.
13104.....
13105-----
13106
13107:8,j
13108
13109?oA..
13110XXA..
13111?O*X.
13112.....
13113-----
13114
13115; !dead(A)
13116
13117
13118Pattern EJ84
13119# gf Made pattern more powerful. (3.1.9)
13120# gf Added one more replacement point. (3.1.10)
13121
13122...... Atari before connecting
13123..*...
13124X.XO..
13125.XO...
13126......
13127......
13128------
13129
13130:8,J,reverse_followup(10)
13131
13132......
13133..*c..
13134X.XO..
13135.XObe.
13136.fad..
13137......
13138------
13139
13140>replace(a,*);
13141>replace(b,*);
13142>replace(c,*);
13143>replace(d,*);
13144>replace(e,*);
13145>replace(f,*);
13146
13147
13148Pattern EJ85
13149# db added (3.1.8)
13150
13151??O.X? Important sente block
13152?XO...
13153..X*..
13154......
13155------
13156
13157:8,OJ
13158
13159
13160Pattern EJ86
13161# db added (3.1.9)
13162
13163?..... extend automatically
13164xX..oo
13165XO*.oo
13166?.....
13167?.....
13168------
13169
13170:8,XJ
13171
13172?.....
13173xX..ab
13174XO*.cd
13175?.....
13176?.....
13177------
13178
13179; o_alive_somewhere(a,b,c,d)
13180
13181
13182Pattern EJ87
13183#db added (3.1.9)
13184
13185??.... extend after the top attachment
13186..X...
13187..O*..
13188......
13189......
13190......
13191------
13192
13193:8,J
13194
13195
13196Pattern EJ88
13197# gf New pattern. (3.1.17)
13198
13199...... connect after invasion
13200......
13201.O.*.O
13202...X.O
13203......
13204......
13205------
13206
13207:8,J
13208
13209
13210Pattern EJ89
13211# gf New pattern. (3.1.17)
13212
13213...... connect after invasion
13214......
13215.O.X.O
13216...*.O
13217......
13218......
13219------
13220
13221:8,J
13222
13223
13224Pattern EJ90
13225# db New pattern (3.1.26)
13226
13227?XX.... extend on the fourth line
13228..O*...
13229O......
13230.......
13231.......
13232-------
13233
13234:8,J
13235
13236
13237Pattern EJ91
13238# db New pattern (3.1.26)
13239# gf Demoted from J to j. See e.g. trevorc:1180 and nngs4:485. (3.7.1)
13240
13241?..... large block affecting stability of both
13242..O.oo
13243.X*..o
13244......
13245......
13246------
13247
13248:8,j
13249
13250
13251Pattern EJ92
13252# db new pattern (3.1.28)
13253
13254oo......... extend to build moyo
13255oo.....*...
13256oooo...OXX.
13257ooo.....O.X
13258.........ox
13259...........
13260-----------
13261
13262:8,j
13263
13264oo.........
13265oo.....*...
13266abcg..iOXX.
13267def.....O.X
13268.........hx
13269...........
13270-----------
13271
13272; o_alive_somewhere(a,b,c,d,e,f,g)
13273> replace(h,*);
13274> replace(i,*)
13275
13276
13277Pattern EJ93
13278# db new pattern (3.1.32)
13279# db modified (3.3.9)
13280
13281|..xx....... stand to defend
13282|...........
13283|...X.*..xxx
13284|....XO..xxx
13285|...........
13286|...........
13287+-----------
13288
13289:8,j
13290
13291|..xx.......
13292|...........
13293|...X.*..xxx
13294|....XO..xxx
13295|....cba....
13296|...........
13297+-----------
13298
13299> replace(a,*);
13300> replace(b,*);
13301> replace(c,*)
13302
13303
13304Pattern EJ94
13305# db new pattern (3.3.3)
13306# See nngs1:53
13307
13308..... Block!
13309..O..
13310..X*.
13311.X.O.
13312.....
13313.....
13314-----
13315
13316:8,j
13317
13318.....
13319.aO..
13320..X*.
13321.X.O.
13322.....
13323.....
13324-----
13325
13326> replace(a,*)
13327
13328
13329Pattern EJ95
13330# db added (3.3.6)
13331
13332.....? attach below
13333..X.O?
13334O.*.oo
13335......
13336......
13337------
13338
13339:8,j
13340
13341
13342Pattern EJ96
13343# db added (3.3.6)
13344
13345..XXOO Don't allow the cut with sente!
13346.OXOX.
13347..*O..
13348......
13349------
13350
13351:8,j
13352
13353..XXOO
13354.OXOA.
13355..*O..
13356......
13357------
13358
13359; !oplay_defend(*,A)
13360
13361
13362Pattern EJ97
13363# db added (3.3.6)
13364
13365...... seal the opponent, connecting loosely
13366oo.*O.
13367ooo.XX
13368......
13369......
13370------
13371
13372:8,j
13373
13374......
13375ab.*O.
13376cde.XX
13377......
13378......
13379------
13380
13381; o_alive_somewhere(a,b,c,d,e)
13382
13383
13384Pattern EJ98
13385# db added (3.3.7)
13386
13387O..X.? connect
13388O..*O.
13389......
13390......
13391------
13392
13393:8,j
13394
13395
13396Pattern EJ99
13397# db added (3.3.14)
13398# see nngs3:330 where GNU thinks e is an owl attack
13399
13400........ seal the opponent
13401oooO*.oo
13402ooOXX.oo
13403o.......
13404........
13405--------
13406
13407:8,j,shape(3)
13408
13409........
13410oooO*.ab
13411ooOXX.cd
13412o.e.....
13413........
13414--------
13415
13416; o_somewhere(a,b,c,d)
13417> replace(e,*)
13418
13419
13420Pattern EJ100
13421# db added (3.3.14)
13422
13423|...O... seal the opponent
13424|.......
13425|...X*..
13426|...XO..
13427|..XOO..
13428
13429:8,jda
13430
13431
13432Pattern EJ101
13433# gf New pattern. (3.5.3)
13434# See nngs:1020.
13435
13436......X
13437.O..OX.
13438.....*O
13439.......
13440-------
13441
13442:8,jcd
13443
13444
13445######################################################################
13446#
13447# Seki patterns.
13448#
13449# Patterns to reduce territory into sekis.
13450#
13451# seki_helper(a) verifies that no string surrounding a can be
13452# captured.
13453#
13454######################################################################
13455
13456
13457Pattern S1
13458# With no supporting stones, a 5 points gote seki.
13459# If X does not reply, the corner point makes ko.
13460# but this is not a good ko because it takes 4 moves
13461# to remove the X stones, while O loses the seki
13462# if it loses the ko. Moreover if X immediately plays
13463# atari at one 1-2 point we have to answer at the second
13464# 1-2 point, after which X can leave it without aji. So
13465# this move is gote and no folloup value is assigned.
13466
13467|XX??
13468|.XX?
13469|o*XX
13470|.o.X
13471+----
13472
13473:/,sXe,terri(5)
13474
13475|AA??
13476|.AA?
13477|o*AA
13478|.o.A
13479+----
13480
13481;lib(A)==3 && seki_helper(A)
13482
13483
13484Pattern S2
13485# With no enemy stones, 5 points gote to defend territory.
13486
13487|OO??
13488|.OO?
13489|*xOO
13490|.x.O
13491+----
13492
13493:8,Oe,terri(6)
13494
13495|aa??
13496|.aa?
13497|*xaa
13498|.x.a
13499+----
13500
13501;lib(a)<=3 && seki_helper(a)
13502
13503
13504Pattern S3
13505# 7 points sente seki. If X does not answer, we can kill,
13506# which at the very least is worth another 20 points.
13507
13508|XXXXX
13509|..*.X
13510|....X
13511+-----
13512
13513:8,sXe,terri(7),followup(20)
13514
13515|AAAAA
13516|..*.A
13517|.b..A
13518+-----
13519
13520;lib(A)==5 && seki_helper(A)
13521
13522>replace(b,*)
13523
13524
13525Pattern S4
13526# 7 points reverse sente to defend territory.
13527
13528|OOOOO
13529|..*.O
13530|....O
13531+-----
13532
13533:8,Oe,terri(7),reverse_followup(20)
13534
13535|aaaaa
13536|..*.a
13537|....a
13538+-----
13539
13540;lib(a)==5 && seki_helper(a)
13541
13542
13543Pattern S5
13544# Explicit followup to S4.
13545
13546|OOOOO
13547|.*O.O
13548|.X..O
13549+-----
13550
13551:8,Oe,terri(7)
13552
13553|aaaaa
13554|.*a.a
13555|.X..a
13556+-----
13557
13558;lib(a)==5 && seki_helper(a)
13559
13560
13561Pattern S6
13562# 6 points seki. Whether this is gote or sente depends on
13563# the ko threat situation.
13564
13565|XX??
13566|.XXX
13567|.*.X
13568|...X
13569+----
13570
13571:8,sXe,terri(6),followup(14)
13572
13573|AA??
13574|.AAA
13575|.*.A
13576|...A
13577+----
13578
13579;lib(A)==4 && seki_helper(A)
13580
13581
13582Pattern S6b
13583# 6 points seki. Explicit followup to S6.
13584
13585|XX??
13586|.XXX
13587|XO.X
13588|.*.X
13589+----
13590
13591:8,sXe,terri(6),followup(14)
13592
13593|AA??
13594|.AAA
13595|XO.A
13596|.*.A
13597+----
13598
13599;lib(A)==3 && seki_helper(A)
13600
13601
13602Pattern S6c
13603# Eliminate a potential 1000-year ko for the life of the entire
13604# corner. This moves secures a seki.
13605
13606|OO??
13607|.OOO
13608|OX.O
13609|.X*O
13610+----
13611
13612:8,Oe,terri(14)
13613
13614|aa??
13615|.aaa
13616|OX.a
13617|.X*a
13618+----
13619
13620;lib(a)==3 && seki_helper(a)
13621
13622
13623Pattern S7
13624# 6 points seki. See S6.
13625
13626|OO??
13627|.OOO
13628|.*.O
13629|...O
13630+----
13631
13632:8,Oe,terri(6),reverse_followup(14)
13633
13634|aa??
13635|.aaa
13636|.*.a
13637|...a
13638+----
13639
13640;lib(a)==4 && seki_helper(a)
13641
13642
13643Pattern S8
13644# gf New pattern. (3.5.3)
13645# 7 points gote seki. See seki:301.
13646
13647|XX???
13648|.XXX?
13649|.*.XX
13650|....X
13651+-----
13652
13653:8,sXe,terri(7)
13654
13655|AA???
13656|.AAA?
13657|.*.AA
13658|....A
13659+-----
13660
13661;lib(A)==4 && seki_helper(A)
13662
13663
13664Pattern S9
13665# gf New pattern. (3.5.3)
13666# 7 points seki. Compare S8. See seki:302
13667
13668|OO???
13669|.OOO?
13670|.*.OO
13671|....O
13672+-----
13673
13674:8,sXe,terri(7)
13675
13676|aa???
13677|.aaa?
13678|.*.aa
13679|....a
13680+-----
13681
13682;lib(a)==4 && seki_helper(a)
13683
13684
13685Pattern S10
13686# gf New pattern. (3.5.3)
13687# 8 points (mostly) sente seki. See seki:801.
13688
13689|XXX??
13690|..XX?
13691|.*.XX
13692|....X
13693+-----
13694
13695:8,sXe,terri(8),followup(16)
13696
13697|AAA??
13698|..AA?
13699|.*.AA
13700|....A
13701+-----
13702
13703;lib(A)==4 && seki_helper(A)
13704
13705
13706Pattern S10b
13707# gf New pattern. (3.5.3)
13708# Best way to secure seki. See seki:803.
13709
13710|OOO??
13711|..OO?
13712|.X*OO
13713|....O
13714+-----
13715
13716:8,sXe,terri(8),reverse_followup(16)
13717
13718|aaa??
13719|..aa?
13720|bX*aa
13721|....a
13722+-----
13723
13724;lib(a)==4 && seki_helper(a)
13725
13726>replace(b,*);
13727
13728
13729Pattern S10c
13730# gf New pattern. (3.5.3)
13731# Make seki in sente, not gote. See seki:808.
13732
13733|XXX??
13734|..XX?
13735|.O*XX
13736|..X.X
13737+-----
13738
13739:8,sXe,terri(8),followup(16)
13740
13741|AAA??
13742|..AA?
13743|bO*AA
13744|.cX.A
13745+-----
13746
13747;lib(A)==4 && seki_helper(A)
13748
13749>replace(b,*);
13750>replace(c,*);
13751
13752
13753Pattern S10d
13754# gf New pattern. (3.5.3)
13755# Make seki in sente, not gote. See seki:810.
13756# Only replace pattern here. The seki_helper doesn't apply and the
13757# semeai code should find either a or * if there's a chance to make seki.
13758
13759|XXX??
13760|*.XX?
13761|.OOXX
13762|.XX.X
13763+-----
13764
13765:8,sX
13766
13767|XXX??
13768|*.XX?
13769|aOOXX
13770|.XX.X
13771+-----
13772
13773>replace(a,*);
13774
13775
13776Pattern S11
13777# gf New pattern. (3.5.3)
13778# 8 points (mostly) reverse sente seki. Compare S10. See seki:802.
13779
13780|OOO??
13781|..OO?
13782|.*.OO
13783|....O
13784+-----
13785
13786:8,sXe,terri(8),reverse_followup(16)
13787
13788|aaa??
13789|..aa?
13790|.*.aa
13791|....a
13792+-----
13793
13794;lib(a)==4 && seki_helper(a)
13795
13796
13797Pattern S12
13798# gf New pattern. (3.5.3)
13799# 9 points gote seki. See seki:901.
13800
13801|XXXX?
13802|...X?
13803|.*.XX
13804|....X
13805+-----
13806
13807:8,sXe,terri(9)
13808
13809|AAAA?
13810|...A?
13811|.*.AA
13812|....A
13813+-----
13814
13815;lib(A)==5 && seki_helper(A)
13816
13817
13818Pattern S13
13819# gf New pattern. (3.5.3)
13820# 9 points seki. Compare S12. See seki:902.
13821
13822|OOOO?
13823|...O?
13824|.*.OO
13825|....O
13826+-----
13827
13828:8,sXe,terri(9)
13829
13830|aaaa?
13831|...a?
13832|.*.aa
13833|....a
13834+-----
13835
13836;lib(a)==5 && seki_helper(a)
13837
13838
13839Pattern S14b
13840# gf New pattern. (3.5.3)
13841# Make sente seki. See seki:905.
13842
13843|OOOO?
13844|.X.O?
13845|.XOOO
13846|..*.O
13847+-----
13848
13849:8,sX
13850
13851|OOOO?
13852|.X.O?
13853|.XOOO
13854|.a*.O
13855+-----
13856
13857> replace(a,*);
13858
13859
13860Pattern S15
13861# gf New pattern. (3.7.12)
13862# 9 points gote seki. See seki:1201.
13863
13864|XX???
13865|.XX??
13866|..XX?
13867|.*.XX
13868|....X
13869+-----
13870
13871:8,sXe,terri(9)
13872
13873|AA???
13874|.AA??
13875|..AA?
13876|.*.AA
13877|....A
13878+-----
13879
13880;lib(A)==4 && seki_helper(A)
13881
13882
13883Pattern S16
13884# gf New pattern. (3.7.12)
13885# 9 points gote seki. Compare S15. See seki:1202.
13886
13887|OO???
13888|.OO??
13889|..OO?
13890|.*.OO
13891|....O
13892+-----
13893
13894:8,sXe,terri(9)
13895
13896|aa???
13897|.aa??
13898|..aa?
13899|.*.aa
13900|....a
13901+-----
13902
13903;lib(a)==4 && seki_helper(a)
13904
13905
13906######################################################################
13907#
13908# High handicap patterns.
13909#
13910# Patterns to place additional handicap stones when white starts by
13911# passing. After white's first move these patterns are not considered
13912# any more, due to the high_handicap_helper.
13913#
13914######################################################################
13915
13916
13917Pattern HH1
13918
13919....... Add stone where the distance is large.
13920.......
13921O..*..O
13922.......
13923.......
13924
13925:+,-,value(40),high_handicap_helper
13926
13927
13928Pattern HH2
13929# gf Corrected symmetry. (3.1.23)
13930
13931....... Add stone where the distance is large.
13932.......
13933...*...
13934O.....O
13935.......
13936.......
13937
13938:|,-,value(40),high_handicap_helper
13939
13940
13941Pattern HH3
13942
13943?..o..? Make iron pillar.
13944?.....?
13945?..*..?
13946?..O..?
13947?.....?
13948?.....?
13949-------
13950
13951:|,-,value(30),high_handicap_helper
13952
13953
13954Pattern HH4
13955
13956..o.. Make iron pillar.
13957.....
13958..O..
13959..*..
13960.....
13961.....
13962-----
13963
13964:|,-,value(30),high_handicap_helper
13965
13966
13967Pattern HH5
13968
13969..... Jump towards center.
13970..*..
13971.....
13972..O..
13973.....
13974.....
13975-----
13976
13977:|,-,value(30),high_handicap_helper
13978
13979
13980Pattern HH6
13981
13982|...... Corner enclosure from 3-3.
13983|......
13984|..O.*.
13985|......
13986|......
13987+------
13988
13989:8,-,value(30),high_handicap_helper
13990
13991
13992Pattern HH7
13993
13994..... Jump into nowhere
13995.....
13996..*..
13997.....
13998.....
13999ooOoo
14000
14001:8,-,value(20),high_handicap_helper
14002
14003
14004Pattern HH8
14005
14006..... Yet another third line stone.
14007O...o
14008o.*.o
14009.....
14010.....
14011-----
14012
14013:8,-,value(10),high_handicap_helper
14014
14015
14016Pattern HH9
14017
14018..... Yet another fourth line stone.
14019.....
14020o.*.o
14021O...o
14022.....
14023.....
14024-----
14025
14026:8,-,value(10),high_handicap_helper
14027
14028
14029Pattern HH10
14030
14031..... Jump
14032.....
14033O.*..
14034.....
14035.....
14036
14037:-,-,value(5),high_handicap_helper
14038
14039
14040Pattern HH11
14041
14042..... Keima
14043O....
14044..*..
14045.....
14046?????
14047
14048:8,-,value(5),high_handicap_helper
14049
14050
14051Pattern HH12
14052
14053o.... Extend
14054.....
14055.O*.o
14056.....
14057o....
14058
14059:-,-,value(2),high_handicap_helper
14060
14061
14062Pattern HH13
14063
14064o.... Extend
14065....o
14066.O*..
14067....o
14068oo...
14069
14070:8,-,value(3),high_handicap_helper
14071
14072
14073Pattern HH14
14074
14075|..O... Solidify corner still more.
14076|...O..
14077|...*.O
14078|......
14079|......
14080+------
14081
14082:8,-,value(1),high_handicap_helper
14083
14084
14085Pattern HH15
14086
14087|....oo Solidify corner still more.
14088|..O.oo
14089|..*.oo
14090|......
14091|......
14092+------
14093
14094:8,-,value(1),high_handicap_helper
14095
14096
14097Pattern HH16
14098
14099|..ooo Solidify corner still more.
14100|....o
14101|..O.o
14102|..*..
14103|.....
14104+-----
14105
14106:8,-,value(1),high_handicap_helper
14107
14108
14109Pattern HH17
14110
14111|..... Solidify corner still more.
14112|...O.
14113|..*..
14114|.....
14115|.....
14116+-----
14117
14118:8,-,value(1),high_handicap_helper
14119
14120
14121######################################################################
14122#
14123# Reinforcement patterns.
14124#
14125######################################################################
14126#
14127# Early in high handicap games, especially on small boards, it may
14128# happen that the lonely white stones are all thought to be dead.
14129# These patterns are used in such positions to reinforce possible
14130# weaknesses that the owl code has failed to take into account.
14131#
14132# All these patterns have s classification. For performance reasons,
14133# the move safety is tested in the helper instead.
14134#
14135######################################################################
14136
14137Pattern Reinforce1
14138
14139?...?
14140..*..
14141O...O
14142.....
14143.....
14144-----
14145
14146:|,s,value(5),reinforce_helper
14147
14148
14149Pattern Reinforce2
14150
14151.....
14152O.*.O
14153.....
14154.....
14155-----
14156
14157:|,s,value(3),reinforce_helper
14158
14159
14160Pattern Reinforce3
14161
14162X..
14163.*.
14164X..
14165
14166:-,s,value(2),reinforce_helper
14167
14168
14169Pattern Reinforce4
14170
14171xx
14172*O
14173X.
14174
14175:8,s,value(1),reinforce_helper
14176
14177
14178Pattern Reinforce5
14179
14180?xx
14181.*O
14182X..
14183
14184:8,s,value(1),reinforce_helper
14185
14186
14187######################################################################
14188#
14189# Reinforcement patterns for the middle game
14190#
14191######################################################################
14192
14193Pattern Reinforce102
14194# FIXME: This pattern should be contingent on being clearly ahead.
14195# gf In any case, don't play it while scoring. (3.7.2)
14196
14197.......
14198O..O..O Eliminate invasion point
14199...*...
14200.......
14201.......
14202-------
14203
14204:8,O,value(8)
14205
14206.......
14207O..O..O
14208...*...
14209.......
14210.......
14211-------
14212
14213;!doing_scoring
14214
14215
14216######################################################################
14217#
14218# Large Endgame moves
14219#
14220# Endgame patterns of value < 6 are in endgame.db
14221#
14222# "A point with sente is worth 2 with gote."
14223#
14224######################################################################
14225
14226
14227Pattern LE1
14228
14229O.Xx fourth line sente kosumi
14230.*..
14231....
14232....
14233----
14234
14235:8,OXe
14236
14237
14238Pattern LE2
14239# gf Added e classification. (3.5.2)
14240
14241????? third line sente kosumi
14242O.Xxx
14243.*...
14244.....
14245-----
14246
14247:8,OXe
14248
14249
14250Pattern LE3
14251# gf Added e classification. (3.5.2)
14252
14253xXx expand territory
14254...
14255.*.
14256O..
14257o..
14258
14259:8,OXe
14260
14261
14262Pattern LE5
14263# gf Added e classification and constraint. (3.5.2)
14264
14265?Xxx
14266O...
14267..*.
14268....
14269----
14270
14271:8,OXe
14272
14273?Xxx
14274ca..
14275.b*.
14276....
14277----
14278
14279;!oplay_disconnect(*,a,b,*,c)
14280
14281
14282Pattern LE6
14283# At move 96 of ego.tst, this is matched at J8.
14284# tm - revised (3.1.15) (see trevora:330)
14285# added left-hand ?s
14286# gf Revised. (3.1.20)
14287# see also trevora:280, arend:23
14288# tm Revised. (3.1.20)
14289
14290?oo???
14291?..*.x
14292?....X
14293?..O??
14294
14295:8,OXeE
14296
14297?ocbd?
14298?..*.x
14299?a...X
14300?..O??
14301
14302; omoyo(a) && !(o_alive_somewhere(b) && o_alive_somewhere(c,d))
14303
14304
14305Pattern LE8
14306# gf Changed fixed value to e classification, removed constraint. (3.5.2)
14307
14308?OOo prevent monkey jump
14309X*..
14310....
14311----
14312
14313:8,OXe
14314
14315
14316Pattern LE9
14317# gf Added e classification. (3.5.2)
14318
14319oo..? good local sente
14320..O.x
14321O*X..
14322....X
14323.....
14324-----
14325
14326:8,OXe
14327
14328
14329Pattern LE10
14330# gf Revised constraint. (3.1.14)
14331
14332OX cut with sente and try to live inside opponent's territory
14333X*
14334
14335:\,OXW,followup_value(5)
14336
14337OB
14338A*
14339
14340;xmoyo(*) && !attack(A) && !attack(B)
14341;&& safe_omove(*) && oplay_attack_either(*,A,B)
14342
14343
14344Pattern LE12
14345# gf Changed fixed value to e classification, removed constraint. (3.5.2)
14346
14347?O.. seal the edge
14348X*..
14349....
14350----
14351
14352:8,OX
14353
14354
14355Pattern LE13
14356# gf Changed fixed value to e classification, added reverse followup. (3.5.2)
14357
14358|??o? take the corner
14359|...O
14360|..OX
14361|..*X
14362|....
14363+----
14364
14365:8,OXe,reverse_followup(5)
14366
14367|??o?
14368|..aO
14369|..OX
14370|..*X
14371|....
14372+----
14373
14374; oplay_attack(*,a,a)
14375
14376
14377Pattern LE15
14378# tm decreased value (3.1.20) (see nngs:1150 move G4)
14379# gf Don't bother with this inside own territory. (3.1.29)
14380
14381xxx jump towards moyo
14382x.x
14383.*.
14384...
14385...
14386OoO
14387?o?
14388
14389:|,OE
14390
14391xxx
14392x.x
14393.*.
14394...
14395...
14396OoO
14397?o?
14398
14399;!oterri(*)
14400
14401
14402Pattern LE16
14403
14404+---- it's better to bend around
14405|..O.
14406|.*XO
14407|?.X?
14408
14409:8,OX,terri(3),followup(2)
14410
14411+----
14412|.aO.
14413|.*XO
14414|?.X?
14415
14416> replace(a,*)
14417
14418
14419######################################################################
14420#
14421# Replacement patterns
14422#
14423# Patterns using the "replace" autohelper macro for when
14424# "this move is better than that move"
14425#
14426######################################################################
14427
14428
14429Pattern RE1
14430# db added (3.1.11)
14431
14432XOO? better to make an eye
14433O*.O
14434XO.O
14435?OO?
14436
14437:8,-
14438
14439XOO?
14440A*aO
14441XO.O
14442?OO?
14443
14444; lib(A)==1
14445
14446> replace(a,*)
14447
14448
14449Pattern RE2
14450# gf New pattern. (3.1.12)
14451# See test case niki:1 for an example.
14452
14453..O... connect solidly
14454XO....
14455XO*X..
14456XXO...
14457......
14458------
14459
14460:8,-
14461
14462..O...
14463XO....
14464XO*X..
14465XXOa..
14466......
14467------
14468
14469> replace(a,*)
14470
14471
14472Pattern RE3
14473# gf New pattern. (3.1.12)
14474# Common invasion in handicap games. Attaching on top better than
14475# capping.
14476
14477.......
14478.......
14479.O.*.O.
14480...X...
14481.......
14482.......
14483-------
14484
14485:|,-
14486
14487.......
14488...a...
14489.O.*.O.
14490...X...
14491.......
14492.......
14493-------
14494
14495> replace(a,*)
14496
14497
14498# Pattern RE4
14499# # tm New Pattern (3.1.17)
14500# # gf This is too general as gunnar:95 shows. Removed. (3.7.10)
14501#
14502# ?O.| push before blocking
14503# *XX|
14504# OO.|
14505#
14506# :8,-
14507#
14508# ?O.|
14509# *BX|
14510# OOa|
14511#
14512# ; oplay_attack(*,a,B)
14513#
14514# > replace(a,*)
14515
14516
14517# Pattern RE5
14518# # tm New pattern (3.1.18) (see trevorb:440)
14519# # gf This pattern can cause a crash, see ticket #203. Removed. (3.7.12)
14520#
14521# OX? threaten snapback
14522# X.X
14523# X.*
14524# ?O.
14525# ??o
14526#
14527# :8,-
14528#
14529# OX?
14530# B.X
14531# Xa*
14532# ?O.
14533# ??o
14534#
14535# ; lib(B) == 2
14536#
14537# > replace(a,*)
14538
14539
14540Pattern RE6
14541# tm New Pattern (3.1.18) (see trevorb:400)
14542
14543-----
14544.*... take it off, don't leave atari followup
14545OXOX?
14546?OOX?
14547
14548:8,-
14549
14550-----
14551.*a..
14552OXOX?
14553?OBX?
14554
14555; lib(B) == 1
14556
14557> replace(a,*)
14558
14559
14560Pattern RE8
14561# db new pattern (3.3.6)
14562# see century-2002:10
14563
14564?..O?? first line block just helps the opponent
14565X.*OX?
14566..OX..
14567...X..
14568------
14569
14570:8,-
14571
14572?..O??
14573X.*OX?
14574..OX..
14575..aX..
14576------
14577
14578> replace(a,*)
14579
14580
14581Pattern RE9
14582# db new pattern (3.3.6)
14583# see century-2002:100
14584
14585?o.X?? to slide is better than kosumi
14586.O...?
14587...*..
14588......
14589------
14590
14591:8,-
14592
14593?o.X??
14594.O...?
14595..a*..
14596......
14597------
14598
14599> replace(a,*)
14600
14601
14602Pattern RE10
14603# db new pattern (3.3.6)
14604# see century-2002:130
14605
14606xxxx don't allow the cut
14607...X
14608x.O*
14609?XXO
14610
14611:8,d
14612
14613xxxx
14614.a.X
14615x.O*
14616?XXb
14617
14618; !dead(b)
14619> replace(a,*)
14620
14621
14622Pattern RE12
14623# db added (3.3.14)
14624# See ninestones:20, where hane is a bogus owl defense.
14625
14626???OX. kosumi defense
14627O.XO..
14628....*.
14629......
14630------
14631
14632:8,-,shape(3)
14633
14634???aX.
14635O.Ba..
14636..c.*.
14637......
14638------
14639
14640; lib(a)==2 && lib(B)>=2 && !oplay_attack(*,a)
14641> replace(c,*)
14642
14643
14644Pattern RE13
14645# gf New pattern. (3.3.17)
14646# See gunnar:20.
14647
14648?XXO backfill before playing into bamboo joint in gote (dame filling)
14649O*..
14650?XXO
14651
14652:-,OX
14653
14654?XXO
14655a*b.
14656?XXO
14657
14658;oplay_attack(*,b,*) && oplay_defend(*,b,*)
14659>backfill_replace(*,a)
14660
14661
14662Pattern RE14
14663# gf New pattern. (3.3.22)
14664# See filllib:35.
14665
14666+---
14667|..? fix up corner eye shape to avoid seki or worse
14668|*.O
14669|..O
14670|O.O
14671|.O?
14672
14673:8,O
14674
14675+---
14676|..?
14677|*.O
14678|b.O
14679|O.O
14680|aO?
14681
14682;olib(a)==2 && !oplay_attack(a,b,b)
14683>replace(a,*)
14684
14685
14686######################################################################
14687#
14688# Thrashing patterns.
14689#
14690# Patterns to force early moves when playing white against high
14691# handicaps instead of passing because all stones look dead.
14692# These patterns are disabled by the thrash_around_helper when white has
14693# managed to get living stones or when at least 40% of the board is
14694# covered.
14695#
14696######################################################################
14697
14698Pattern Th1
14699
14700.....
14701X.*.X
14702.....
14703.....
14704-----
14705
14706:|,-,value(5),thrash_around_helper
14707
14708
14709Pattern Th2
14710
14711xxXxx
14712o...o
14713o.*.o
14714.....
14715.....
14716-----
14717
14718:|,-,value(5),thrash_around_helper
14719
14720
14721Pattern Th3
14722
14723oo.oo
14724.X*.x
14725.....
14726.....
14727.....
14728-----
14729
14730:8,-,value(3),thrash_around_helper
14731
14732
14733Pattern Th4
14734
14735ooXoo
14736o.*.o
14737.....
14738.....
14739-----
14740
14741:|,-,value(3),thrash_around_helper
14742
14743
14744Pattern Th5
14745
14746X..o
14747..*.
14748....
14749oooo
14750
14751:8,-,value(1),thrash_around_helper
14752
14753
14754Pattern Th6
14755
14756...o
14757X.*.
14758....
14759oooo
14760
14761:8,-,value(1),thrash_around_helper
14762
14763
14764Pattern Th7
14765
14766....x
14767.X.o.
14768.*.o.
14769....x
14770
14771:8,s,value(4),thrash_around_helper
14772
14773....x
14774.X.a.
14775.*.b.
14776....x
14777
14778;o_somewhere(a,b)
14779
14780
14781Pattern Th8
14782
14783oo..?
14784*X.o.
14785.O.o.
14786....x
14787
14788:8,-,value(5),thrash_around_helper
14789
14790oo..?
14791*X.a.
14792.O.b.
14793....x
14794
14795;o_somewhere(a,b)
14796
14797
14798Pattern Th9
14799
14800....
14801O.*.
14802...x
14803
14804:8,-,value(3),thrash_around_helper
14805
14806
14807Pattern Th10
14808
14809?x?
14810.*x
14811O.O
14812?o?
14813
14814:8,-,value(3),thrash_around_helper
14815
14816
14817Pattern Th11
14818
14819?x?
14820o*?
14821O.O
14822?o?
14823
14824:8,-,value(2),thrash_around_helper
14825
14826
14827Pattern Th12
14828
14829?.?
14830.*.
14831...
14832O.O
14833
14834:|,-,value(3),thrash_around_helper
14835
14836
14837Pattern Th13
14838
14839.O.
14840...
14841O.*
14842
14843:8,-,value(3),thrash_around_helper
14844
14845
14846Pattern Th14
14847
14848x*O
14849o..
14850O.O
14851
14852:8,-,value(2),thrash_around_helper
14853
14854
14855Pattern Th15
14856
14857xO*
14858o..
14859O.O
14860
14861:8,-,value(2),thrash_around_helper
14862
14863
14864Pattern Th16
14865
14866?.O.?
14867x*.O?
14868??..x
14869
14870:8,-,value(3),thrash_around_helper
14871
14872
14873Pattern Th17
14874# FIXME: Give value to all attack threats.
14875
14876?O?
14877*XO
14878?.?
14879
14880:8,-,value(4),thrash_around_helper
14881
14882
14883Pattern Th18
14884# FIXME: Give value to all attack threats.
14885
14886?O?
14887*XO
14888?.?
14889
14890:8,s,value(0.5),thrash_around_helper
14891
14892
14893Pattern Th19
14894
14895*Ox
14896O.O
14897.O.
14898
14899:8,n,value(1),thrash_around_helper
14900
14901
14902Pattern Th20
14903
14904?.o.
14905.*X.
14906?...
14907
14908:8,s,value(0.5),thrash_around_helper
14909
14910
14911Pattern Th21
14912
14913.O?
14914*XO
14915.Oo
14916
14917:8,s,value(1),thrash_around_helper
14918
14919
14920Pattern Th22
14921
14922..O
14923*..
14924...
14925---
14926
14927:8,s,value(4),thrash_around_helper
14928
14929
14930Pattern Th23
14931
14932?X?
14933.*O
14934...
14935---
14936
14937:8,s,value(2),thrash_around_helper
14938
14939
14940Pattern Th24
14941
14942.*x
14943.XO
14944...
14945---
14946
14947:8,s,value(3),thrash_around_helper
14948
14949
14950######################################################################
14951#
14952# Mirror breaking patterns.
14953#
14954# Patterns to break mirror go strategies being employed by the opponent.
14955#
14956######################################################################
14957
14958Pattern M1
14959# gf New pattern. (3.5.11)
14960
14961.....
14962.....
14963..X..
14964..*..
14965.....
14966
14967:|,-,value(30)
14968
14969.mil.
14970.dbgq
14971.fAe.
14972ph*c.
14973.kjn.
14974
14975;oplay_attack(*,b,c,d,e,f,g,h,i,j,k,l,m,n,p,q,A) && break_mirror_helper(A)
14976
14977
14978Pattern M2
14979# gf New pattern. (3.5.11)
14980
14981.....
14982..X..
14983..X..
14984..O*.
14985.....
14986
14987:8,-,value(40)
14988
14989.mil.
14990.dXgq
14991.fAe.
14992phO*.
14993.kjn.
14994
14995;oplay_attack(*,d,e,f,g,h,i,j,k,l,m,n,p,q,A) && break_mirror_helper(A)
14996
14997
14998Pattern M3
14999# gf New pattern. (3.5.11)
15000
15001.....
15002.XX..
15003..X*.
15004..OO.
15005.....
15006
15007:8,-,value(40)
15008
15009.mil.
15010.XXgq
15011.fA*.
15012phOO.
15013.kjn.
15014
15015;oplay_attack(*,f,g,h,i,j,k,l,m,n,p,q,A) && break_mirror_helper(A)
15016
15017
15018Pattern M4
15019# gf New pattern. (3.5.11)
15020
15021.....
15022.XX*.
15023.XXO.
15024..OO.
15025.....
15026
15027:8,-,value(40)
15028
15029.mil.
15030.XX*q
15031.XAO.
15032phOO.
15033.kjn.
15034
15035;oplay_attack(*,h,i,j,k,l,m,n,p,q,A) && break_mirror_helper(A)
15036
15037
15038Pattern M5
15039# gf New pattern. (3.5.11)
15040
15041..*..
15042.XXO.
15043.XXO.
15044.XOO.
15045.....
15046
15047:8,-,value(40)
15048
15049.m*l.
15050.XXOq
15051.XAO.
15052pXOO.
15053.kjn.
15054
15055;oplay_attack(*,j,k,l,m,n,p,q,A) && break_mirror_helper(A)
15056
15057
15058Pattern M6
15059# gf New pattern. (3.5.11)
15060
15061..O..
15062.XXO.
15063.XXO.
15064.XOO.
15065.*X..
15066
15067:8,-,value(40)
15068
15069.mOl.
15070.XXOq
15071.XAO.
15072pXOO.
15073.*Xn.
15074
15075;oplay_attack(*,l,m,n,p,q,A) && break_mirror_helper(A)
15076
15077
15078Pattern M7
15079# gf New pattern. (3.5.11)
15080
15081.*OX.
15082.XXO.
15083.XXO.
15084.XOO.
15085.OX..
15086
15087:8,-,value(70)
15088
15089.*OX.
15090.XXOq
15091.XAO.
15092pXOO.
15093.OXn.
15094
15095;oplay_attack(*,n,p,q,A) && break_mirror_helper(A)
15096
15097
15098Pattern M8
15099# gf New pattern. (3.5.11)
15100
15101.OOX.
15102.XXO.
15103.XXO.
15104*XOO.
15105.OXX.
15106
15107:8,-,value(60)
15108
15109.OOX.
15110.XXOq
15111.XAO.
15112*XOO.
15113.OXX.
15114
15115;oplay_attack(*,q,A) && break_mirror_helper(A)
15116
15117
15118# END OF FILE