Updated README: Equal sign not required with `--mode` flag.
[sgk-go] / patterns / patterns2.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# Second Generation Pattern Database.
26#
27# New patterns that are not from patterns.db
28#
29##############################
30#
31# The patterns are classified into a number of different categories:
32#
33# Conn Connection patterns
34# Cut Cut patterns
35# AS Antisuji patterns (i.e. prohibitted moves)
36# Shape Shape moves
37# Sente Followup moves (add followup or reverse_followup values)
38# DD Double threat moves and defense against double threats
39# Temp Temporary patterns to correct certain misbehaviours.
40#
41##############################
42
43
44attribute_map general
45
46goal_elements none
47# FIXME: try to make callback_data pattern category specific
48callback_data XOxo
49
50
51##############################
52#
53# Connection of one space jump
54#
55# O.O
56#
57##############################
58
59
60Pattern Conn101
61
62O*O straight connection
63
64:+,C
65
66
67Pattern Conn102
68
69O.O tiger connection
70?*?
71
72:|,C
73
74bac
75?*?
76
77;odefend_against(*,a) && !oplay_attack(*,b) && !oplay_attack(*,c)
78
79
80Pattern Conn103
81
82O.O indirect connection
83*..
84
85:8,C
86
87OaO
88*bc
89
90;oplay_attack(*,a,b,c,a) || oplay_attack(*,a,b,c,c)
91
92
93Pattern Conn104
94
95.O.O indirect diagonal connection
96*...
97
98:8,C
99
100.OaO
101*dbc
102
103;oplay_attack_either(*,a,b,c,a,c) && !oplay_defend_both(*,a,b,d,c,a,d)
104
105
106Pattern Conn105
107
108OXO defend connection
109.*.
110
111:8,C
112
113aXb
114.*.
115
116;!oplay_break_through(*,a,*,b)
117
118
119Pattern Conn106
120
121??.? indirect connection
122*O.O
123....
124
125:8,C
126
127??e?
128*OaO
129.dbc
130
131;oplay_attack(*,a,b,e,c,d,d)
132
133
134########################
135#
136# Connection of diagonal
137#
138# O.
139# XO
140#
141########################
142
143
144Pattern Conn201
145
146O* solid connection
147xO
148
149:/,C
150
151
152Pattern Conn202
153
154O.* tiger's mouth connection
155xO?
156
157:8,C
158
159ba*
160xc?
161
162;odefend_against(*,a) && !oplay_attack(*,b) && !oplay_attack(*,c)
163
164
165Pattern Conn203
166
167XO? far away connection, might leave much aji
168O.?
169??*
170
171:\,C
172
173XO?
174Oa?
175??*
176
177;odefend_against(*,a)
178
179
180Pattern Conn204
181
182?XO increase liberties to secure connection
183*O.
184
185:8,C
186
187?XO
188*Oa
189
190;odefend_against(*,a)
191
192
193Pattern Conn205
194
195XO* extend to secure connection
196O.?
197
198:8,C
199
200BO*
201Oa?
202
203;oplay_attack_either(*,a,a,B)
204
205
206Pattern Conn206
207# see trevord:740
208
209..O very indirect connection
210.OX
211*X.
212
213:8,C
214
215.aO
216.OX
217*X.
218
219;oplay_attack(*,a,a)
220
221
222Pattern Conn207
223# gf New pattern. (3.7.1)
224# See olympiad2004:102.
225
226?.X kikashi to give bad shape before connecting
227..X
228*XO
229.O.
230
231:8,C
232
233?.X
234..X
235*Xa
236.O.
237
238;lib(a)>1
239
240
241#####################
242#
243# Connection of keima
244#
245# O..
246# ..O
247#
248#####################
249
250
251Pattern Conn301
252
253O*. solid connection
254?.O
255
256:8,C
257
258
259Pattern Conn302
260
261O.? bumping connection
262X*O
263
264:8,C
265
266Oa?
267B*O
268
269;oplay_attack_either(*,a,a,B)
270
271
272Pattern Conn303
273# gf Revised constraint. (3.3.3)
274
275O..* kosumi connection
276..O?
277
278:8,C
279
280Obc*
281eaf?
282
283;oplay_attack_either(*,a,b,c,a,c) && oplay_attack_either(*,b,a,e,b,e)
284;&& oplay_defend_both(*,c,*,f)
285
286
287Pattern Conn304
288# gf Revised constraint. (3.3.3)
289
290O..* kosumi connection
291X.O?
292
293:8,C
294
295Obc*
296Eaf?
297
298;oplay_attack_either(*,a,b,c,a,c) && !oplay_defend_both(*,b,a,b,E)
299;&& oplay_defend_both(*,c,*,f)
300
301
302Pattern Conn305
303
304O..? nobi connection
305..O*
306
307:8,C
308
309Obc?
310eaO*
311
312;oplay_attack_either(*,a,b,c,a,c) && oplay_attack_either(*,b,a,e,b,e)
313
314
315Pattern Conn306
316
317O..? nobi connection
318X.O*
319
320:8,C
321
322Obc?
323EaO*
324
325;oplay_attack_either(*,a,b,c,a,c) && !oplay_defend_both(*,b,a,b,E)
326
327
328Pattern Conn307
329
330O.X? nobi connection
331..O*
332
333:8,C
334
335ObD?
336caO*
337
338;!oplay_defend_both(*,a,b,a,D) && oplay_attack_either(*,b,a,c,b,c)
339
340
341Pattern Conn308
342
343O.*
344..O
345
346:8,C
347
348Oa*
349cbO
350
351;oplay_attack_either(*,a,b,c,a,c)
352
353
354Pattern Conn309
355
356O.*
357X.O
358
359:8,C
360
361Oa*
362EbO
363
364;!oplay_defend_both(*,a,b,a,E)
365
366
367Pattern Conn310
368
369..*
370O..
371..O
372
373:8,C
374
375..*
376Obc
377daO
378
379;oplay_attack_either(*,a,b,c,a,c) && oplay_attack_either(*,b,a,d,b,d)
380
381
382Pattern Conn311
383
384O*.
385?XO
386
387:8,C
388
389O*a
390?BO
391
392;oplay_attack_either(*,a,a,B)
393
394
395Pattern Conn312
396
397O.*
398xXO
399
400:8,C
401
402Oa*
403xXO
404
405;odefend_against(*,a)
406
407
408Pattern Conn313
409
410.O.
411O.*
412xXO
413
414:8,C
415
416bOc
417Oa*
418xXO
419
420;oplay_attack_either(*,a,b,c,a,c) || oplay_attack_either(*,a,c,b,a,b)
421
422
423Pattern Conn314
424
425...
426O.*
427xXO
428
429:8,C
430
431.b.
432ca*
433xXO
434
435;!oplay_break_through(*,a,b,c,b,*)
436
437
438Pattern Conn315
439
440O*X cut through to connect
441.XO
442
443:8,C
444
445O*B
446.AO
447
448;!oplay_defend_both(*,A,B)
449
450
451##############################################
452#
453# Connection of one space jump from two stones
454#
455# O..
456# O.O
457#
458##############################################
459
460
461Pattern Conn401
462
463O..* kosumi connection
464O.O?
465
466:8,C
467
468Obc*
469OaO?
470
471;oplay_attack_either(*,a,b,c,a,c)
472
473
474Pattern Conn402
475
476O..? nobi connection
477O.O*
478
479:8,C
480
481Obc?
482OaO*
483
484;oplay_attack_either(*,a,b,c,a,c)
485
486
487Pattern Conn403
488
489O.O bamboo joint
490O.*
491
492:8,C
493
494A.O
495A.*
496
497;!oplay_attack(*,A)
498
499
500##############################
501#
502# Connection of two space jump
503#
504# O..O
505#
506##############################
507
508
509Pattern Conn501
510
511O*.O
512
513:-,C
514
515O*aO
516
517;odefend_against(*,a)
518
519
520Pattern Conn502
521
522O*.O
523?...
524
525:8,C
526
527O*ac
528?.b.
529
530;!oplay_break_through(*,a,b,*,b,c)
531
532
533Pattern Conn503
534
535O..O
536*...
537
538:8,C
539
540OacO
541*bde
542
543;oplay_attack_either(*,a,b,c,d,e,c,e) && !oplay_defend_both(*,a,b,d,c,a,d)
544;&& oplay_attack(*,b,a,c,c)
545
546
547Pattern Conn504
548
549O..O
550.*..
551
552:8,C
553
554OdaO
555e*bc
556
557;oplay_attack_either(*,a,b,c,a,c)
558;&& (oplay_attack(*,d,d) || oplay_attack_either(*,d,b,e,d,e))
559
560
561Pattern Conn505
562# gf Revised constraint. (3.7.2)
563
564?..?
565OX.O
566.*..
567
568:8,C
569
570?..?
571aX.b
572.*..
573
574;!oplay_disconnect(*,a,b)
575
576
577Pattern Conn506
578
579OX.O
580*O..
581
582:8,C
583
584ODbO
585*Oac
586
587;!oplay_defend_both(*,a,b,a,D) && !oplay_defend_both(*,b,a,c,b,c)
588
589
590Pattern Conn507
591
592O..O
593X*..
594
595:8,C
596
597OabO
598X*..
599
600;oplay_attack(*,a,a) && oplay_attack(*,b,b)
601
602
603Pattern Conn508
604
605O..O
606?*O?
607
608:8,C
609
610OabO
611?*O?
612
613;oplay_attack(*,a,a) && oplay_attack(*,b,b)
614
615
616Pattern Conn509
617
618o.X?
619OX*O
620....
621----
622
623:8,C
624
625obX?
626cX*O
627.a..
628----
629
630;oplay_attack(*,a,a)
631;&& !oplay_attack_either(*,b,a,*,a) && !oplay_attack_either(*,b,a,c,a)
632
633
634Pattern Conn509b
635# gf New pattern. (3.3.3)
636
637?.X?
638OX*O
639....
640----
641
642:8,C
643
644?.X?
645aX*b
646....
647----
648
649;!oplay_disconnect(*,a,b)
650
651
652Pattern Conn510
653
654O..O
655..*.
656....
657?..O
658
659:/,C
660
661OADO
662CB*d
663..ba
664?.cO
665
666; oplay_attack(*,a,b,c,a) && oplay_attack(*,A,B,C,A)
667; && oplay_attack_either(*,b,a,d,b,d)
668; && oplay_attack_either(*,B,A,D,B,D)
669
670
671######################
672#
673# Connection of ogeima
674#
675# O...
676# ...O
677#
678######################
679
680
681Pattern Conn601
682
683O*.. Block across large knight's move
684?X.O
685
686:8,C
687
688O*ac
689?DbO
690
691;!oplay_defend_both(*,a,b,a,D) && oplay_attack_either(*,b,a,c,b,c)
692
693
694Pattern Conn602
695
696O...
697*..O
698
699:8,C
700
701Obde
702*acO
703
704;oplay_attack_either(*,a,b,c,d,e,c,e) && !oplay_defend_both(*,a,b,d,c,a,d)
705;&& oplay_attack(*,b,a,c,c)
706
707
708Pattern Conn603
709
710...o Block across large knight's move
711O.*.
712?.XO
713
714:8,C
715
716.b.o
717ca*.
718?.XO
719
720;!oplay_break_through(*,a,b,*,b,c)
721
722
723Pattern Conn603b
724# gf New experimental pattern. Useful in nngs1:41. (3.1.30)
725
726...o Block across large knight's move
727O.*.
728?.XO
729
730:8,C
731
732...o
733a.*.
734?.Xb
735
736;!oplay_disconnect(*,a,b)
737
738
739Pattern Conn604
740
741O...
742.*.O
743
744:8,C
745
746Ocb.
747d*ae
748
749;!oplay_break_through(*,a,b,*,b,e) && !oplay_defend_both(*,c,d,a,b,c,a)
750
751
752Pattern Conn605
753
754O...
755X*.O
756
757:8,C
758
759Ocb.
760X*ad
761
762;!oplay_break_through(*,a,b,*,b,d) && !oplay_defend(*,c,b,c)
763
764
765Pattern Conn606
766
767O*..
768?..O
769
770:8,C
771
772O*bc
773?daO
774
775;oplay_attack_either(*,a,b,c,a,c) && oplay_attack_either(*,b,a,d,b,d)
776
777
778Pattern Conn607
779
780O..?
781O.*.
782?X.O
783
784:8,C
785
786Obc?
787Oa*.
788?X.O
789
790;oplay_attack_either(*,a,b,c,a,c)
791
792
793Pattern Conn608
794
795...?
796O.*.
797?X.O
798
799:8,C
800
801.b.?
802ca*.
803?X.O
804
805;!oplay_break_through(*,a,b,*,b,c)
806
807
808Pattern Conn609
809
810O.*.?
811..XO.
812.....
813-----
814
815:8,C
816
817Ob*c?
818eaXOd
819..d..
820-----
821
822;!oplay_defend(*,a,b,c,d,a) && oplay_attack_either(*,c,a,b,d,e,b,e)
823
824
825Pattern Conn610
826
827OXX?
828.*.O
829----
830
831:8,C
832
833dBB?
834e*ac
835----
836
837;oplay_attack(*,a,B) && !oplay_attack(*,c) && !oplay_attack(*,d)
838;&& oplay_attack_either(*,e,B,e)
839
840
841Pattern Conn611
842
843OX.o
844.*.O
845----
846
847:8,C
848
849dB.o
850a*.c
851----
852
853;oplay_attack_either(*,a,B,a) && !oplay_attack(*,c) && !oplay_attack(*,d)
854
855
856##############################################
857#
858# Connection of two space jump from two stones
859#
860# O...
861# O..O
862#
863##############################################
864
865
866Pattern Conn701
867
868O..?
869O.*O
870
871:8,C
872
873Obc?
874Oa*O
875
876;oplay_attack_either(*,a,b,c,a,c)
877
878
879Pattern Conn702
880
881O.X?
882O.*O
883
884:8,C
885
886ObC?
887Oa*O
888
889;!oplay_defend_both(*,a,b,a,C)
890
891
892Pattern Conn703
893
894O.*.
895O.XO
896
897:8,C
898
899Ob*c
900OaDO
901
902;oplay_attack_either(*,a,b,c,a,c) && oplay_attack(*,c,c)
903;&& oplay_attack(*,b,a,c,D)
904
905
906Pattern Conn704
907
908?..*
909O...
910O..O
911
912:8,C
913
914?..*
915Odbe
916OcaO
917
918# This condition is not necessary but should be sufficient.
919;oplay_attack(*,e,b,e) && !oplay_defend_both(*,b,a,c,d,b,c)
920;&& !oplay_defend_both(*,d,c,a,b,d,a)
921
922
923Pattern Conn705
924
925O..*
926O..O
927
928:8,C
929
930Odb*
931OcaO
932
933# This condition is not necessary but should be sufficient.
934;!oplay_defend_both(*,b,a,c,d,b,c)
935;&& !oplay_defend_both(*,d,c,a,b,d,a)
936
937
938Pattern Conn706
939
940OXXO
941O.*.
942....
943----
944
945:8,C
946
947dXXO
948da*c
949.b..
950----
951
952;!oplay_attack(*,a,b,d) && oplay_attack_either(*,a,b,c,a,c)
953
954
955Pattern Conn707
956
957O.XO
958O.*.
959....
960----
961
962:8,C
963
964OdDO
965Ob*a
966ce..
967----
968
969;oplay_attack_either(*,a,a,D) && oplay_attack_either(*,b,a,c,b,D)
970;&& oplay_attack_either(*,b,a,e,b,D) && oplay_attack_either(*,b,a,d,e,c,b,c)
971
972
973Pattern Conn708
974
975O*.. bend around
976OX.O
977
978:8,C
979
980O*ac
981ODbO
982
983;!oplay_defend_both(*,a,b,a,D) && oplay_attack_either(*,b,a,c,b,c)
984
985
986###########################
987#
988# Miscellaneous connections
989#
990###########################
991
992
993Pattern Conn801
994
995.O*.
996O..O
997
998:8,C
999
1000.O*.
1001Oa.O
1002
1003;xcut(a)
1004
1005
1006#######################
1007#
1008# Cut of one space jump
1009#
1010# X.X
1011#
1012#######################
1013
1014
1015Pattern Cut101
1016
1017... cut with atari
1018X*X
1019OoO
1020
1021:|,OB
1022
1023...
1024A*B
1025aob
1026
1027;lib(a)>1 && lib(b)>1 && (lib(A)==2 || lib(B)==2)
1028
1029
1030#################
1031#
1032# Cut of diagonal
1033#
1034# X.
1035# OX
1036#
1037#################
1038
1039
1040Pattern Cut201
1041
1042X* cut through diagonal
1043OX
1044
1045:/,OB
1046
1047X*
1048aX
1049
1050;!oplay_attack_either(*,*,a)
1051
1052
1053##############
1054#
1055# Cut of keima
1056#
1057# X..
1058# ..X
1059#
1060##############
1061
1062
1063Pattern Cut302
1064
1065X*. cut through keima
1066.OX
1067
1068:8,OB
1069
1070X*a
1071.bX
1072
1073;!xplay_attack_either(*,a,b,a)
1074
1075
1076Pattern Cut303
1077# gf Pattern and constraint revised. (3.3.3)
1078
1079X*O cut through keima
1080?OX
1081
1082:8,B
1083
1084C*a
1085?bD
1086
1087;(alive(a) || alive(b)) && !xplay_disconnect(*,C,D) && !oplay_connect(*,C,D)
1088
1089
1090Pattern Cut304
1091# gf New pattern. (3.5.3)
1092
1093?OO
1094X.. cut through keima
1095?*X
1096
1097:8,OB
1098
1099?OO
1100Dab
1101?*C
1102
1103;!oplay_defend_both(*,a,b,C,D) && !oplay_connect(*,C,D)
1104
1105
1106#######################################
1107#
1108# Cut of one space jump from two stones
1109#
1110# X..
1111# X.X
1112#
1113#######################################
1114
1115#######################
1116#
1117# Cut of two space jump
1118#
1119# X..X
1120#
1121#######################
1122
1123Pattern Cut501
1124
1125X.OX
1126..*.
1127....
1128----
1129
1130:8,OB
1131
1132XaeX
1133cb*d
1134....
1135----
1136
1137;lib(e)==3 && xplay_attack_either(*,a,b,c,a,c)
1138;&& xplay_attack_either(*,a,b,d,a,d) && !xplay_defend(*,b,a,?,d,b)
1139
1140
1141###############
1142#
1143# Cut of ogeima
1144#
1145# X...
1146# ...X
1147#
1148###############
1149
1150
1151Pattern Cut601
1152
1153XO..
1154.*.X
1155....
1156----
1157
1158:8,OB
1159
1160FOc.
1161d*aE
1162..b.
1163----
1164
1165;!xplay_break_through(*,a,b,*,b,E) && !xplay_attack(*,a,b,d,c,F)
1166
1167
1168#######################################
1169#
1170# Cut of two space jump from two stones
1171#
1172# X...
1173# X..X
1174#
1175#######################################
1176
1177
1178
1179####################
1180#
1181# Miscellaneous cuts
1182#
1183####################
1184
1185
1186
1187###########################
1188#
1189# Antisuji moves.
1190#
1191# These are moves which are locally inferior or for some other reason
1192# should never be played. Obviously, a certain amount of care must be
1193# taken with these patterns.
1194#
1195###########################
1196
1197Pattern AS1
1198# It's tempting to make this usually bad descent an antisuji, but
1199# sometimes descending is correct e.g. in the "comb formation"
1200#
1201# XXX
1202# XXOOOXX
1203# XO...OX
1204# .*...O.
1205# --------
1206#
1207# descending is the *only* move to live. So this should not be an antisuji.
1208# gf Reduced shape value. (3.5.2)
1209
1210?XO don't defend by moving straight down if it gives X a free forcing move
1211XO.
1212.*.
1213---
1214
1215:8,-,shape(-3)
1216
1217?XO
1218Xb.
1219a*.
1220---
1221
1222;attack(b) && !oplay_attack(*,a,a) && oplay_attack(*,a,*)
1223
1224
1225Pattern AS2
1226
1227?XO don't play double hane at the edge
1228XO.
1229*..
1230---
1231
1232:8,-
1233
1234?XO
1235XOa
1236*b.
1237---
1238
1239;!oplay_attack(*,a,a) && oplay_attack(*,a,b,b)
1240
1241>antisuji(*);
1242
1243
1244Pattern AS3
1245
1246OOX don't play potentially risky gote move
1247*X.
1248---
1249
1250:8,sOX
1251
1252OdA
1253*Bc
1254---
1255
1256;!weak(A) && !weak(B) && oplay_attack(*,c,*)
1257
1258>antisuji(*);
1259>backfill_helper(*,c,d);
1260
1261
1262Pattern AS4
1263# gf New pattern. (3.1.2)
1264
1265|*O Connect without leaving bigger ko threat than necessary.
1266|OX
1267|.O
1268+--
1269
1270:8,X
1271
1272|*b
1273|OX
1274|ac
1275+--
1276
1277;alive(b) && attack(c)
1278
1279>replace(a,*);
1280
1281
1282Pattern AS5
1283# gf New pattern. (3.1.3)
1284
1285?XO?
1286XO..
1287XO*.
1288.X..
1289----
1290
1291:8,OX
1292
1293?XO?
1294XOc.
1295XO*.
1296bDa.
1297----
1298
1299;oplay_attack(a,*,b,c,D,a)
1300
1301>replace(a,*);
1302
1303
1304Pattern AS6
1305# gf New pattern. (3.1.3)
1306
1307|.O if legal, take ko before filling ko
1308|OX
1309|X*
1310+--
1311
1312:8,s
1313
1314|ab
1315|OC
1316|X*
1317+--
1318
1319;alive(b) && alive(C) && legal_omove(*)
1320
1321>replace(a,*);
1322
1323
1324Pattern AS7
1325# pp New pattern (3.3.18)
1326# (Work-around problem with NonTerritory11, see valuation of M19 in
1327# endgame:830)
1328# It is shape-penalized since it can probably be a semeai attack/defense
1329# in exceptionally rare cases. But actually it is really an antisuji.
1330
1331?XX? don't play stupid zero point gote
1332o*.o
1333----
1334
1335:8,X,shape(-10)
1336
1337aXXc
1338b*ed
1339----
1340
1341; o_alive_somewhere(a,b) && o_alive_somewhere(c,d)
1342; && !oplay_attack(*,e,e)
1343; && (oplay_attack(*,e,*) || (o_somewhere(c) ? oplay_attack(*,e,c)
1344; : oplay_attack(*,e,d)))
1345
1346
1347###########################
1348#
1349# Shape moves.
1350#
1351# The purpose of these patterns is to give a value to the shape
1352# obtained locally.
1353#
1354###########################
1355
1356
1357Pattern Shape1
1358# gf Revised constraint. (3.1.9)
1359# gf Revised constraint. (3.3.10)
1360
1361OO empty triangle. Ok if the empty point of the triangle is an eye.
1362.*
1363
1364:8,-,shape(-2)
1365
1366OO
1367a*
1368
1369;!proper_eye(a) && !o_captures_something(*) && !x_captures_something(*)
1370
1371
1372Pattern Shape2
1373# gf Revised constraint. (3.3.10)
1374
1375O* empty triangle. Ok if the empty point of the triangle is an eye.
1376.O
1377
1378:/,-,shape(-2)
1379
1380O*
1381aO
1382
1383;!eye(a) && !o_captures_something(*)
1384
1385
1386Pattern Shape3
1387# tm modified (3.1.23) (reduce shape penalty)
1388# see blunder:15, trevord:800
1389# gf Revised constraint. (3.3.17)
1390
1391O* dango
1392OO
1393
1394:/,-,shape(-1)
1395
1396O*
1397OO
1398
1399;!ko(*) && !o_captures_something(*)
1400
1401
1402Pattern Shape4
1403
1404*.O forcing move left behind
1405.OX
1406xXX
1407
1408:8,-,shape(-2)
1409
1410*.O
1411aOX
1412xXX
1413
1414;!odefend_against(*,a)
1415
1416
1417Pattern Shape5
1418# gf Reduced shape value. (3.5.2)
1419
1420?O.O protect against atari or threat to atari
1421?.OX
1422?*XX
1423
1424:8,-,shape(3)
1425
1426
1427Pattern Shape6
1428# gf Added constraint. (3.1.15)
1429
1430*.O classical good shape, unless it leaves a double atari
1431..O
1432OOX
1433
1434:\,-,shape(2)
1435
1436*.O
1437.aO
1438OOX
1439
1440;oplay_attack(*,a,a)
1441
1442
1443Pattern Shape6b
1444
1445*.O secures eye
1446..O
1447OOo
1448
1449:\,-,shape(1)
1450
1451
1452Pattern Shape7
1453
1454*.X eye-stealing move
1455..X
1456XXO
1457
1458:\,-,shape(3)
1459
1460
1461Pattern Shape8a
1462
1463... ponnuki
1464.*.
1465OXO
1466.O.
1467
1468:|,-,shape(5)
1469
1470
1471Pattern Shape8b
1472
1473... ponnuki
1474.*.
1475OXO
1476.OO
1477
1478:8,-,shape(5)
1479
1480
1481Pattern Shape8c
1482
1483... ponnuki
1484.*o
1485OXO
1486.OX
1487
1488:8,-,shape(5)
1489
1490
1491Pattern Shape8d
1492
1493... ponnuki defense
1494o*.
1495OXO
1496XO.
1497xXx
1498
1499:8,-,shape(7)
1500
1501
1502Pattern Shape9a
1503# tm modified (3.1.18)
1504# tm modified (3.1.20)
1505
1506ooo don't give opponent ponnuki
1507o*o
1508XOX
1509.X.
1510
1511:|,-,shape(5)
1512
1513bdB
1514c*C
1515eOf
1516.X.
1517
1518; lib(e) > 1 && lib(f) > 1
1519; && (o_alive_somewhere(c) + o_alive_somewhere(C) + o_alive_somewhere(d) <= 1)
1520; && !(o_alive_somewhere(d) && (o_alive_somewhere(b) || o_alive_somewhere(B)))
1521
1522
1523Pattern Shape9b
1524# tm modified (3.1.18)
1525# tm modified (3.1.20)
1526# ab I don't understand this pattern. X has already played at LR of
1527# the pattern, so ponnuki is slow. Unless * attacks the eye space of X,
1528# I see no point in pulling this stone out.
1529
1530ooo don't give opponent ponnuki
1531o*o
1532XOX
1533.XX
1534
1535:8,-,shape(4)
1536
1537bdB
1538c*C
1539eOf
1540.XX
1541
1542; (o_alive_somewhere(c) + o_alive_somewhere(C) + o_alive_somewhere(d) <= 1)
1543; && !(o_alive_somewhere(d) && (o_alive_somewhere(b) || o_alive_somewhere(B)))
1544; && !attack(e) && !attack(f)
1545
1546
1547Pattern Shape9c
1548# tm modified (3.1.20)
1549
1550ooo don't give opponent ponnuki
1551o*o
1552XOX
1553.XO
1554
1555:8,-,shape(5)
1556
1557bdB
1558c*C
1559eOA
1560.fO
1561
1562; (o_alive_somewhere(c) + o_alive_somewhere(C) + o_alive_somewhere(d) <= 1)
1563; && !(o_alive_somewhere(d) && (o_alive_somewhere(b) || o_alive_somewhere(B)))
1564; && !attack(A) && !attack(e) && !attack(f)
1565
1566
1567Pattern Shape10
1568
1569xXx force opponent into bad shape or ko
1570..X
1571*XO
1572oOo
1573
1574:8,-,shape(3)
1575
1576
1577Pattern Shape11
1578# gf Revised constraint. (3.1.3)
1579
1580?..x Don't push from behind with few liberties (want to avoid double hane).
1581x.*X
1582?.OX
1583??X?
1584
1585:8,-,shape(-3)
1586
1587?..x
1588x.*X
1589?.bX
1590??A?
1591
1592;lib(A)>1 && !dead(b)
1593
1594
1595Pattern Shape12
1596
1597?..x Don't push from behind with few liberties (want to avoid double hane).
1598?...
1599x.*X
1600?.OX
1601??OX
1602??X?
1603
1604:8,-,shape(-2)
1605
1606?..x
1607?...
1608x.*X
1609?.OX
1610??OX
1611??A?
1612
1613;lib(A)>1
1614
1615
1616Pattern Shape12b
1617# gf Reduced shape value. (3.5.2)
1618
1619..x Don't push from behind with few liberties if we have to bend after hane
1620.*X
1621.OX
1622
1623:8,-,shape(-3)
1624
1625bax
1626.*C
1627.OC
1628
1629;!oplay_attack_either(*,a,a,C) && oplay_attack(*,a,b,*)
1630
1631
1632Pattern Shape13
1633# Such huge shape values can cause problems. See handtalk12.sgf, move 37
1634# (where * is actually an owl defense). -Arend
1635# gf Reduced shape value. (3.5.2)
1636
1637?X? don't set up double cut
1638*.O
1639.O.
1640
1641:8,-,shape(-3)
1642
1643?X?
1644*aB
1645cOb
1646
1647;!oplay_attack_either(*,a,b,c,a,c) && !oplay_attack_either(*,a,c,b,a,b) && !alive(B)
1648
1649
1650Pattern Shape14
1651
1652xXO? better connect solid at once than leaving a kikashi
1653.O.x
1654xX*?
1655
1656:8,X,shape(-2)
1657
1658xAO?
1659aO.x
1660xB*?
1661
1662;!oplay_attack(*,a,A) && !oplay_attack(*,a,B) && !oplay_attack(*,a,a)
1663
1664
1665Pattern Shape15
1666
1667xXO? better connect solid at once than leaving a kikashi
1668.O.*
1669xXx?
1670
1671:8,X,shape(-2)
1672
1673xAO?
1674aO.*
1675xBx?
1676
1677;!oplay_attack(*,a,A) && !oplay_attack(*,a,B) && !oplay_attack(*,a,a)
1678
1679
1680Pattern Shape16
1681# gf Added constraint. (3.3.10)
1682# Usually better to capture if either stone in atari.
1683
1684?XO clean cut
1685*Oo
1686?X?
1687
1688:8,-,shape(1)
1689
1690?BO
1691*Oo
1692?A?
1693
1694;lib(A)>1 && lib(B)>2
1695
1696
1697Pattern Shape17
1698# The solid connection is better than nothing if the descent doesn't work
1699
1700O*. X can still connect underneath
1701XOX
1702...
1703---
1704
1705:8,-,shape(-2)
1706
1707O*.
1708BOC
1709.a.
1710---
1711
1712;!oplay_attack(*,a,a) && !oplay_attack(*,a,B) && !oplay_attack(*,a,C) && oplay_attack(a,*,*)
1713
1714
1715Pattern Shape18
1716# gf Added n classification. (3.3.20)
1717
1718O.O tiger
1719.*X
1720
1721:8,n,shape(2)
1722
1723OaO
1724b*X
1725
1726;odefend_against(*,a) && (oplay_attack(*,b,b) || !oplay_attack(*,b,*))
1727
1728
1729Pattern Shape18b
1730# Negate shape bonus if X can force O to fill the tiger's mouth.
1731
1732??. tiger
1733O.O
1734.*X
1735
1736:8,-,shape(-2)
1737
1738??a
1739O.b
1740.*C
1741
1742;lib(b)==2 && lib(C)>3 && !oplay_attack(*,a,a)
1743
1744
1745Pattern Shape18c
1746# Negate shape bonus if X can connect "beneath".
1747# gf New pattern. (3.1.4)
1748
1749?O.O tiger
1750X.*X
1751....
1752
1753:8,-,shape(-3)
1754
1755?OdO
1756Xc*E
1757.ba.
1758
1759;oplay_attack(*,a,b,c,d,b) && lib(E)>3
1760
1761
1762Pattern Shape19
1763# gf Revised constraint. (3.3.2)
1764
1765X.X stop enemy tiger
1766.*O
1767
1768:8,-,shape(2)
1769
1770XaB
1771.*O
1772
1773;lib(B)>1 && xdefend_against(*,a)
1774
1775
1776Pattern Shape20
1777# delta_moyo currently overvalues this move, so we compensate here
1778# gf Reduced shape value. (3.5.2)
1779
1780XO. bad aji
1781O..
1782..*
1783...
1784---
1785
1786:8,-,shape(-3)
1787
1788
1789Pattern Shape21
1790# almost always best to capture immediately
1791
1792?XO?
1793XOXO
1794..*?
1795----
1796
1797:8,-,shape(1)
1798
1799
1800Pattern Shape22
1801
1802O.*X Wrong reinforcement
1803..OX
1804....
1805----
1806
1807:8,-,shape(-2)
1808
1809O.*X
1810.cOX
1811.bad
1812----
1813
1814;oplay_attack(*,a,b,c,d,*)
1815
1816
1817Pattern Shape23
1818
1819.OXx Usually better to connect solidly
1820..OX
1821.*..
1822----
1823
1824:8,-,shape(-1)
1825
1826
1827Pattern Shape24
1828# delta_terri should see the value of this move, but currently needs help
1829
1830?X?? Usually better to connect solidly
1831O*.O
1832....
1833----
1834
1835:8,-,shape(1)
1836
1837
1838Pattern Shape25
1839# gf Reduced shape value. (3.5.2)
1840
1841...x
1842.*.X Don't cap with weak stone that can be cut off.
1843....
1844xx.O
1845
1846:8,-,shape(-3)
1847
1848...x
1849.*.X
1850....
1851xx.a
1852
1853;weak(a)
1854
1855
1856Pattern Shape26
1857
1858XO? Bad shape after atari on first line
1859O.*
1860...
1861---
1862
1863:8,s,shape(-1)
1864
1865XO?
1866b.*
1867a..
1868---
1869
1870;lib(b)==2 && !oplay_attack(*,a,a)
1871
1872
1873Pattern Shape27
1874
1875?XO? Bad shape after atari on first line
1876XO..
1877...*
1878----
1879
1880:8,-,shape(-1)
1881
1882
1883Pattern Shape28
1884
1885O.XO Avoid diagonal move that allows X to cut.
1886.*..
1887
1888:8,X,shape(-4)
1889
1890O.XO
1891.*a.
1892
1893;!oplay_attack(*,a,a)
1894
1895
1896Pattern Shape29
1897# gf Revised constraint. (3.1.20)
1898
1899O.* Avoid setting up double threat.
1900?X?
1901
1902:8,X,shape(-5)
1903
1904ba*
1905?X?
1906
1907;(!attack(b) || defend(b)) && !oplay_defend_both(*,a,*,b)
1908
1909
1910Pattern Shape30
1911# In this position any move that defends the lower O stone will be
1912# assumed to break the connection, although X might connect
1913# underneath. Therefore we give some extra encourage to the real cut.
1914# If this move isn't safe, it won't be suggested anyway.
1915
1916?O?
1917o.o
1918XOX
1919.*.
1920---
1921
1922:|,X,shape(1)
1923
1924?O?
1925o.o
1926XaX
1927.*.
1928---
1929
1930;attack(a)
1931
1932
1933Pattern Shape31
1934
1935XOo Very seldom the right connection.
1936O..
1937O*.
1938---
1939
1940:8,-,shape(-1)
1941
1942
1943Pattern Shape32
1944
1945XO? Bad aji.
1946x.*
1947O.O
1948?.X
1949
1950:8,X,shape(-1)
1951
1952Xa?
1953x.*
1954O.O
1955?.X
1956
1957;lib(a)==2
1958
1959
1960Pattern Shape33
1961
1962?O. Never bad to make an eye.
1963O.*
1964oO.
1965
1966:8,-,shape(1)
1967
1968
1969Pattern Shape34
1970
1971?X? Don't descend if we can (and have to) capture.
1972XOX
1973.*.
1974---
1975
1976:8,X,shape(-3)
1977
1978?X?
1979BOX
1980.*a
1981---
1982
1983;lib(B)==1 && !oplay_attack(*,a,a)
1984
1985
1986Pattern Shape35
1987
1988O.O Good shape
1989O..
1990XO*
1991???
1992
1993:8,-,shape(1)
1994
1995
1996Pattern Shape36
1997
1998OX.O Very inefficient move
1999XO..
2000.*..
2001----
2002
2003:8,-,shape(-2)
2004
2005OB.O
2006XOa.
2007.*..
2008----
2009
2010;oplay_defend(*,B) && oplay_attack(*,a,*)
2011
2012
2013Pattern Shape37
2014
2015OX.O Good shape
2016XO*.
2017....
2018----
2019
2020:8,-,shape(1)
2021
2022
2023Pattern Shape38
2024
2025X.O Usually inefficient
2026O..
2027*..
2028---
2029
2030:8,-,shape(-1)
2031
2032
2033Pattern Shape39
2034
2035O.. good shape
2036..O
2037O*X
2038
2039:8,-,shape(1)
2040
2041b..
2042..a
2043O*X
2044
2045;lib(a)>2 && lib(b)>2
2046
2047
2048Pattern Shape40
2049
2050O.X eye-stealing move
2051..X
2052XX*
2053
2054:\,-,shape(1)
2055
2056
2057Pattern Shape41
2058# Notice that this pattern gives one more shape point for the previous
2059# pattern.
2060
2061O.x eye-stealing move
2062..X
2063xX*
2064
2065:\,-,shape(1)
2066
2067
2068Pattern Shape42
2069# Sometimes the life and death code comes up with both this move and
2070# the more solid move one line higher. Prefer the latter.
2071
2072O.o
2073X..
2074.*.
2075---
2076
2077:8,O,shape(-2)
2078
2079
2080Pattern Shape43
2081
2082?XO. usually better to connect solidly than leaving peep behind
2083xO..
2084..*.
2085----
2086
2087:8,-,shape(-2)
2088
2089
2090Pattern Shape44
2091# This pattern may be a little too general but is probably good.
2092
2093?...? extend when faced with contact instability
2094?.OX?
2095?.*.x
2096??.??
2097
2098:8,-,shape(2)
2099
2100?...?
2101a.OX?
2102?.*.x
2103??.??
2104
2105;!xmoyo(a)
2106
2107
2108Pattern Shape45
2109# gf Added constraint. (3.1.3)
2110
2111xxx? usually better to connect and block on third line
2112O..O
2113*...
2114....
2115----
2116
2117:8,-,shape(-1)
2118
2119CDE?
2120a..b
2121*...
2122....
2123----
2124
2125;!same_dragon(a,b) || x_alive_somewhere(C,D,E)
2126
2127
2128Pattern Shape46
2129# gf Reduced shape value. (3.5.2)
2130
2131?XXO blocking one step to the left usually much superior
2132.O.*
2133....
2134----
2135
2136:8,-,shape(-3)
2137
2138?XXb
2139.Oa*
2140....
2141----
2142
2143;lib(b)>=3 && oplay_attack(a,*,*)
2144
2145
2146Pattern Shape47
2147
2148x.O too vulnerable to cutting
2149O.X
2150.*X
2151xx?
2152
2153:8,-,shape(-3)
2154
2155
2156Pattern Shape48
2157# gf Added constraint. (3.3.15)
2158# gf Revised pattern. (3.3.16)
2159
2160.X. makes it harder for X to make eyes
2161*.X
2162?xx
2163
2164:8,s,shape(1)
2165
2166.A.
2167*.X
2168?xx
2169
2170;weak(A)
2171
2172
2173Pattern Shape49
2174
2175OXx avoid descending if it leaves a kikashi
2176XOX
2177.OX
2178.*.
2179---
2180
2181:8,-,shape(-1)
2182
2183OXx
2184XOX
2185.OX
2186.*a
2187---
2188
2189;oplay_attack(*,a,*) && !oplay_attack(*,a,a)
2190
2191
2192Pattern Shape50
2193
2194xO.xx connect after nozoki
2195X*.xx
2196xO.xx
2197
2198:-,OX,shape(5)
2199
2200
2201Pattern Shape51
2202
2203O.. empty triangle on the edge
2204O*.
2205---
2206
2207:8,-,shape(-2)
2208
2209
2210Pattern Shape53
2211
2212?X? good for eyespace and to avoid shortage of liberties
2213O*O
2214...
2215---
2216
2217:|,-,shape(1)
2218
2219
2220Pattern Shape54
2221
2222?X? often stupid
2223O.O
2224..*
2225---
2226
2227:8,-,shape(-1)
2228
2229
2230Pattern Shape55
2231# gf Reduced shape value. (3.5.2)
2232
2233O. don't force opponent to cut
2234X.
2235.*
2236
2237:8,-,shape(-3)
2238
2239a.
2240X.
2241.*
2242
2243;weak(a)
2244
2245
2246Pattern Shape56
2247
2248?XO. don't defend by moving straight down if X can peep
2249XO..
2250.*..
2251----
2252
2253:8,O,shape(-3)
2254
2255
2256Pattern Shape57
2257
2258..O avoid moves at cross purposes
2259O.X
2260.*.
2261
2262:8,OX,shape(-3)
2263
2264
2265Pattern Shape58
2266
2267O.XO effective block
2268..*O
2269..xx
2270
2271:8,-,shape(3)
2272
2273O.AO
2274..*O
2275..xx
2276
2277;lib(A)==3
2278
2279
2280Pattern Shape59
2281# gf Reduced shape value. (3.5.2)
2282
2283?X.O usually stupid, other atari or descent generally better
2284XOXO
2285..*.
2286----
2287
2288:8,-,shape(-3)
2289
2290
2291Pattern Shape60
2292
2293..O? don't connect this way because it leaves bad aji
2294...O
2295..*o
2296----
2297
2298:8,-,shape(-3)
2299
2300
2301Pattern Shape60b
2302# gf New pattern. (3.1.3)
2303
2304..O? this connection on the other hand is usually good
2305..*O
2306...o
2307----
2308
2309:8,-,shape(1)
2310
2311
2312Pattern Shape60c
2313# gf New pattern. (3.1.14)
2314
2315..OX? usually we want to avoid this connection too
2316...OX
2317...*O
2318-----
2319
2320:8,-,shape(-1)
2321
2322
2323Pattern Shape61
2324
2325xX... connecting preferred to alternative defenses
2326XOX..
2327O*O..
2328.....
2329.....
2330-----
2331
2332:8,-,shape(3)
2333
2334
2335Pattern Shape62
2336
2337?OO??
2338O...x not so good shape on the edge
2339O.*.x
2340-----
2341
2342:8,-,shape(-3)
2343
2344
2345Pattern Shape63
2346
2347??xO. might connect, but horrible amounts of aji
2348?X...
2349.XO..
2350..*..
2351-----
2352
2353:8,-,shape(-3)
2354
2355
2356Pattern Shape64
2357
2358?O.. never correct shape
2359O...
2360?O*.
2361----
2362
2363:8,-,shape(-3)
2364
2365
2366Pattern Shape65
2367
2368?O.. good solid shape
2369O.*.
2370?O..
2371----
2372
2373:8,-,shape(1)
2374
2375bO..
2376O.*.
2377aO..
2378----
2379
2380;o_alive_somewhere(a,b)
2381
2382
2383Pattern Shape66
2384# db increased negative shape (3.1.7)
2385# ab added ??? lines added as jump is often good on 3rd line
2386# gf This is way too general. Added constraint. (3.5.3)
2387
2388xX. often bad to leave a gap
2389O.*
2390...
2391???
2392???
2393
2394:8,-,shape(-3)
2395
2396xX.
2397ca*
2398.b.
2399???
2400???
2401
2402;oplay_disconnect(*,a,b,*,c)
2403
2404
2405Pattern Shape67
2406# gf New pattern. (3.1.3)
2407
2408?XX? when played as a ko threat, this is often inefficient
2409X*OX
2410..X?
2411
2412:8,sX,shape(-1)
2413
2414?XX?
2415X*OX
2416..X?
2417
2418;oplay_attack(*,*)
2419
2420
2421Pattern Shape68
2422# gf New pattern. (3.1.3)
2423
2424OXxx usually the right place for a small ko threat in this shape
2425X*.x
2426XX..
2427----
2428
2429:8,sOX,shape(1)
2430
2431OXxx
2432A*.x
2433AA..
2434----
2435
2436;lib(A)==2
2437
2438
2439Pattern Shape69
2440# gf New pattern. (3.1.13)
2441
2442?XXX?? usually the right way to strengthen the position
2443XO.O*.
2444XO....
2445......
2446------
2447
2448:8,-,shape(1)
2449
2450
2451Pattern Shape70
2452# gf New pattern. (3.1.14)
2453
2454OX.. better to capture cleanly
2455.*..
2456----
2457
2458:8,-,shape(-2)
2459
2460OAb.
2461.*..
2462----
2463
2464;!oplay_defend(b,A)
2465
2466
2467Pattern Shape71
2468# gf New pattern. (3.1.14)
2469
2470?XO.. the descent leaves a peep
2471XO...
2472.*...
2473-----
2474
2475:8,-,shape(-1)
2476
2477
2478Pattern Shape72
2479# gf New pattern. (3.1.14)
2480# gf Reduced shape value. (3.5.2)
2481
2482?XO. don't leave double threat behind
2483XO..
2484*...
2485----
2486
2487:8,-,shape(-3)
2488
2489?Xc.
2490Xba.
2491*...
2492----
2493
2494;!oplay_defend_both(*,a,b,c)
2495
2496
2497Pattern Shape73
2498# gf New pattern. (3.1.14)
2499
2500?OO cancel empty triangle negative shape when we create an eye
2501O.*
2502OoO
2503
2504:8,-,shape(2)
2505
2506?OO
2507Oa*
2508OoO
2509
2510;!proper_eye(a)
2511
2512
2513Pattern Shape73b
2514# gf New pattern. (3.1.20)
2515# See strategy3:120. This pattern favors C7 to D8.
2516
2517?OO some more shape if opponent could atari to destroy eye
2518O.*
2519OoO
2520
2521:8,-,shape(1)
2522
2523?AA
2524O.*
2525OoO
2526
2527;lib(A)==2 && xlib(*)>1
2528
2529
2530Pattern Shape74
2531# gf New pattern. (3.1.14)
2532
2533o..? don't leave cutting points around
2534O...
2535X.Ox
2536?*.x
2537oO.?
2538
2539:8,-,shape(-1)
2540
2541
2542Pattern Shape75
2543# gf New pattern. (3.1.15)
2544
2545?Xxx
2546.OXx
2547..*.
2548....
2549----
2550
2551:8,-,shape(-1)
2552
2553?XDx
2554bOXx
2555.a*c
2556....
2557----
2558
2559;(x_alive_somewhere(D) || oplay_attack(*,?,D,D)) && !oplay_defend(*,a,b,c,*)
2560
2561
2562Pattern Shape76
2563# tm New Pattern. (3.1.16) (see trevor:220)
2564# gf Reduced shape value. (3.5.2)
2565
2566----
2567....
2568....
2569O.*.
2570
2571:8,-,shape(-3)
2572
2573----
2574....
2575CbE.
2576DA*.
2577
2578; xlib(A) > 2
2579; && oplay_attack(*,A,b,C,D)
2580; && oplay_attack(*,A,b,E,C,*)
2581
2582
2583Pattern Shape77
2584# gf New pattern. (3.1.18) (see trevor:382)
2585
2586oOO
2587O..
2588XO*
2589---
2590
2591:8,-,shape(-3)
2592
2593
2594Pattern Shape78
2595# gf New pattern. (3.1.18) (see trevor:382)
2596
2597oOO
2598O.*
2599XO.
2600---
2601
2602:8,-,shape(1)
2603
2604
2605Pattern Shape79
2606# gf New pattern. (3.1.20) (see trevord:610,630,640)
2607
2608OOo Almost always better to block on second line
2609X..
2610*..
2611---
2612
2613:8,O,shape(-2)
2614
2615OOo
2616A..
2617*..
2618---
2619
2620;lib(A)==2
2621
2622
2623Pattern Shape80
2624# tm New Pattern (3.1.22) (see trevora:390)
2625
2626|O.O
2627|..O
2628|*.O
2629|..o
2630+---
2631
2632:8,-,shape(1)
2633
2634
2635Pattern Shape81
2636# tm New Pattern (3.1.22) (see trevora:300)
2637# FIXME: potentially bad for ko threats.
2638
2639.*o
2640O..
2641XOO
2642
2643:8,X,shape(1)
2644
2645
2646Pattern Shape82
2647# gf New pattern. (3.1.32) (see trevorb:280)
2648
2649|XXO Prefer this as ko threat since it gives a second one
2650|.*X
2651|.X?
2652|.??
2653
2654:8,sX,shape(2)
2655
2656|AAO
2657|.*X
2658|.X?
2659|b??
2660
2661;!weak(A) && lib(A)==2 && xterri(b)
2662
2663
2664Pattern Shape83
2665# gf New pattern. (3.3.3) (see trevorc:310)
2666
2667*X? don't leave double atari behind
2668.OX
2669..O
2670
2671:8,sX,shape(-2)
2672
2673*X?
2674daX
2675.cb
2676
2677;!oplay_defend_both(*,c,a,b) && oplay_attack(d,c,c)
2678
2679
2680Pattern Shape84
2681# gf New pattern. (3.3.3) (see trevorc:1310)
2682
2683OX? connect correctly
2684.OX
2685.*O
2686---
2687
2688:8,sX,shape(-2)
2689
2690OX?
2691bOX
2692.*a
2693---
2694
2695;lib(a)>1 && xlib(b)>1 && oplay_attack(*,b,*)
2696
2697
2698Pattern Shape85
2699# gf New pattern. (3.3.10)
2700# Usually less aji when attacking at c rather than *.
2701
2702OOX attack correctly
2703*XO
2704...
2705xxx
2706
2707:8,sX,shape(-1)
2708
2709aaX
2710*BO
2711.c.
2712xxx
2713
2714;(xlib(*)==2 || (lib(a)>2 && xlib(*) < xlib(c)))
2715;&& !oplay_defend(c,B)
2716
2717
2718Pattern Shape86
2719# gf New pattern. (3.3.15)
2720# Prefer cut to peep as ko threat.
2721# gf Revised constraint. (3.3.16)
2722
2723XO ko threat
2724*X
2725
2726:/,sX,shape(1)
2727
2728AO
2729*B
2730
2731;oplay_attack_either(*,A,B) && !safe_omove(*)
2732
2733
2734Pattern Shape87
2735# gf New pattern. (3.5.3)
2736# gf See gifu03:501
2737
2738.OXx usually better to extend than atari in cross cut
2739.XO.
2740.*..
2741
2742:8,sX,shape(-1)
2743
2744.aXx
2745.Xb.
2746.*..
2747
2748;!dead(a) && !dead(b) && weak(a) && weak(b) && oplay_disconnect(*,a,b)
2749
2750
2751Pattern Shape88
2752# gf New pattern. (3.7.2)
2753# See gunnar:55.
2754
2755?X.X more potential for followup ko threats one step to the right
2756X*.X
2757?XXO
2758
2759:8,sX,shape(-1)
2760
2761?XbX
2762X*.X
2763?AAO
2764
2765;lib(A)==2 && olib(*)==1 && olib(b)==1
2766
2767
2768###########################
2769#
2770# Followup moves.
2771#
2772# The purpose of these patterns is to give a rough estimate of the
2773# value of followup moves, either to this move or to moves the
2774# opponent could continue with if we do not defend now.
2775#
2776###########################
2777
2778
2779Pattern Sente1
2780
2781?X? Defend to avoid cutting points
2782XOX
2783O*o
2784
2785:8,-,reverse_followup(5)
2786
2787?X?
2788XOB
2789a*o
2790
2791;lib(B)>1 && xplay_attack(*,a)
2792
2793
2794Pattern Sente1b
2795
2796*X? Capture to avoid cutting points
2797XOX
2798O.o
2799
2800:8,-,reverse_followup(5)
2801
2802*X?
2803COX
2804bao
2805
2806;lib(C)==1 && xplay_attack(a,b) && oplay_attack(*,a,a)
2807
2808
2809Pattern Sente1c
2810
2811OX? Capture to avoid cutting points
2812XOX
2813*.o
2814
2815:8,-,reverse_followup(5)
2816
2817bX?
2818COX
2819*ao
2820
2821;lib(C)==1 && xplay_attack(a,b) && oplay_attack(*,a,a)
2822
2823
2824Pattern Sente1d
2825# gf New pattern. (3.3.10)
2826
2827?OX? Capture to avoid cutting points
2828*XOX
2829?O.o
2830
2831:8,-,reverse_followup(5)
2832
2833?OX?
2834*COX
2835?bao
2836
2837;lib(C)==1 && xplay_attack(a,b) && oplay_attack(*,a,a)
2838
2839
2840Pattern Sente2
2841
2842.X. Defend to create cutting points
2843XOX
2844O*O
2845
2846:|,-,followup(5)
2847
2848.B.
2849AOC
2850O*O
2851
2852# Better to capture A or C at once if either in atari
2853;oplay_break_through(*,A,B,C) && lib(A)>1 && lib(C)>1
2854
2855
2856Pattern Sente3
2857
2858?XOO Block on edge.
2859XOX*
2860....
2861----
2862
2863:8,-,followup(6)
2864
2865
2866Pattern Sente4
2867
2868oOX. Hanetsugi
2869.*OX
2870----
2871
2872:8,-,followup(6)
2873
2874oOA.
2875.*OB
2876----
2877
2878;oplay_attack_either(*,A,B) && !attack(B) && !attack(A)
2879
2880
2881Pattern Sente5
2882# The followup value is usually larger in practice.
2883
2884*XX force X to make dango
2885X.X
2886?XO
2887
2888:8,X,followup(6)
2889
2890*AA
2891X.A
2892?Xa
2893
2894;lib(A)==2 && lib(a)>1
2895
2896
2897Pattern Sente6
2898# The followup value is usually larger in practice.
2899
2900XXX force X to make dango
2901X.X
2902*XO
2903
2904:8,X,followup(10)
2905
2906AAA
2907A.A
2908*Xa
2909
2910;lib(A)==2 && lib(a)>1
2911
2912
2913Pattern Sente7
2914# tm modified (3.1.22) (added oplay_defend)
2915
2916?O?
2917.X*
2918...
2919---
2920
2921:8,X,followup(6)
2922
2923?O?
2924.A*
2925...
2926---
2927
2928;oplay_attack(*,A) && oplay_defend(*,A)
2929
2930
2931Pattern Sente8
2932
2933O..
2934*X.
2935...
2936---
2937
2938:8,OXd,followup(8)
2939
2940O..
2941*A.
2942...
2943---
2944
2945;oplay_attack(*,A)
2946
2947
2948Pattern Sente9
2949
2950?X*O Cut
2951.OX.
2952....
2953----
2954
2955:8,-,followup(6)
2956
2957
2958Pattern Sente10
2959# FIXME: The followup value should be related to the size of A.
2960
2961.O.?
2962...X
2963OXX*
2964
2965:8,-,followup(5),shape(1)
2966
2967.O.?
2968...X
2969OAA*
2970
2971;lib(A)==3 && oplay_attack(*,A)
2972
2973
2974Pattern Sente11
2975
2976?OO?
2977.XX*
2978....
2979----
2980
2981:8,X,followup(9)
2982
2983?OO?
2984.AA*
2985....
2986----
2987
2988;oplay_attack(*,A)
2989
2990
2991Pattern Sente13
2992# gf Revised constraint. (3.1.20)
2993
2994*O
2995
2996:-,sO
2997
2998*a
2999
3000;lib(a) == 2 && !attack(a) && safe_xmove(*) && safe_omove(*)
3001# Action adds a reverse followup value.
3002>defend_against_atari(a)
3003
3004
3005Pattern Sente13b
3006# gf Revised constraint. (3.1.10)
3007# gf Revised constraint. (3.3.16)
3008# gf Revised constraint. (3.5.3)
3009
3010.O
3011*?
3012
3013:8,sO
3014
3015ba
3016*c
3017
3018;lib(a) == 2 && !attack(a) && olib(b) > 2 && safe_omove(*)
3019;&& (safe_xmove(*) || safe_xmove(b))
3020;&& (oplay_attack(*,b,b)==WIN
3021; || (x_somewhere(c) && oplay_attack_either(*,b,b,c)))
3022# Action adds a reverse followup value.
3023>defend_against_atari(a)
3024
3025
3026Pattern Sente13c
3027# gf New pattern. (3.3.16)
3028
3029O.O
3030*.O
3031
3032:8,sO
3033
3034Oba
3035*ca
3036
3037;lib(a) == 2 && !attack(a) && safe_omove(*)
3038;&& (safe_xmove(b) || safe_xmove(c))
3039;&& oplay_attack(*,b,b)==WIN
3040;&& oplay_attack(*,c,c)==WIN
3041# Action adds a reverse followup value.
3042>defend_against_atari(a)
3043
3044
3045Pattern Sente13d
3046# gf New pattern. (3.3.17)
3047
3048..X
3049*.O
3050..O
3051oOX
3052
3053:8,sO
3054
3055..X
3056*ca
3057.ba
3058oOX
3059
3060;lib(a) == 2 && !attack(a) && safe_omove(*)
3061;&& safe_xmove(*)
3062;&& !oplay_defend(*,b,c,b)
3063;&& xplay_attack(*,a)
3064# Action adds a reverse followup value.
3065>defend_against_atari(a)
3066
3067
3068Pattern Sente13e
3069# gf New pattern. (3.7.4)
3070# gf Removed O classification and revised constraint. (3.7.10)
3071
3072*.O
3073?O?
3074
3075:8,s
3076
3077*ba
3078?O?
3079
3080;alive(a) && lib(a) == 2 && !attack(a) && olib(b) > 2 && safe_omove(*)
3081;&& safe_xmove(b) && oplay_attack(*,b,b)==WIN
3082# Action adds a reverse followup value.
3083>defend_against_atari(a)
3084
3085
3086Pattern Sente14
3087
3088OXx
3089.OX
3090O.*
3091
3092:8,OX,reverse_followup(5)
3093
3094aBx
3095.OC
3096Od*
3097
3098;lib(a)>1 && !attack(B) && !attack(C) && xlib(d)>1
3099
3100
3101Pattern Sente15
3102
3103OX.
3104oOX
3105oo*
3106
3107:8,OX,followup(5)
3108
3109aBd
3110eOC
3111fg*
3112
3113;lib(a)>1 && o_alive_somewhere(e,f,g) && !attack(B) && !attack(C)
3114;&& !oplay_defend_both(*,?,d,B,C)
3115
3116
3117Pattern Sente16
3118# gf New pattern. (3.1.14)
3119# The constraint is unprecise, but correcting it probably
3120# require a handwritten helper.
3121
3122.O?
3123.*X
3124---
3125
3126:8,OX,reverse_followup(5)
3127
3128bO?
3129a*X
3130---
3131
3132;xplay_attack(*,a,b,*) && xplay_defend_both(*,a,b,*,b)
3133
3134
3135Pattern Sente17
3136# gf New pattern. (3.1.15)
3137
3138.OXx
3139.*oX
3140----
3141
3142:8,X,reverse_followup(5)
3143
3144cdXx
3145a*bX
3146----
3147
3148;alive(d) && !xplay_defend_both(*,a,b,?,c,a,d)
3149
3150
3151Pattern Sente18
3152# gf New pattern. (3.3.13)
3153# The reverse followup value is probably often bigger than 5 points.
3154
3155X..O..
3156XOX*..
3157......
3158------
3159
3160:8,X,reverse_followup(5)
3161
3162C..b..
3163COX*.a
3164......
3165------
3166
3167;omoyo_opposite(a) && alive(b) && alive(C)
3168
3169
3170Pattern Sente19
3171# gf New pattern. (3.3.16)
3172# Usually underestimating the reverse followup, but better than nothing.
3173
3174?oO
3175o.*
3176?OX
3177
3178:8,OX,reverse_followup(1)
3179
3180?cO
3181ba*
3182?OX
3183
3184;((!o_somewhere(b) && oterri(b))
3185; || (!o_somewhere(c) && oterri(c)))
3186;&& safe_xmove(*) && !xplay_attack(*,a,*)
3187
3188
3189Pattern Sente20
3190# gf New pattern. (3.3.16)
3191# Usually underestimating the reverse followup, but better than nothing.
3192
3193?.O
3194..*
3195?OX
3196
3197:8,OX,reverse_followup(2)
3198
3199?cO
3200ba*
3201?OX
3202
3203;oterri(b) && oterri(c) && safe_xmove(*) && !xplay_attack(*,a,*)
3204
3205
3206Pattern Sente21
3207# gf New pattern. (3.3.16)
3208# Usually underestimating the reverse followup, but better than nothing.
3209
3210..O
3211..*
3212?OX
3213
3214:8,OX,reverse_followup(3)
3215
3216dcO
3217ba*
3218?OX
3219
3220;oterri(b) && oterri(c) && oterri(d) && safe_xmove(*) && !xplay_attack(*,a,*)
3221
3222
3223Pattern Sente22
3224# pp New pattern, see trevord:950 (3.3.20)
3225
3226?OX?
3227O.*.
3228?XX?
3229
3230:8,OX
3231
3232?OX?
3233Oa*b
3234?AA?
3235
3236; oplay_attack(*,A) && oplay_attack(*,a,A) && oplay_attack(*,b,a,A)
3237
3238> good_attack_threat(*,A)
3239
3240
3241Pattern Sente23
3242# gf New pattern. (3.5.4)
3243# See trevorc:450.
3244
3245?OX
3246O.O
3247O*X
3248
3249:8,O
3250
3251?OX
3252a.c
3253a*B
3254
3255;lib(a)>3 && alive(B) && xplay_attack(*,c)
3256
3257>prevent_attack_threat(c);
3258
3259
3260Pattern Sente24
3261# pp New pattern (3.5.8)
3262
3263?*?
3264XO.
3265?O.
3266---
3267
3268:8,OX,reverse_followup(8)
3269
3270?*?
3271XAb
3272?A.
3273---
3274
3275; lib(A)==3 && safe_xmove(*) && !xplay_defend(*,?,b,A)
3276
3277
3278########################################################
3279#
3280# Double threat moves and defense against double threats
3281#
3282########################################################
3283
3284
3285Pattern DD1
3286# FIXME: This isn't really double atari - just plain old
3287# capture also matches here. see nngs:1260
3288# Does this matter?
3289
3290*X double atari on you
3291XO
3292
3293:\,X
3294
3295*A
3296BO
3297
3298>test_attack_either_move(A,B)
3299
3300
3301Pattern DD2
3302
3303*O double atari on me
3304OX
3305
3306:\,nO
3307
3308*a
3309bX
3310
3311;!xplay_defend_both(*,a,b)
3312
3313>add_defend_both_move(a,b);
3314
3315
3316Pattern DD2b
3317
3318*.O double atari on me, defended by hanging connection
3319?OX
3320
3321:8,O
3322
3323*ca
3324?bX
3325
3326;!xplay_defend_both(c,a,b)
3327;&& (oplay_attack(*,c,c) || oplay_defend_both(*,c,a,b))
3328
3329>add_defend_both_move(a,b);
3330
3331
3332Pattern DD3
3333
3334OXX
3335X*.
3336X..
3337
3338:8,O
3339
3340OEE
3341D*c
3342Dba
3343
3344;oplay_attack(*,D) && oplay_attack_either(*,a,D,E)
3345;&& !oplay_defend_both(*,b,c,D,E)
3346
3347>test_attack_either_move(D,E)
3348
3349
3350Pattern DD4
3351# gf Revised constraint. (3.5.2)
3352
3353XOO
3354O..
3355O.*
3356
3357:8,O
3358
3359Xee
3360dac
3361db*
3362
3363;xplay_attack(a,d) && xplay_attack_either(a,*,d,e)
3364;&& !xplay_defend_both(a,b,c,d,e) && !xplay_defend_both(a,c,b,d,e)
3365;&& !xplay_connect(a,d,e) && oplay_connect(*,a,d,e)
3366
3367>add_defend_both_move(d,e);
3368
3369
3370Pattern DD5
3371# gf Exclude this pattern when scoring. (3.3.14)
3372# This is somewhat wimpy. We should do more exact reading to verify
3373# whether it really is necessary.
3374
3375XOO
3376O..
3377O.*
3378
3379:8,O
3380
3381Xcc
3382ba.
3383b.*
3384
3385;!doing_scoring
3386;&& lib(c)<=4 && xplay_attack(a,b) && safe_xmove(a) && odefend_against(*,a)
3387
3388>add_defend_both_move(b,c);
3389
3390
3391Pattern DD6
3392# al1 Revised symmetry. (3.7.11)
3393
3394?o? Double attack
3395X*X
3396?o?
3397
3398:+,-
3399
3400?o?
3401A*B
3402?o?
3403
3404>test_attack_either_move(A,B)
3405
3406
3407Pattern DD7
3408# gf Revised constraint. (3.1.20)
3409
3410*OX
3411?XO
3412
3413:8,-
3414
3415*dA
3416?Bc
3417
3418;lib(d)<4 && (xlib(*)>1 || lib(d)<3)
3419;&& oplay_defend(*,A) && oplay_defend(*,B)
3420;&& !oplay_attack(*,c)
3421
3422>test_attack_either_move(A,B)
3423
3424
3425Pattern DD8
3426
3427O.. extend to connect
3428XO*
3429
3430:8,O
3431
3432ca.
3433Xb*
3434
3435;safe_xmove(a) && !xplay_defend_both(a,b,c) && oplay_defend_both(*,a,b,c)
3436
3437>add_defend_both_move(b,c);
3438
3439
3440Pattern DD8b
3441# gf Added constraint. (3.3.20)
3442# Not a problem if the opponent can't even threaten to cut after the move.
3443
3444O.. extend to connect
3445XO*
3446?o.
3447
3448:8,O,shape(-1)
3449
3450ba.
3451XO*
3452?o.
3453
3454;oplay_disconnect(*,a,*,b)
3455
3456
3457Pattern DD9
3458
3459O.* double atari on me
3460XO.
3461
3462:8,O
3463
3464ca*
3465Xb.
3466
3467;safe_xmove(a) && !xplay_defend_both(a,b,c) && oplay_defend_both(*,a,b,c)
3468
3469>add_defend_both_move(b,c);
3470
3471
3472Pattern DD10
3473
3474*O. generalized tsukenobi joseki
3475?XO
3476
3477:8,-
3478
3479*ba
3480?Xc
3481
3482;(alive(b) || alive(c))
3483;&& safe_xmove(a)==WIN && !xplay_defend_both(a,b,c) && oplay_attack(*,a,a)==WIN
3484
3485>add_defend_both_move(b,c);
3486
3487
3488Pattern DD11
3489
3490X.? double attack
3491O*.
3492??X
3493
3494:8,-,shape(2)
3495
3496A.?
3497O*.
3498??B
3499
3500; !attack(A) && !attack(B) && oplay_attack(*,A) && oplay_attack(*,B)
3501
3502>test_attack_either_move(A,B)
3503
3504
3505Pattern DD12
3506# gf Revised. (3.1.9)
3507
3508OX? double attack
3509X*.
3510X..
3511X..
3512---
3513
3514:8,-
3515
3516EB?
3517A*d
3518Ac.
3519A..
3520---
3521
3522;lib(A)==3 && !oplay_attack(*,E) && oplay_attack(*,d,A)
3523;&& !oplay_defend_both(*,c,d,A,B)
3524
3525>test_attack_either_move(A,B)
3526
3527
3528Pattern DD13
3529# gf Revised. (3.1.9)
3530
3531XO? double defense
3532O*.
3533O..
3534O..
3535---
3536
3537:8,-
3538
3539eb?
3540a*d
3541ac.
3542a..
3543---
3544
3545;lib(a)==3 && !attack(e) && xplay_attack(*,d,a)
3546;&& !xplay_defend_both(*,c,d,a,b)
3547
3548>add_defend_both_move(a,b)
3549
3550
3551###########################
3552#
3553# Temporary patterns to correct certain misbehaviours.
3554#
3555###########################
3556
3557
3558Pattern Temp1
3559# This joseki is played far too frequently.
3560# existed since at least 3.0.0
3561
3562|........
3563|........
3564|.....*..
3565|...O....
3566|.....X..
3567|........
3568|........
3569+--------
3570
3571:8,-,maxvalue(25)
3572
3573
3574Pattern Temp5
3575# Don't make a short jump along the edge before shimari.
3576# existed since at least 3.0.0
3577# tm Modified (3.1.20)
3578
3579???xxxxx|
3580........|
3581........|
3582........|
3583.*..O...|
3584........|
3585........|
3586--------+
3587
3588:8,-
3589
3590???xxxxx|
3591........|
3592........|
3593........|
3594.*..O...|
3595........|
3596........|
3597--------+
3598
3599>antisuji(*);
3600
3601
3602Pattern Temp6
3603# Don't make a short extension from san-san in open surroundings.
3604# existed since at least 3.0.0
3605
3606.........|
3607.........|
3608.........|
3609.........|
3610...*..O..|
3611.........|
3612.........|
3613---------+
3614
3615:8,-
3616
3617.........|
3618.........|
3619.........|
3620..b......|
3621...*a.O..|
3622.........|
3623.........|
3624---------+
3625
3626>antisuji(*);
3627>antisuji(a);
3628>antisuji(b);
3629
3630
3631Pattern Temp7a
3632# Don't make a one space jump along the edge when there is room for a
3633# two space jump.
3634# existed since at least 3.0.0
3635# FIXME: consider using replace instead of antisuji here?
3636
3637......
3638......
3639..*.O.
3640......
3641......
3642------
3643
3644:8,-
3645
3646>antisuji(*);
3647
3648
3649Pattern Temp7b
3650# Usually stupid
3651# existed since at least 3.1.20
3652
3653X...xxx
3654XXO.xxx
3655OX*....
3656.......
3657-------
3658
3659:8,-
3660
3661G...abc
3662GGO.def
3663OG*....
3664.......
3665-------
3666
3667;!weak(G) && x_alive_somewhere(a,b,c,d,e,f)
3668
3669>antisuji(*);
3670
3671
3672Pattern Temp8
3673# existed since at least 3.1.20
3674
3675.....o Don't crosscut
3676.*X.Oo
3677.XO..o
3678.....o
3679......
3680------
3681
3682:8,-,shape(-10)
3683
3684
3685Pattern Temp9
3686# gf New pattern. (3.3.6)
3687# ab Modified: ok after approach move (3.7.1)
3688
3689|............
3690|............
3691|............ don't play halfways between hoshi
3692|...O.....O..
3693|......*.....
3694|............
3695|............
3696+------------
3697
3698:8,-
3699
3700|............
3701|............
3702|............
3703|...O..a..O..
3704|......*.....
3705|............
3706|............
3707+------------
3708
3709>antisuji(*);
3710>antisuji(a);
3711
3712
3713# END OF FILE