Updated README: Equal sign not required with `--mode` flag.
[sgk-go] / patterns / barriers.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# Database of influence patterns.
26#
27# ? - don't care
28# . - empty
29# O - color to move
30# Q - same as O, plus sets the pattern anchor
31# X - opposite color of O
32# o - O or empty
33# x - X or empty
34# , - point which influence can't pass through
35# A/D patterns:
36# ! - point where influence gets weakened when passing through
37# (permeability multiplied by 0.7)
38# B patterns:
39# ! - marks an intrusion for the anchor stone with indicated value
40#
41#
42# Four different classes of patterns are used here.
43#
44# A - Patterns stopping O influence
45# D - Patterns stopping X influence
46# B - Intrusions (where O can intrude into X'x territory)
47# t - Nonterritory patterns indicating points where one color cannot
48# get territory
49#
50# Constraints are as usual.
51# B patterns are matched for the color to move, and for the color having
52# made a move in followup influence, in order to compute the followup
53# value of this move. (Only patterns including the played move or any
54# stone saved by this move are taken into account.)
55# For the followup influence, a pattern is used if the usual constraint
56# is satisfied, and if the action returns true. See the influence
57# documentation for explanation and influence.c for details.
58
59
60attribute_map value_only
61
62goal_elements none
63callback_data XO,!
64
65
66#########################################################
67# #
68# Influence blocking patterns (barriers) #
69# #
70#########################################################
71
72
73Pattern Barrier1
74
75O,O
76
77:+,D
78
79
80Pattern Barrier1b
81# gf Corrected symmetry. (3.1.23)
82
83o,o
84O,O
85
86:|,D
87
88
89Pattern Barrier2
90
91xxx
92X,X
93xxx
94
95:+,A
96
97
98Pattern Barrier3
99
100.,.
101X,X
102
103:|,A
104
105.b.
106cad
107
108;!(oplay_break_through(a,b,c,b,d)==WIN)
109
110
111Pattern Barrier4a
112
113|,O
114
115:-,D
116
117|aO
118
119;!oplay_attack(a,a)
120
121
122Pattern Barrier4b
123
124|,o?
125|.OX
126
127:8,OD
128
129|ao?
130|.OX
131
132;!oplay_attack(a,a)
133
134
135Pattern Barrier5
136
137xXx
138x,x
139---
140
141:|,A
142
143
144Pattern Barrier6
145
146,X
147,.
148--
149
150:8,A
151
152cd
153ba
154--
155
156;oplay_attack_either(a,b,c,a,c) || !oplay_attack_either(a,b,b,d)
157
158
159Pattern Barrier6b
160# gf New pattern. (3.3.10)
161# See century2002:85.
162
163OX
164,.
165--
166
167:8,A
168
169aX
170,.
171--
172
173;!defend(a)
174
175
176Pattern Barrier7
177
178XX
179,,
180--
181
182:|,A
183
184
185Pattern Barrier8
186
187,O
188O,
189
190:X,D
191
192
193Pattern Barrier9
194
195,X
196X,
197
198:X,A
199
200
201Pattern Barrier10
202
203XO
204O,
205
206:\,D
207
208
209Pattern Barrier11
210
211OX
212X,
213
214:\,A
215
216Oc
217ba
218
219;!safe_omove(a) || oplay_defend_both(a,b,c)
220
221
222Pattern Barrier12
223
224O,.
225?,O
226
227:8,D
228
229
230Pattern Barrier13
231
232X,X
233X,X
234
235:+,A
236
237
238Pattern Barrier14
239
240X,o
241X,X
242
243:8,A
244
245Xbo
246Xac
247
248;!oplay_attack_either(a,b,b,c)
249
250
251Pattern Barrier15
252
253xxx
254X,x
255x,X
256xxx
257
258:8,A
259
260
261Pattern Barrier16
262
263X,.
264.,X
265
266:O,A
267
268cae
269fbd
270
271;(oplay_attack_either(a,b,f,a,f) || !oplay_attack_either(a,b,c,d))
272;&& (oplay_attack_either(b,a,e,b,e) || !oplay_attack_either(b,a,c,d))
273
274
275Pattern Barrier16b
276
277X,X
278.,X
279
280:8,A
281
282cad
283fbd
284
285;(oplay_attack_either(a,b,f,a,f) || !oplay_attack_either(a,b,c,d))
286;&& !oplay_attack(b,a,c)
287
288
289Pattern Barrier17
290
291X,.
292O,X
293
294:8,A
295
296cae
297Obd
298
299;!oplay_attack_either(a,b,c,d)
300;&& (oplay_attack_either(b,a,e,b,e) || !oplay_attack_either(b,a,c,d))
301
302
303Pattern Barrier18
304
305X,O
306O,X
307
308:8,A
309
310caO
311Obd
312
313;!oplay_attack_either(a,b,c,d) && !oplay_attack_either(b,a,c,d)
314
315
316Pattern Barrier19
317
318O,,O
319...o
320
321:8,D
322
323dbaO
324.c.o
325
326;!oplay_break_through(a,b,c,a,c,d)
327
328
329Pattern Barrier20
330# gf Corrected symmetry. (3.1.23)
331
332O,,O
333O..o
334
335:8,D
336
337Obae
338Ocdo
339
340;!oplay_attack_either(a,b,c,a,c) || !oplay_attack_either(b,a,d,d,e)
341
342
343Pattern Barrier21
344
345?xx?
346xxxx
347X,,X
348xxxx
349?xx?
350
351:+,A
352
353
354Pattern Barrier22
355
356x..x
357X,,X
358x..x
359
360:|,A
361
362x..x
363XdaX
364xcbx
365
366;!oplay_attack_either(a,b,c,d,b,d) && !oplay_attack_either(d,c,b,a,c,a)
367
368
369Pattern Barrier22a
370# This pattern could have '|' symmetry, but to improve the chances
371# that it's matched before the expensive next one, we let it have
372# '8' symmetry.
373
374?xxxx?
375xxxxxx
376xX,,Xx
377xx,,xx
378xxxxxx
379------
380
381:8,A
382
383
384Pattern Barrier22b
385
386X..X
387x,,x
388xxxx
389
390:|,A
391
392XdaX
393xcbx
394xxxx
395
396;!oplay_attack_either(a,b,c,d,b,d) && !oplay_attack_either(d,c,b,a,c,a)
397
398
399Pattern Barrier23
400# gf Revised. (3.3.17)
401
402O,,.
403.,,O
404
405:O,D
406
407Oab.
408.dcO
409
410;oplay_attack_either(a,b,c,d,b,d) || oplay_defend_both(a,b,c,d,a,c)
411
412
413Pattern Barrier24
414
415?O...
416oo,,O
417?O...
418
419:-,D
420
421
422Pattern Barrier25
423
424?xx?
425xxxx
426X,.x
427x.,X
428xxxx
429?xx?
430
431:8,A
432
433
434Pattern Barrier26
435# gf Revised pattern. (3.5.3)
436
437X,,x
438x,,X
439
440:O,A
441
442Xdax
443xcbX
444
445;!oplay_attack_either(a,b,c,d,b,d) && !oplay_attack_either(d,c,b,a,c,a)
446
447
448Pattern Barrier27
449
450oOo
451o,o
452o,o
453---
454
455:|,D
456
457
458Pattern Barrier28
459
460xXx
461x,x
462x,x
463---
464
465:|,A
466
467
468Pattern Barrier29
469
470,O
471,X
472--
473
474:8,D
475
476,b
477aX
478--
479
480;!oplay_attack_either(a,a,b)
481
482
483Pattern Barrier30
484
485OO
486,X
487--
488
489:8,D
490
491OO
492aX
493--
494
495;!oplay_attack(a,a)
496
497
498Pattern Barrier31
499
500?.O,o
501?.X,o
502o..,o
503-----
504
505:8,D
506
507
508Pattern Barrier32
509
510?Ooo
511X,,o
512..,o
513----
514
515:8,D
516
517
518Pattern Barrier33
519
520XOoo
521.X,o
522..,o
523----
524
525:8,D
526
527XOoo
528.Bao
529..,o
530----
531
532;oplay_attack(a,B)
533
534
535Pattern Barrier34
536
537XOo
538.,o
539.,o
540---
541
542:8,D
543
544
545Pattern Barrier34b
546
547XOO
548.,X
549.,?
550---
551
552:8,D
553
554XOO
555.,A
556.,?
557---
558
559;attack(A)
560
561
562Pattern Barrier35
563
564oOoOo
565o,,,o
566o,,,o
567-----
568
569:|,D
570
571
572Pattern Barrier36
573
574xXxXx
575x,,,x
576x,,,x
577-----
578
579:|,A
580
581
582Pattern Barrier37
583
584OXxx
585.,,x
586..,x
587----
588
589:8,A
590
591OAbx
592.cdx
593..,x
594----
595
596;lib(A)>3 || (!legal_omove(b))
597;|| (lib(A)>2 && (olib(b) <= 2 || oplay_attack_either(c,d,b,b,c)))
598
599
600Pattern Barrier38
601
602OXO
603,,?
604---
605
606:8,D
607
608OAO
609,,?
610---
611
612;lib(A)==1
613
614
615Pattern Barrier39
616
617oooO?
618oO..o
619o.,,o
620o.,,o
621-----
622
623:8,D
624
625
626Pattern Barrier40
627
628xxxX?
629xX..x
630x.,,x
631x.,,x
632-----
633
634:8,A
635
636
637Pattern Barrier41a
638
639O.XO
640.,,O
641
642:8,D
643
644OcXO
645.baO
646
647;!oplay_attack_either(a,b,c,a,c)
648
649
650Pattern Barrier41b
651
652O.XO
653.,,.
654
655:8,D
656
657OcXe
658.bad
659
660;oplay_defend_both(a,b,c,d,a,e)
661
662
663Pattern Barrier42
664
665OX?
666.,O
667
668:8,D
669
670cD?
671baO
672
673;oplay_attack_either(a,b,b,D) || oplay_defend_both(a,b,a,c)
674
675
676Pattern Barrier43
677
678?X..O
679oO,,o
680o..,o
681-----
682
683:8,D
684
685
686Pattern Barrier44
687
688?X.O
689O,,.
690..,o
691----
692
693:8,D
694
695?EbO
696Oacd
697..,o
698----
699
700;oplay_attack_either(a,b,c,d,d,b) && !oplay_defend_both(a,c,b,c,E)
701
702
703Pattern Barrier45
704
705X.XX
706X,,.
707.,,.
708----
709
710:8,A
711
712
713Pattern Barrier46
714
715.X.O
716O..,
717.,,o
718
719:8,D
720
721
722Pattern Barrier47
723
724ooOoOoo
725oo,,,oo
726oo,,,oo
727oo,,,oo
728-------
729
730:|,D
731
732
733Pattern Barrier48
734
735xxxxxxx
736xxXxXxx
737xx,,,xx
738xx,,,xx
739xx,,,xx
740-------
741
742:|,A
743
744
745Pattern Barrier49
746
747O.?
748,,.
749.,O
750
751:/,D
752
753
754Pattern Barrier50
755
756O??
757,,?
758.,O
759
760:/,D
761
762
763Pattern Barrier51
764
765o.??
766O,,O
767
768:8,D
769
770
771Pattern Barrier52
772
773o.O.?
774o,X..
775.,...
776-----
777
778:8,sD
779
780o.b.?
781oaX..
782.,...
783-----
784
785;!oplay_attack(a,b)
786
787
788Pattern Barrier53
789
790?O?
791OXO
792.,x
793---
794
795:8,sD
796
797
798Pattern Barrier54
799
800xx.xx
801xXOXx
802x,,,x
803.....
804-----
805
806:|,A
807
808xx.xx
809xXOXx
810x,a,x
811.....
812-----
813
814;oplay_attack(a,a)
815
816
817Pattern Barrier55
818
819OX.O
820.,,.
821
822:8,sD
823
824bA.c
825.,,.
826
827;lib(A)<=3 && lib(b)>=3 && lib(c)>=3
828
829
830Pattern Barrier56
831# ab generalized (3.5.5)
832
833xXOo
834xOX,
835.x.,
836----
837
838:8,sD
839
840xXbo
841xOXa
842.x.,
843----
844
845;!oplay_attack(a,b)
846
847
848Pattern Barrier56b
849
850xXOo
851XO.,
852.X.,
853----
854
855:8,sD
856
857xXOo
858XOa,
859.X.,
860----
861
862;safe_omove(a)
863
864
865Pattern Barrier57
866
867X,
868O?
869
870:8,sD
871
872A,
873O?
874
875;lib(A)==1
876
877
878Pattern Barrier58
879
880o,o
881OXO
882
883:8,sD
884
885o,o
886bAc
887
888;lib(A)<=2 && lib(b)>1 && lib(c)>1
889
890
891Pattern Barrier59
892
893,.
894XO
895
896:8,sD
897
898ab
899XO
900
901;oplay_attack(a,b,b)
902
903
904Pattern Barrier60a
905
906.X.
907...
908.!.
909.!.
910---
911
912:|,XA
913
914
915Pattern Barrier60b
916
917.O.
918.,.
919.!.
920.!.
921---
922
923:|,OD
924
925
926Pattern Barrier61
927
928|oooooo
929|!!...o
930|...O.o
931|..X..o
932|....!o
933|....!o
934+------
935
936:/,D
937
938
939Pattern Barrier62
940
941?xX?
942...O
943.!..
944
945:8,OXD
946
947
948Pattern Barrier63
949# gf New pattern. (3.3.10)
950
951oX..
952O,..
953.,,.
954....
955----
956
957:8,D
958
959
960Pattern Barrier64
961# gf New pattern. (3.3.10)
962
963oX..
964O,,.
965..,,
966....
967----
968
969:8,D
970
971oXc.
972Oab.
973..,,
974....
975----
976
977;!oplay_attack(a,b,c,c)
978
979
980Pattern Barrier65
981# ab New (3.3.10)
982
983?O.
984X,.
985x,.
986---
987
988:8,OD
989
990?O.
991Ca.
992xb.
993---
994
995;oplay_attack(a,b,C)
996
997
998Pattern Barrier66
999# gf New pattern. (3.3.13)
1000
1001|..X...
1002|......
1003|..XO..
1004|..,,..
1005|..,...
1006|......
1007+------
1008
1009:8,D
1010
1011
1012Pattern Barrier67
1013# gf New pattern. (3.5.3)
1014
1015....O
1016O,,,.
1017.....
1018.....
1019-----
1020
1021:8,D
1022
1023
1024#########################################################
1025# #
1026# Intrusion patterns (secondary influence sources) #
1027# #
1028#########################################################
1029
1030
1031Pattern Intrusion1
1032
1033???x
1034...X
1035!!.Q
1036----
1037
1038:8,B,value(30)
1039
1040???x
1041..cX
1042!!ba
1043----
1044
1045>return (lib(a)>2 || (lib(a) == 2 && connect_and_cut_helper(a,b,c)));
1046
1047
1048Pattern Intrusion1a
1049
1050|??x
1051|!!X
1052|..Q
1053+---
1054
1055:8,B,value(30)
1056
1057|??x
1058|.cX
1059|.ba
1060+---
1061
1062;safe_omove(c)
1063>return (lib(a)>2 || (lib(a) == 2 && connect_and_cut_helper(a,b,c)));
1064
1065
1066Pattern Intrusion1b
1067
1068xxxx
1069X..X
1070..!Q
1071----
1072
1073:8,B,value(30)
1074
1075xxxx
1076X.cX
1077..ba
1078----
1079
1080>return (lib(a)>2 || (lib(a) == 2 && connect_and_cut_helper(a,b,c)));
1081
1082
1083Pattern Intrusion1c
1084
1085xxxx
1086X..X
1087.!.Q
1088----
1089
1090:8,B,value(30)
1091
1092xxxx
1093X.dX
1094.acb
1095----
1096
1097;safe_omove(a)
1098>return (lib(b)>2 || (lib(b) == 2 && connect_and_cut_helper(b,c,d)));
1099
1100
1101Pattern Intrusion1d
1102# ab New pattern (3.1.24).
1103
1104xxxx
1105!!.X
1106...Q
1107----
1108
1109:8,B,value(30)
1110
1111xxxx
1112a!cX
1113..bQ
1114----
1115
1116;!oplay_defend(a,b,c,b)
1117
1118
1119Pattern Intrusion2
1120
1121xXx?
1122...Q
1123!!..
1124----
1125
1126:8,B,value(30)
1127
1128xXx?
1129..bd
1130a!c.
1131----
1132
1133;!oplay_attack(a,b,c,d)
1134>return (!xplay_attack(b,d));
1135
1136
1137Pattern Intrusion3
1138# ab 3.1.22 Constraint added (see 13x13:52)
1139
1140xxX?
1141...Q
1142!!..
1143----
1144
1145:8,B,value(30)
1146
1147xxX?
1148..bd
1149a!c.
1150----
1151
1152;!oplay_attack(a,b,c,d)
1153>return (!xplay_attack(b,d));
1154
1155
1156Pattern Intrusion4
1157
1158XQOX
1159!!X.
1160!...
1161----
1162
1163:8,B,value(30)
1164
1165XdOX
1166baC.
1167!...
1168----
1169
1170;oplay_attack(a,b,C)
1171>return (!xplay_attack(a,d));
1172
1173
1174Pattern Intrusion5a
1175
1176X.QX
1177.!X.
1178.!..
1179----
1180
1181:8,B,value(30)
1182
1183XbdX
1184.aC.
1185.!..
1186----
1187
1188;oplay_attack(a,b,C)
1189>return (!xplay_attack(b,d));
1190
1191
1192Pattern Intrusion5b
1193
1194.QX
1195!X.
1196
1197:8,B,value(30)
1198
1199bfE
1200aDc
1201
1202;!oplay_defend_both(a,b,c,D,E)
1203>return (!xplay_attack(b,f));
1204
1205
1206Pattern Intrusion6
1207
1208?QX
1209X!!
1210x..
1211
1212:8,B,value(30)
1213
1214?aX
1215Xb!
1216x..
1217
1218>return (!xplay_attack(b,a));
1219
1220
1221# Pattern Intrusion7a
1222#
1223# QX.
1224# .!!
1225# X.x
1226#
1227# :8,BW,value(30)
1228#
1229# cA.
1230# b!!
1231# X.x
1232#
1233# ;lib(A)==2
1234# >return (!xplay_attack(b,c));
1235#
1236
1237Pattern Intrusion7b
1238
1239QX
1240!!
1241
1242:8,B,value(30)
1243
1244cC
1245ba
1246
1247;oplay_attack_either(a,b,C,b);
1248>return (!xplay_attack(b,c));
1249
1250
1251Pattern Intrusion8a
1252# ab 3.1.22 revised constraint (see territory valuation in 13x13:2)
1253
1254X.X
1255Q!!
1256?X.
1257
1258:8,B,value(30)
1259
1260B.X
1261ca!
1262?X.
1263
1264;oplay_attack(a,B) && !attack(B)
1265>return (!xplay_attack(a,c));
1266
1267
1268Pattern Intrusion8b
1269# ab New (3.3.18)
1270
1271?X
1272Q!
1273X!
1274
1275:8,B,value(30)
1276
1277?B
1278ca
1279X!
1280
1281;oplay_attack(a,B) && !attack(B)
1282>return (!xplay_attack(a,c));
1283
1284
1285Pattern Intrusion9
1286
1287X.
1288QX
1289.!
1290
1291:8,B,value(30)
1292
1293X.
1294QC
1295ba
1296
1297;oplay_attack(a,b,C)
1298
1299
1300Pattern Intrusion10
1301# ab Modified action constraint. (3.3.20)
1302
1303xxx??
1304..XO?
1305!!.Q?
1306-----
1307
1308:8,B,value(30)
1309
1310xxxef
1311..COg
1312!badh
1313-----
1314
1315;oplay_attack_either(a,b,b,C)
1316>return (!xplay_attack(a,d) && o_somewhere(g,e,f,h));
1317
1318
1319Pattern Intrusion11
1320# O can intrude on either side. The position of the influence source
1321# here isn't entirely accurate.
1322
1323.Q.
1324.X.
1325.!.
1326...
1327---
1328
1329:|,B,value(30)
1330
1331dQb
1332cXa
1333.!.
1334...
1335---
1336
1337;oplay_attack(a,b,b) && oplay_attack(c,d,d)
1338
1339
1340Pattern Intrusion12a
1341# O can intrude on either side. The position of the influence source
1342# here isn't entirely accurate.
1343
1344!Q!
1345!X!
1346...
1347...
1348---
1349
1350:|,B,value(30)
1351
1352dQb
1353cXa
1354...
1355...
1356---
1357
1358;oplay_attack(a,b,b) || oplay_attack(c,d,d)
1359
1360
1361Pattern Intrusion12b
1362
1363oQo
1364.X!
1365...
1366
1367:8,OB,value(30)
1368
1369odb
1370.Ca
1371...
1372
1373;o_somewhere(b) || oplay_attack_either(a,b,b,C)
1374>return (!xplay_attack(b,d));
1375
1376
1377Pattern Intrusion13
1378
1379?OoQ?
1380X.!X.
1381X.!..
1382.....
1383-----
1384
1385:8,B,value(30)
1386
1387?boa?
1388X.!X.
1389X.!..
1390.....
1391-----
1392
1393;lib(a)>=2 && lib(b)>=2
1394
1395
1396Pattern Intrusion14
1397
1398?QO?
1399X!X.
1400.!..
1401.!..
1402----
1403
1404:8,B,value(30)
1405
1406?QO?
1407XaXd
1408.bc.
1409.!..
1410----
1411
1412;oplay_attack_either(a,b,c,d,b,d)
1413
1414
1415Pattern Intrusion15
1416
1417oQo
1418.XO
1419!.X
1420
1421:8,B,value(30)
1422
1423oeo
1424aXd
1425cbX
1426
1427;!oplay_attack(a,b,c,a)
1428>return (lib(d)>2 && lib(e)>2 && !xplay_attack(a,e));
1429
1430
1431Pattern Intrusion16
1432# ab value decreased (3.1.24)
1433
1434Q!.
1435!!.
1436.xX
1437
1438:8,B,value(20)
1439
1440
1441Pattern Intrusion17
1442# ab value decreased (3.1.24)
1443
1444Q!.
1445.!.
1446XxX
1447
1448:8,B,value(20)
1449
1450
1451Pattern Intrusion18
1452
1453xXx
1454o..
1455Q!!
1456o..
1457xXx
1458
1459:8,B,value(30)
1460
1461
1462Pattern Intrusion19
1463
1464X..
1465Q!.
1466o..
1467xXx
1468
1469:8,B,value(30)
1470
1471X..
1472ba.
1473o..
1474xXx
1475
1476>return (!xplay_attack(a,b));
1477
1478
1479Pattern Intrusion20
1480
1481oQ!
1482OX!
1483
1484:8,B,value(30)
1485
1486edc
1487fAb
1488
1489;lib(A)==2 && !oplay_attack(b,b)
1490>return (!xplay_attack(c,d) && xplay_defend_both(e,d,f));
1491
1492
1493Pattern Intrusion21
1494
1495Q.X
1496.!.
1497x..
1498
1499:8,B,value(30)
1500
1501b.X
1502a!.
1503x..
1504
1505>return (!xplay_attack(a,b));
1506
1507
1508Pattern Intrusion21b
1509
1510ooX
1511Q!.
1512x..
1513
1514:8,B,value(30)
1515
1516ooX
1517ba.
1518x..
1519
1520>return (!xplay_attack(a,b));
1521
1522
1523Pattern Intrusion22
1524
1525Q.X
1526...
1527.!.
1528
1529:8,B,value(10)
1530
1531b.X
1532a..
1533.!.
1534
1535>return (!xplay_attack(a,b));
1536
1537
1538Pattern Intrusion23
1539
1540Q..
1541.!!
1542---
1543
1544:8,B,value(10)
1545
1546eb.
1547dca
1548---
1549
1550;oplay_attack_either(a,b,c,d,b,d)
1551>return (!xplay_attack(b,e));
1552
1553
1554Pattern Intrusion24
1555
1556O..
1557Q!!
1558---
1559
1560:8,B,value(30)
1561
1562ba.
1563Q!!
1564---
1565
1566>return (!xplay_attack(a,b));
1567
1568
1569Pattern Intrusion25
1570
1571!!.O
1572!XQ.
1573....
1574....
1575----
1576
1577:8,B,value(30)
1578
1579
1580Pattern Intrusion26
1581
1582!!.O
1583.XQ.
1584..X!
1585....
1586----
1587
1588:8,B,value(30)
1589
1590
1591Pattern Intrusion27
1592
1593Q..
1594.!.
1595.!.
1596...
1597
1598:8,B,value(30)
1599
1600
1601Pattern Intrusion28
1602
1603??Q?
1604x.!X
1605..!.
1606....
1607----
1608
1609:8,B,value(30)
1610
1611??Q?
1612xdaX
1613.cb.
1614....
1615----
1616
1617;oplay_attack_either(a,b,c,d,b,d)
1618
1619
1620Pattern Intrusion29
1621
1622oooo
1623oooo
1624.Q.o
1625....
1626.!!.
1627.!..
1628
1629:8,B,value(30)
1630
1631
1632Pattern Intrusion30
1633
1634oooo
1635oooo
1636XQ.o
1637....
1638.!!.
1639.!..
1640
1641:8,B,value(30)
1642
1643oooo
1644oooo
1645XQfo
1646dbc.
1647.ae.
1648.!..
1649
1650;oplay_attack(a,b,c,d,e,f,f)
1651
1652
1653Pattern Intrusion30a
1654
1655????
1656????
1657oQoo
1658...X
1659.!..
1660????
1661
1662:8,B,value(30)
1663
1664????
1665????
1666ocoo
1667.b.X
1668.a..
1669????
1670
1671;oplay_connect(a,b,a,c)
1672>return (!xplay_attack(b,c))
1673
1674
1675Pattern Intrusion31
1676
1677ooo
1678XQ.
1679.!!
1680.!.
1681?.?
1682
1683:8,B,value(30)
1684
1685ooo
1686Xb.
1687.a!
1688.!.
1689?.?
1690
1691>return (!xplay_attack(a,b));
1692
1693
1694Pattern Intrusion32
1695
1696ooo
1697XQ.
1698.!.
1699?.?
1700
1701:8,B,value(30)
1702
1703ooo
1704Xb.
1705.a.
1706?.?
1707
1708>return (!xplay_attack(a,b));
1709
1710
1711Pattern Intrusion33
1712
1713oOo
1714XQX
1715.!.
1716?.?
1717
1718:8,B,value(30)
1719
1720
1721Pattern Intrusion34
1722
1723o.o
1724XQX
1725.!.
1726?.?
1727
1728:8,B,value(30)
1729
1730obo
1731XQX
1732.a.
1733?.?
1734
1735;oplay_attack(a,b,b)
1736>return 0;
1737
1738
1739Pattern Intrusion35
1740
1741|..X??
1742|...Q?
1743|..X!X
1744|...!.
1745|...!.
1746+-----
1747
1748:8,B,value(30)
1749
1750|..X??
1751|.baQ?
1752|.fXcX
1753|..ed.
1754|...!.
1755+-----
1756
1757;oplay_attack(a,b,c,d,e,f,d)
1758
1759
1760Pattern Intrusion36
1761
1762?X
1763Q!
1764Xx
1765
1766:8,B,value(30)
1767
1768?X
1769ba
1770Xx
1771
1772;safe_omove(a)
1773>return (!xplay_attack(a,b));
1774
1775
1776Pattern Intrusion37
1777
1778?X
1779Q!
1780oX
1781
1782:8,B,value(30)
1783
1784?X
1785ba
1786oX
1787
1788;safe_omove(a)
1789> return (!xplay_attack(a,b));
1790
1791
1792Pattern Intrusion38
1793
1794X?
1795!Q
1796--
1797
1798:8,B,value(5)
1799
1800X?
1801ab
1802--
1803
1804;safe_omove(a)
1805> return (!xplay_attack(a,b));
1806
1807
1808Pattern Intrusion39
1809
1810?Xx
1811Q!.
1812o!X
1813
1814:8,B,value(30)
1815
1816?Xx
1817ba.
1818o!X
1819
1820;safe_omove(a)
1821>return (!xplay_attack(a,b));
1822
1823
1824Pattern Intrusion40
1825# gf Revised constraint. (3.3.10)
1826
1827X!
1828Q?
1829
1830:8,B,value(30)
1831
1832A!
1833Q?
1834
1835;lib(A)==1 && attack(A)
1836
1837
1838Pattern Intrusion41
1839
1840X!
1841Q!
1842
1843:8,B,value(30)
1844
1845A!
1846Q!
1847
1848;lib(A)==1
1849
1850
1851Pattern Intrusion42
1852
1853?Ooo
1854.XQo
1855.!X.
1856....
1857----
1858
1859:8,B,value(30)
1860
1861?Oeo
1862bXQo
1863.aDc
1864....
1865----
1866
1867;(o_somewhere(e) || !safe_xmove(e)) && !oplay_defend(a,b,c,D)
1868
1869
1870Pattern Intrusion43
1871
1872??XO
1873..XQ
1874?!!o
1875
1876:8,B,value(50)
1877
1878??AO
1879.cAQ
1880?dbo
1881
1882;lib(A)==2 && !attack(A) && !oplay_attack(b,c,d,d)
1883
1884
1885Pattern Intrusion44a
1886# gf New pattern. (3.1.20)
1887
1888.XQ
1889!!o
1890
1891:8,B,value(30)
1892
1893cDf
1894bae
1895
1896;safe_omove(a)
1897;&& (o_somewhere(e) || oplay_attack(a,e,e))
1898;&& !oplay_defend_both(a,b,c,b,D)
1899>return (!xplay_attack(a,f) && (o_somewhere(e) || (!xplay_attack(e,f))));
1900
1901
1902Pattern Intrusion44b
1903# ab New pattern. (3.3.5)
1904
1905..X?
1906.XQo
1907!!o?
1908
1909:8,B,value(30)
1910
1911.dG?
1912eFho
1913cab?
1914
1915;safe_omove(a)
1916;&& (o_somewhere(b) || oplay_attack(a,b,b))
1917;&& !oplay_defend_both(a,c,d,e,F,G)
1918>return (!xplay_attack(a,h));
1919
1920
1921Pattern Intrusion45
1922# gf New pattern. (3.1.20)
1923
1924X.Qo
1925.!X.
1926....
1927----
1928
1929:8,B,value(30)
1930
1931XbQo
1932.aC.
1933....
1934----
1935
1936;safe_omove(a) && oplay_attack(a,b,C)
1937
1938
1939Pattern Intrusion46
1940# gf New pattern. (3.1.22)
1941# gf Fixed diagram inconsistency. (3.1.23)
1942# FIXME: This pattern exaggerates the intrusion since X can stop it
1943# on one of the sides, but we don't know which one he will
1944# choose. This may or may not be a problem in practice.
1945
1946x.Q.x
1947.!X!.
1948x...x
1949x...x
1950-----
1951
1952:|,B,value(10)
1953
1954x.dbx
1955.cXa.
1956x...x
1957x...x
1958-----
1959
1960;!oplay_attack(a,b,c,d)
1961
1962
1963Pattern Intrusion47
1964# gf New pattern. (3.1.23)
1965
1966??X.?
1967o..!.
1968Q....
1969-----
1970
1971:8,B,value(20)
1972
1973??X.?
1974o..!.
1975a....
1976-----
1977
1978;lib(a)>2
1979
1980
1981Pattern Intrusion48
1982# ab New pattern. (3.1.23)
1983# FIXME: This would need a constraint. The one below did not work.
1984# gf Revised. (3.5.3)
1985
1986?x.
1987...
1988Q.!
1989..X
1990
1991:8,B,value(20)
1992
1993# .x.
1994# fce
1995# Oba
1996# .dX
1997#
1998# ;oplay_attack(a,b,c,d,e,f,f)
1999
2000
2001Pattern Intrusion49
2002# ab added (3.1.24)
2003
2004XQX
2005.!!
2006
2007:8,B,value(30)
2008
2009bcX
2010.a!
2011
2012;oplay_attack(a,b) && ! attack(b)
2013>return (!xplay_attack(a,c));
2014
2015
2016Pattern Intrusion50
2017# ab added (3.1.25)
2018
2019?..
2020QX!
2021...
2022---
2023
2024:8,OB,value(30)
2025
2026?c.
2027dXa
2028.b.
2029---
2030
2031;!oplay_attack_either(a,b,c,c,d)
2032
2033
2034Pattern Intrusion51a
2035
2036?Q?
2037X.X
2038.!.
2039
2040:|,B,value(30)
2041
2042?e?
2043CaD
2044.b.
2045
2046;oplay_break_through(a,b,C,b,D)
2047>return(!xplay_attack(a,e));
2048
2049
2050Pattern Intrusion51b
2051# ab New pattern. (3.3.5)
2052# This is a bit incorrect, as usually X can choose on which side the
2053# intrusion is allowed to happen.
2054# Due to reading depth limitations, oplay_break_through == CUT is not
2055# sufficient (see nngs1:40).
2056# pp Revised constraint (3.5.1)
2057# Ko checks prevent 0.5 point "breaks through" with no further threat.
2058
2059?O?
2060XQX
2061!X!
2062
2063:|,BX,value(20)
2064
2065?O?
2066aQc
2067dbe
2068
2069; (oplay_break_through(a,b,c)==WIN
2070; && (!ko(a) || oplay_attack_either(d,b,c))
2071; && (!ko(c) || oplay_attack_either(e,b,a)))
2072
2073
2074Pattern Intrusion52
2075# gf New pattern. (3.3.3)
2076
2077X.x
2078Q!.
2079.X.
2080
2081:8,B,value(30)
2082
2083X.x
2084ba.
2085.X.
2086
2087>return (!xplay_attack(a,b));
2088
2089
2090Pattern Intrusion53
2091# gf New pattern. (3.3.3)
2092
2093X!.
2094QX!
2095
2096:8,B,value(50)
2097
2098Xa.
2099QB!
2100
2101;!oplay_defend(a,B)
2102
2103
2104Pattern Intrusion54
2105# ab New pattern (3.3.10)
2106# X cannot play double hane.
2107
2108..X?
2109.XQo
2110!.oo
2111
2112:8,B,value(40)
2113
2114.eG?
2115fXQb
2116!dac
2117
2118;(o_somewhere(a) || o_somewhere(b) || o_somewhere(c))
2119;&& (o_somewhere(a) || oplay_attack(d,a,a)) && oplay_attack(e,f,G)
2120
2121
2122Pattern Intrusion55
2123# gf New pattern (3.3.16)
2124
2125????
2126xxx?
2127.!.o
2128.!.Q
2129----
2130
2131:8,B,value(30)
2132
2133efg?
2134bcd?
2135...o
2136.a.Q
2137----
2138
2139;x_somewhere(b,c,d,e,f,g) && safe_omove(a)
2140
2141
2142Pattern Intrusion56
2143# gf New pattern (3.3.16)
2144
2145????
2146xxx?
2147!..o
2148!..Q
2149----
2150
2151:8,B,value(30)
2152
2153fgh?
2154cde?
2155a..o
2156...b
2157----
2158
2159;x_somewhere(c,d,e,f,g,h) && !oplay_disconnect(a,a,b)
2160
2161
2162Pattern Intrusion57
2163# gf New pattern (3.3.16)
2164
2165xX
2166!Q
2167X?
2168
2169:8,B,value(30)
2170
2171xX
2172ab
2173X?
2174
2175;safe_omove(a)
2176
2177>return !xplay_attack(a,b);
2178
2179
2180Pattern Intrusion58
2181# gf New pattern (3.3.17)
2182
2183XOoo
2184.XQo
2185..X!
2186?..!
2187
2188:8,B,value(30)
2189
2190Xgoo
2191bXfo
2192.aXc
2193?.de
2194
2195;!oplay_disconnect(f,g) && !oplay_disconnect(a,b,c,d,e,c,f)
2196
2197
2198Pattern Intrusion59
2199# New pattern (3.3.20)
2200# It is a little drastic, but see arend2:120 for where it is necessary.
2201
2202|x!xx
2203|.!.x
2204|.X.X
2205|XQO?
2206|.oo?
2207
2208:8,B,value(30)
2209
2210|x!xx
2211|.!.x
2212|.X.B
2213|AQO?
2214|.oo?
2215
2216;!attack(A) && oplay_disconnect(A,B) && !attack(B)
2217
2218
2219Pattern Intrusion60
2220#pp New pattern (3.5.1)
2221# gf FIXME: This pattern looks rather likely to introduce more
2222# problems than it solves. We may need to find some other
2223# solution to endgame:880. (3.5.7)
2224
2225OQ? this pattern should prevent attempts to cut bamboo joint
2226X.!
2227OO?
2228
2229:8,B,value(20)
2230
2231
2232Pattern Intrusion61
2233# gf New pattern. (3.5.2)
2234# This pattern is somewhat questionable. See arend:30 and 13x13:16 for
2235# positions where it helps.
2236
2237|..!?
2238|.X..
2239|.QXX
2240|.OO?
2241
2242:8,B,value(20)
2243
2244|.a!?
2245|bEc.
2246|.QDD
2247|.OO?
2248
2249;!oplay_connect(a,b,c,D,E)
2250
2251
2252Pattern Intrusion62
2253# gf New pattern. (3.5.3)
2254# See gifu03:206
2255
2256.Xo
2257.Q.
2258!XO
2259
2260:8,B,value(20)
2261
2262.Xo
2263bQa
2264cDO
2265
2266;oplay_attack(c,b,D)
2267>return !safe_xmove(a) && !oplay_defend_both(c,b,a,b,D);
2268
2269
2270Pattern Intrusion63
2271# gf New pattern. (3.7.10)
2272# Try to discourage unreasonable hane. See gunnar:85.
2273
2274.oOO?
2275.OX.X
2276.QX..
2277.X..!
2278-----
2279
2280:8,B,value(50)
2281
2282.oOO?
2283.OXcD
2284.QX..
2285aXb.!
2286-----
2287
2288;olib(a)>1 && !oplay_connect(a,b,c,b,D)
2289
2290
2291#########################################################
2292# #
2293# Nonterritory patterns #
2294# #
2295#########################################################
2296
2297
2298Pattern Nonterritory1
2299# gf Revised constraint. (3.3.10)
2300
2301OxO
2302XoX
2303
2304:|,t
2305
2306OaO
2307XbX
2308
2309>if (!false_eye_territory(a)) non_oterritory(a);
2310>if (!false_eye_territory(b)) non_xterritory(b);
2311
2312
2313Pattern Nonterritory1b
2314# gf Revised constraint. (3.3.10)
2315# gf Revised constraint. (3.3.17)
2316
2317Ox.
2318XoX
2319
2320:8,t
2321
2322Oxb
2323XaX
2324
2325>if ((halfeye(a) || false_eye(a)) && safe_omove(b)
2326> && !false_eye_territory(a)) non_xterritory(a);
2327
2328
2329Pattern Nonterritory1c
2330# gf Revised constraint. (3.3.10)
2331
2332Xo.
2333OxO
2334
2335:8,t
2336
2337Xo.
2338OaO
2339
2340>if (false_eye(a)
2341> && !false_eye_territory(a)) non_oterritory(a);
2342
2343
2344Pattern Nonterritory2
2345# gf Revised constraint. (3.3.10)
2346
2347?xO
2348x.X
2349Ox?
2350
2351:8,t
2352
2353?xO
2354xaX
2355Ox?
2356
2357>if (!false_eye_territory(a)) non_xterritory(a);
2358
2359
2360Pattern Nonterritory3
2361# gf Revised constraint. (3.3.10)
2362
2363?oX
2364o.O
2365Xo?
2366
2367:8,t
2368
2369?oX
2370oaO
2371Xo?
2372
2373>if (!false_eye_territory(a)) non_oterritory(a);
2374
2375
2376Pattern Nonterritory4
2377# gf Revised constraint. (3.3.10)
2378
2379|xO
2380|oX
2381
2382:8,t
2383
2384|aO
2385|bX
2386
2387>if (!false_eye_territory(a)) non_oterritory(a);
2388>if (!false_eye_territory(b)) non_xterritory(b);
2389
2390
2391Pattern Nonterritory5
2392
2393|?O
2394|..
2395|xX
2396
2397:8,t
2398
2399|?O
2400|ab
2401|xX
2402
2403>non_xterritory(a);
2404>non_xterritory(b);
2405
2406
2407Pattern Nonterritory6
2408
2409|?X
2410|..
2411|oO
2412
2413:8,t
2414
2415|?X
2416|ab
2417|oO
2418
2419>non_oterritory(a);
2420>non_oterritory(b);
2421
2422
2423Pattern Nonterritory7
2424
2425.X?
2426..O
2427---
2428
2429:8,t
2430
2431.X?
2432baO
2433---
2434
2435;safe_omove(a)
2436
2437>non_xterritory(a);
2438>non_xterritory(b);
2439
2440
2441Pattern Nonterritory7b
2442# gf The old constraint was no good, as can be seen in nngs1:40. After
2443# black R6 this pattern declared S5 non-territory. (3.1.30)
2444
2445.X?
2446..O
2447---
2448
2449:8,t
2450
2451cX?
2452baO
2453---
2454
2455;safe_omove(a) && oplay_attack(a,b,c,a) && connect_and_cut_helper2(a,b,c)
2456
2457>non_xterritory(c);
2458
2459
2460Pattern Nonterritory7c
2461
2462..X?
2463...O
2464----
2465
2466:8,t
2467
2468.cD?
2469ebaO
2470----
2471
2472;!oplay_defend_both(a,b,c,b,D)
2473
2474>non_xterritory(b);
2475>non_xterritory(c);
2476>non_xterritory(e);
2477
2478
2479Pattern Nonterritory8
2480
2481xXO
2482..o
2483---
2484
2485:8,t
2486
2487xXO
2488bao
2489---
2490
2491;safe_omove(a)
2492
2493>non_xterritory(a);
2494>non_xterritory(b);
2495
2496
2497Pattern Nonterritory8b
2498# gf New pattern. (3.3.7)
2499
2500.XO
2501...
2502---
2503
2504:8,t
2505
2506dEO
2507bac
2508---
2509
2510;safe_omove(a) && !oplay_defend_both(a,b,c,?,d,b,E)
2511
2512>non_xterritory(d);
2513
2514
2515Pattern Nonterritory9
2516
2517...X
2518X..?
2519?oO?
2520
2521:8,t
2522
2523.cbX
2524X.a?
2525?oO?
2526
2527;safe_omove(a)
2528
2529>non_xterritory(b);
2530>non_xterritory(c);
2531
2532
2533Pattern Nonterritory10
2534
2535..x
2536...
2537XOX
2538
2539:8,t
2540
2541edx
2542cab
2543XOX
2544
2545;safe_omove(a)
2546
2547>non_xterritory(b);
2548>non_xterritory(c);
2549>non_xterritory(d);
2550>non_xterritory(e);
2551
2552
2553Pattern Nonterritory11
2554
2555oOX
2556OX.
2557.X.
2558---
2559
2560:8,t
2561
2562oOX
2563OBc
2564aB.
2565---
2566
2567;safe_omove(a) && oplay_attack(a,B)
2568
2569>non_xterritory(c);
2570
2571
2572Pattern Nonterritory12
2573
2574.?
2575O.
2576
2577:/,t
2578
2579bc
2580Oa
2581
2582>non_xterritory(a);
2583>non_xterritory(b);
2584>non_xterritory(c);
2585
2586
2587Pattern Nonterritory13
2588
2589.?
2590X.
2591
2592:/,t
2593
2594a?
2595Xb
2596
2597>non_oterritory(a);
2598>non_oterritory(b);
2599
2600
2601Pattern Nonterritory14
2602
2603.?
2604..
2605OX
2606
2607:8,t
2608
2609c?
2610ab
2611OX
2612
2613;safe_omove(a)
2614
2615>non_xterritory(a);
2616>non_xterritory(b);
2617>non_xterritory(c);
2618
2619
2620Pattern Nonterritory15
2621
2622|.?
2623|..
2624|..
2625|OX
2626
2627:8,t
2628
2629|ef
2630|cd
2631|ab
2632|OX
2633
2634;safe_omove(a)
2635
2636>non_xterritory(a);
2637>non_xterritory(b);
2638>non_xterritory(c);
2639>non_xterritory(d);
2640>non_xterritory(e);
2641>non_xterritory(f);
2642
2643
2644Pattern Nonterritory16
2645
2646|.?
2647|.X
2648|..
2649|OX
2650
2651:8,t
2652
2653|e?
2654|cd
2655|ab
2656|OX
2657
2658;safe_omove(a)
2659
2660>non_xterritory(a);
2661>non_xterritory(b);
2662>non_xterritory(c);
2663>non_xterritory(d);
2664>non_xterritory(e);
2665
2666
2667Pattern Nonterritory17
2668
2669|..
2670|XO
2671|.X
2672
2673:8,t
2674
2675|ac
2676|Xd
2677|bX
2678
2679;!oplay_defend_both(a,b,?,c,a,d)
2680
2681>non_oterritory(a);
2682>non_oterritory(c);
2683
2684
2685Pattern Nonterritory17b
2686# gf New pattern. (3.3.7)
2687
2688|O.
2689|XO
2690
2691:8,t
2692
2693|ba
2694|Xc
2695
2696;!xplay_defend_both(a,b,c)
2697
2698>non_oterritory(a);
2699
2700
2701Pattern Nonterritory18a
2702
2703.XOo
2704..xO
2705----
2706
2707:8,t
2708
2709dEOo
2710bacO
2711----
2712
2713;!oplay_defend_both(a,b,c,?,d,b,E)
2714
2715>non_xterritory(a);
2716>non_xterritory(b);
2717>non_xterritory(d);
2718
2719
2720Pattern Nonterritory18b
2721
2722..XOo
2723...xO
2724-----
2725
2726:8,t
2727
2728fbXOo
2729dcaeO
2730-----
2731
2732;!oplay_defend_both(a,b,c,d,e,?,f,d,b)
2733
2734>non_xterritory(a);
2735>non_xterritory(b);
2736>non_xterritory(c);
2737>non_xterritory(d);
2738>non_xterritory(f);
2739
2740
2741Pattern Nonterritory19
2742# gf New pattern. (3.1.18)
2743
2744.?
2745*X
2746.O
2747
2748:8,t
2749
2750b?
2751*X
2752aO
2753
2754;oplay_attack(*,a,a) && safe_omove(*)
2755
2756>non_xterritory(*);
2757>non_xterritory(b);
2758
2759
2760Pattern Nonterritory20
2761# gf New pattern. (3.1.18)
2762
2763*X
2764.O
2765
2766:8,t
2767
2768*X
2769ab
2770
2771;attack(b) && oplay_attack(*,b)
2772
2773>non_oterritory(a);
2774
2775
2776Pattern Nonterritory21
2777
2778..
2779.X
2780O?
2781
2782:8,t
2783
2784cb
2785aX
2786O?
2787
2788;!oplay_attack(a,b,b) && !oplay_attack(b,a,a)
2789
2790>non_oterritory(a);
2791>non_oterritory(b);
2792>non_oterritory(c);
2793
2794
2795Pattern Nonterritory22
2796
2797.?
2798*X
2799O?
2800
2801:8,t
2802
2803a?
2804*X
2805O?
2806
2807;safe_omove(*)
2808
2809>non_xterritory(*);
2810>non_xterritory(a);
2811
2812
2813Pattern Nonterritory23
2814# tm New Pattern (3.1.20)
2815
2816O.
2817
2818:-,t
2819
2820Oa
2821
2822>non_xterritory(a);
2823
2824
2825Pattern Nonterritory24
2826# tm New Pattern (3.1.20)
2827
2828X.
2829
2830:-,t
2831
2832Xa
2833
2834>non_oterritory(a);
2835
2836
2837Pattern Nonterritory25
2838# gf New pattern. (3.1.20)
2839
2840|XO
2841|..
2842
2843:8,t
2844
2845|AO
2846|bc
2847
2848;lib(A)==2 && connect_and_cut_helper(A,b,c)
2849
2850>non_oterritory(b);
2851>non_oterritory(c);
2852
2853
2854Pattern Nonterritory26
2855# gf New pattern. (3.1.20)
2856
2857?.X
2858OX.
2859?OX
2860
2861:8,t
2862
2863?aX
2864OXb
2865?OX
2866
2867;safe_omove(a)
2868
2869>non_xterritory(b);
2870
2871
2872Pattern Nonterritory27
2873# gf New Pattern (3.1.22)
2874
2875O..
2876
2877:-,t
2878
2879Oab
2880
2881;safe_omove(a)
2882
2883>non_xterritory(b);
2884
2885
2886Pattern Nonterritory28
2887# gf New Pattern (3.1.22)
2888
2889O.
2890x.
2891
2892:8,t
2893
2894Oa
2895xb
2896
2897;safe_omove(a)
2898
2899>non_xterritory(b);
2900
2901
2902Pattern Nonterritory29
2903# gf New pattern. (3.1.23)
2904
2905?OO.
2906X...
2907----
2908
2909:8,t
2910
2911?OOc
2912Xab.
2913----
2914
2915;!safe_omove(a) && oplay_attack(b,a,b)
2916
2917>non_oterritory(b);
2918>non_oterritory(c);
2919
2920
2921Pattern Nonterritory30
2922# gf New pattern. (3.1.23)
2923
2924?XX.
2925O...
2926----
2927
2928:8,t
2929
2930?EEd
2931Oabc
2932----
2933
2934;oplay_attack(a,b,b) && !oplay_attack(a,c,b,b) && oplay_attack(a,c,b,E)
2935
2936>non_xterritory(c);
2937>non_xterritory(d);
2938
2939
2940Pattern Nonterritory31
2941# gf New pattern. (3.1.23)
2942
2943?XXX.
2944O....
2945-----
2946
2947:8,t
2948
2949?XXXd
2950Oabc.
2951-----
2952
2953;oplay_attack(a,b,b) && oplay_attack(a,c,b,c)
2954
2955>non_xterritory(c);
2956>non_xterritory(d);
2957
2958
2959Pattern Nonterritory32
2960# gf New pattern. (3.1.23)
2961# gf This pattern is somewhat problematic. O can often block at d to
2962# secure e or block at b to secure c. The real point of the pattern
2963# is that O can't secure both, but there's no way to express this
2964# accurately. See gunnar:15 for a position where this pattern is
2965# bad. (3.3.17)
2966
2967..O
2968...
2969X..
2970
2971:/,t
2972
2973e.O
2974da.
2975Xbc
2976
2977;!oplay_attack(a,b,c,d,e,d)
2978
2979>non_oterritory(a);
2980>non_oterritory(c);
2981>non_oterritory(e);
2982
2983
2984Pattern Nonterritory33
2985# gf New pattern. (3.1.30)
2986
2987X.O
2988...
2989..X
2990
2991:/,t
2992
2993X.O
2994ca.
2995dbX
2996
2997;!oplay_attack(a,b,c,a) && !oplay_attack(a,c,b,a)
2998
2999>non_xterritory(b);
3000>non_xterritory(c);
3001>non_xterritory(d);
3002
3003
3004Pattern Nonterritory34
3005# gf New pattern. (3.1.30)
3006
3007x.O
3008.XO
3009.xO
3010---
3011
3012:8,t
3013
3014xaO
3015cXO
3016.bO
3017---
3018
3019;safe_omove(a)
3020;&& ((x_somewhere(b) && oplay_attack(a,b))
3021; || (!x_somewhere(b) && oplay_attack(a,b,b)))
3022
3023>non_xterritory(c);
3024
3025
3026Pattern Nonterritory35
3027# gf New pattern. (3.3.4)
3028
3029..O
3030..X
3031
3032:8,t
3033
3034caO
3035dbX
3036
3037;!oplay_attack(a,b,c,a) && !oplay_attack(a,c,b,a)
3038
3039>non_xterritory(b);
3040>non_xterritory(c);
3041>non_xterritory(d);
3042
3043
3044Pattern Nonterritory36
3045# gf New pattern. (3.3.7)
3046# gf Revised constraint. (3.3.10)
3047
3048OX?
3049.OX
3050.o?
3051---
3052
3053:8,t
3054
3055OX?
3056baX
3057.o?
3058---
3059
3060;lib(a)==2 && attack(a)
3061
3062>non_oterritory(b);
3063
3064
3065Pattern Nonterritory37
3066# gf New pattern. (3.3.10)
3067# See trevorb:270.
3068
3069X.?
3070.XO
3071.x?
3072---
3073
3074:8,t
3075
3076Xa?
3077cBO
3078.x?
3079---
3080
3081;lib(B)==3 && safe_omove(a) && oplay_attack(a,B)
3082
3083>non_xterritory(c);
3084
3085
3086Pattern Nonterritory38
3087# gf New pattern. (3.3.10)
3088# See trevorc:930.
3089
3090OX?
3091.OX
3092..O
3093
3094:8,t
3095
3096OX?
3097.cX
3098.ab
3099
3100;!xplay_defend_both(a,b,c)
3101
3102>non_oterritory(a);
3103
3104
3105Pattern Nonterritory39
3106# gf New pattern. (3.3.10)
3107# See trevorc:930.
3108
3109X.O
3110.XO
3111..X
3112
3113:8,t
3114
3115XaO
3116.DO
3117.bC
3118
3119;!oplay_defend_both(a,?,b,C,D)
3120
3121>non_xterritory(b);
3122
3123
3124Pattern Nonterritory40
3125# gf New pattern. (3.3.10)
3126
3127oX.
3128OX.
3129...
3130...
3131---
3132
3133:8,t
3134
3135oX.
3136OXc
3137dab
3138.e.
3139---
3140
3141;!oplay_defend(a,b,c,d,a)
3142
3143>non_oterritory(d);
3144>non_oterritory(e);
3145
3146
3147Pattern Nonterritory41
3148# gf New pattern. (3.3.13)
3149
3150?oOo
3151X..O
3152..X?
3153
3154:8,t
3155
3156?oOo
3157XabO
3158.cX?
3159
3160;oplay_attack(a,b,b)
3161
3162>non_xterritory(c);
3163
3164
3165Pattern Nonterritory42
3166# gf New pattern. (3.3.15)
3167
3168OX
3169.O
3170
3171:8,t
3172
3173bX
3174ac
3175
3176;!xplay_defend_both(a,b,c) && !adjacent_to_defendable_stone_in_atari(b)
3177;&& !adjacent_to_defendable_stone_in_atari(c)
3178
3179>non_oterritory(a);
3180
3181
3182Pattern Nonterritory43
3183# gf New pattern. (3.3.15)
3184
3185oOXx
3186O..X
3187oO.X
3188
3189:8,t
3190
3191oODx
3192OabX
3193oOcX
3194
3195;!oplay_attack(b,D) && !oplay_attack(b,c,c)
3196
3197>non_oterritory(a);
3198
3199
3200Pattern Nonterritory44
3201# gf New pattern. (3.3.15)
3202
3203OXXx?
3204.OOXx
3205.....
3206-----
3207
3208:8,t
3209
3210OXXx?
3211eccXx
3212..abd
3213-----
3214
3215;oplay_attack(a,b,c) && !oplay_attack(b,d,d)
3216
3217>non_oterritory(e);
3218
3219
3220Pattern Nonterritory45
3221# gf New pattern. (3.3.16)
3222
3223O.X
3224?X.
3225
3226:8,t
3227
3228OaX
3229?Cb
3230
3231;lib(C)==2 && safe_omove(a) && oplay_attack(a,C) && !oplay_attack(a,b,a)
3232
3233>non_xterritory(b);
3234
3235
3236Pattern Nonterritory46
3237# gf New pattern. (3.3.17)
3238
3239??X?
3240O...
3241X...
3242?.X?
3243
3244:8,t
3245
3246??X?
3247Oab.
3248Xcef
3249?dX?
3250
3251;oplay_defend(a,b,c,d,e,f,a)
3252
3253>non_xterritory(b);
3254>non_xterritory(c);
3255>non_xterritory(d);
3256>non_xterritory(e);
3257>non_xterritory(f);
3258
3259
3260Pattern Nonterritory47
3261# gf New pattern. (3.3.17)
3262
3263?ooo?
3264X...X
3265
3266:|,t
3267
3268?ooo?
3269CaebD
3270
3271;!oplay_attack(a,C) && !oplay_attack(b,D)
3272
3273>non_oterritory(e);
3274
3275
3276Pattern Nonterritory48
3277# gf New pattern. (3.5.3)
3278# See gifu03:507.
3279
3280?.?
3281O..
3282?XO
3283
3284:8,t
3285
3286?d?
3287Oab
3288?Xc
3289
3290;!oplay_defend_both(a,b,a,c)
3291
3292>non_oterritory(b);
3293>non_oterritory(d);
3294
3295
3296Pattern Nonterritory49
3297# gf New pattern. (3.5.3)
3298# See gifu03:205.
3299
3300?O?
3301..X
3302..?
3303
3304:8,t
3305
3306?O?
3307baX
3308dc?
3309
3310;!oplay_attack(a,b,c,a) && !oplay_attack(a,c,b,a)
3311
3312>non_xterritory(d);
3313
3314
3315Pattern Nonterritory50
3316# gf New pattern. (3.5.3)
3317# See gifu03:205.
3318
3319??O
3320X..
3321?..
3322
3323:8,t
3324
3325??O
3326Xba
3327?dc
3328
3329;!oplay_attack(a,b,c,a) && !oplay_attack(a,c,b,a)
3330
3331>non_xterritory(d);
3332
3333
3334Pattern Nonterritory51
3335# gf New pattern. (3.5.3)
3336# See gifu03:206.
3337
3338.Ox
3339.X.
3340.OX
3341
3342:8,t
3343
3344.Ox
3345bXa
3346cdX
3347
3348;!safe_omove(a) && !oplay_defend_both(b,a,?,c,b,d)
3349
3350>non_oterritory(c);
3351
3352
3353Pattern Nonterritory52
3354# gf New pattern. (3.5.3)
3355# See blunder:17.
3356
3357O??
3358.XO
3359?.?
3360
3361:8,t
3362
3363O??
3364aCb
3365?d?
3366
3367;lib(C)==2 && !adjacent_to_stone_in_atari(C) && !oplay_attack_either(a,a,b)
3368
3369>non_xterritory(d);
3370
3371
3372Pattern Nonterritory53
3373# gf New pattern. (3.5.3)
3374# See gifu03:205.
3375
3376O.O
3377.XO
3378?.?
3379
3380:8,t
3381
3382Obc
3383aXc
3384?d?
3385
3386;oplay_attack(a,b,b) && !oplay_attack_either(a,a,c)
3387
3388>non_xterritory(d);
3389
3390
3391Pattern Nonterritory54
3392# gf New pattern. (3.5.3)
3393# See nicklas4:1103
3394
3395OX.
3396...
3397...
3398---
3399
3400:8,t
3401
3402ODc
3403eab
3404...
3405---
3406
3407;oplay_defend_both(a,b,c,D,b) && oplay_attack(a,b,a)
3408
3409>non_oterritory(e);
3410
3411
3412Pattern Nonterritory55
3413# gf New pattern. (3.5.4)
3414
3415?.X.
3416O...
3417----
3418
3419:8,t
3420
3421?dX.
3422Ocab
3423----
3424
3425;!oplay_attack(a,b,c,a) && !oplay_attack(a,d,c,a)
3426
3427>non_xterritory(b);
3428
3429
3430Pattern Nonterritory56
3431# gf New pattern. (3.7.1)
3432# See endgame:920.
3433
3434...
3435X.O
3436?O.
3437
3438:8,t
3439
3440eac
3441XbO
3442?Od
3443
3444;oplay_attack(a,b,c,d,d)
3445
3446>non_xterritory(e);
3447
3448
3449Pattern Nonterritory57
3450# gf New pattern. (3.7.1)
3451# See endgame:910.
3452
3453|..X
3454|.XO
3455|...
3456+---
3457
3458:8,t
3459
3460|.eX
3461|bXO
3462|dac
3463+---
3464
3465;safe_omove(a) && oplay_attack(a,b,c,d,b)
3466
3467>non_xterritory(e);
3468
3469
3470Pattern Nonterritory58
3471# gf New pattern. (3.7.2)
3472# See gunnar:56.
3473
3474XOOOX
3475x...x
3476-----
3477
3478:|,t
3479
3480DOOOE
3481xabcx
3482-----
3483
3484;!oplay_attack_either(a,c,D,c) && !oplay_attack_either(c,a,E,a)
3485
3486>non_oterritory(b);
3487
3488
3489Pattern Nonterritory59
3490# gf New pattern. (3.7.2)
3491# See gunnar:58.
3492
3493?OOX
3494X...
3495?OO?
3496
3497:8,t
3498
3499?OOE
3500Dabc
3501?OO?
3502
3503;!oplay_attack_either(a,c,D,c) && !oplay_attack_either(c,a,E,a)
3504
3505>non_oterritory(b);
3506
3507
3508Pattern Nonterritory60
3509# gf New pattern. (3.7.2)
3510# See gunnar:57.
3511
3512??OO
3513X...
3514??OX
3515
3516:8,t
3517
3518??OO
3519Ecba
3520??OD
3521
3522;!oplay_attack_either(a,c,D,c) && !oplay_attack_either(c,a,E,a)
3523
3524>non_oterritory(b);
3525
3526
3527# END OF FILE