Updated README: Equal sign not required with `--mode` flag.
[sgk-go] / patterns / endgame.db
CommitLineData
7eeb782e
AT
1# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
2# This is GNU Go, a Go program. Contact gnugo@gnu.org, or see #
3# http://www.gnu.org/software/gnugo/ for more information. #
4# #
5# Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, #
6# 2008 and 2009 by the Free Software Foundation. #
7# #
8# This program is free software; you can redistribute it and/or #
9# modify it under the terms of the GNU General Public License #
10# as published by the Free Software Foundation - version 3, #
11# or (at your option) any later version. #
12# #
13# This program is distributed in the hope that it will be #
14# useful, but WITHOUT ANY WARRANTY; without even the implied #
15# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR #
16# PURPOSE. See the GNU General Public License in file COPYING #
17# for more details. #
18# #
19# You should have received a copy of the GNU General Public #
20# License along with this program; if not, write to the Free #
21# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, #
22# Boston, MA 02111, USA #
23# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
24#
25# The Endgame Pattern Database.
26#
27# Further documentation may be found in the Texinfo documentation.
28#
29# First there is a pattern title of the form: Pattern [string]. The
30# string is used for identifying the pattern while tuning or debugging.
31#
32# Then a block of the following characters representing the pattern
33# itself.
34#
35# ? : don't care
36# . : empty
37# X : your piece,
38# O : my piece,
39# x : your piece or empty
40# o : my piece or empty
41# * : my next move
42# -, | : edge of board
43# + : corner of board
44#
45# If a pattern must not match at the edge of the board,
46# an extra row of ?'s in the pattern may be added. (This
47# will not add to the time taken to check the pattern.)
48#
49#################
50#
51# After the pattern, some supplementary information in the format:
52#
53# :trfno, classification, [values], helper_function
54#
55# These and other aspects of the pattern database are documented
56# in the Texinfo documentation.
57#
58#################
59#
60# Any line beginning with #, or any part of a line following
61# whitespace is a comment.
62#
63# The patterns are classified into a number of different categories:
64#
65# EE edge endgame
66# EF edge followups
67# CE center endgame
68# CF center followups
69# EY eye stealing/saving endgame
70#
71# The patterns are grouped in the file by category. New patterns
72# should be added close to a similar pattern or at the end of the
73# category where it belongs. When a new pattern is added, the names
74# of later patterns in the category should usually not be changed.
75# This can be accomplished by introducing names like CC35b and so on.
76#
77
78
79######################################################################
80#
81# Edge endgame patterns
82#
83# These patterns need to be revised.
84#
85# Moves along the edge with small weights, intended to come into play
86# in the endgame.
87#
88# These patterns are further subdivided into the following classes
89#
90# first line descents (except in corner)
91# first line hanes (except in corner)
92# first line pushes (except in corner)
93# first line blocks (except in corner)
94# first line corner moves
95# miscellaneous first line moves
96# second line descents
97# second line hanes
98# second line extensions
99# second line clamps
100# miscellaneous second line moves
101# third line moves
102#
103######################################################################
104
105
106attribute_map general
107
108goal_elements none
109# Several patterns here have a or d class, so we need these elements.
110callback_data XOxo
111
112
113# first line descents (except in corner)
114########################################
115
116Pattern EE1
117# gf Removed terri(1) value because move might be inside own territory. (3.3.7)
118
119?OOx block on edge
120..*x 1 point gote
121----
122
123:8,OXe
124
125?ccx
126ba*x
127----
128
129;marginal_eye(*) && proper_eye(a) && proper_eye(b) && !xplay_attack(*,c)
130
131
132Pattern EE1a
133
134?OOx block on edge
135..*x 2 point gote
136----
137
138:8,OXe,terri(2)
139
140?ccx
141ba*x
142----
143
144; marginal_eye(*) && proper_eye(a) && proper_eye(b)
145; && xplay_attack(*,a,c) && !xplay_attack(*,c)
146
147
148Pattern EE2
149
150OXXx
151xOOX Start by backfilling
152*..x At least 1 point gote
153----
154
155:8,OX,terri(1)
156
157OXXx
158xbbX
159*.ax
160----
161
162;xplay_attack(a,b)
163
164
165Pattern EE2b
166
167OXXx
168*OOX Start by backfilling
169...x At least 1 point gote
170----
171
172:8,OX,terri(1)
173
174OXXx
175*ddX
176cbax
177----
178
179;marginal_eye(a) && proper_eye(b) && proper_eye(c) && xplay_attack(a,d)
180
181
182Pattern EE2c
183
184OXX? Start by backfilling if block is unsafe
185*OO? At least 1 point gote
186...?
187----
188
189:8,OX,terri(1)
190
191OXX?
192*OOb
193..ac
194----
195
196;x_alive_somewhere(b,c) && oplay_attack(a,a) && !oplay_attack(*,?,a,a)
197
198
199Pattern EE4
200
201XOO.
202.X*. one point sente
203----
204
205:8,OXe,terri(1),followup(1)
206
207XOO.
208.X*.
209----
210
211;marginal_eye(*)
212
213
214Pattern EE5
215
216???
217XO? descend to edge
218.*? may quite possibly be 0 points gote
219---
220
221:8,OXe,terri(0.1)
222
223eab
224XOc
225.*d
226---
227
228;o_somewhere(a,b,c,d,e)
229
230
231Pattern EE6
232
233.OOOXX
234...*..
235------
236
237:8,OXe,terri(2)
238
239.OOOXX
240..a*bc
241------
242
243; proper_eye(a) && !oplay_attack(*,*) && oplay_attack(b,*,a,c,*,a)
244; && xplay_attack(*,a,b,a)
245
246
247Pattern EE7
248# tm New Pattern (3.1.19)
249# s classification, in case of ko (see trevorc:180)
250# pp Revised (3.3.18) the pattern to match on edge only.
251
252?.X?
253O.*.
254----
255
256:8,sOXe,terri(0.75)
257
258?.X?
259O.*a
260----
261
262;proper_eye(a) && safe_omove(*)
263
264
265# first line hanes (except in corner)
266#####################################
267
268Pattern EE101
269
270OOXX endgame move
271..*. 2 points gote
272----
273
274:8,OXe,terri(2)
275
276OOXX
277b.*a
278----
279
280;proper_eye(a) && proper_eye(b)
281
282
283Pattern EE102
284
285???X? sente hane
286OXX.. 1 or 2 points sente
287.*..?
288-----
289
290:8,OXe,terri(2),followup(7)
291
292???X?
293OAA..
294.*..?
295-----
296
297;lib(A)==3
298
299
300Pattern EE103
301
302?OX? one point gote (and a little extra)
303?.*.
304----
305
306:8,OXe
307
308?OX?
309?.*a
310----
311
312;proper_eye(a)
313
314
315Pattern EE104
316
317?OX? two points gote
318..*.
319----
320
321:8,OXe
322
323?OX?
324b.*a
325----
326
327;proper_eye(a) && proper_eye(b)
328
329
330#
331# If both EE105 and EE106 match, it's a double sente situation.
332# (followup and reverse followup probably bigger in reality.)
333#
334
335Pattern EE105
336
337?OX.. three points sente
338..*..
339-----
340
341:8,OXe
342
343?OE..
344bc*a.
345-----
346
347;proper_eye(a) && proper_eye(b) && oplay_attack_either(*,a,c,a,E)
348
349
350Pattern EE106
351
352..OX? three points reverse sente
353...*.
354-----
355
356:8,OXe,reverse_followup(6)
357
358..dX?
359.bc*a
360-----
361
362;proper_eye(a) && proper_eye(b) && xplay_attack_either(c,b,*,b,d)
363;&& !xplay_attack(c,b,*,*)
364
365
366Pattern EE107
367#tm New Pattern (3.1.16)
368# see trevor:163
369# FIXME: move this pattern to appropriate place
370
371+-- very special corner position
372|.*
373|.O
374|OX
375
376:8,Oa
377
378+--
379|.*
380|.O
381|OB
382
383; defend(B) && !oplay_defend(*,B) && safe_xmove(*)
384
385
386Pattern EE108
387# pp New pattern (see endgame:890) (3.5.1)
388
389?OX? very small endgame move
390O.*.
391----
392
393:8,OXes,value(0.5)
394
395?OX?
396Oa*b
397----
398
399; proper_eye(b) && oplay_attack(*,b,a,a) && oplay_defend(a,*,a)
400
401
402Pattern EE109
403# gf New pattern. (3.5.3)
404# Generic hane, let the territorial evaluation determine its value.
405
406OX hane on first line
407.*
408--
409
410:8,OXe
411
412
413Pattern EE110
414# gf New pattern. (3.5.3)
415# Followup value obviously imprecise, usually an underestimation.
416
417OX.O followup to save dead stones
418.*..
419----
420
421:8,Xe,followup(5)
422
423aX.b
424d*c.
425----
426
427;alive(a) && dead(b) && oplay_defend(*,c,d,b)
428
429
430# first line pushes (except in corner)
431######################################
432
433Pattern EE201
434
435?XX push on first line.
436O*. one point gote (and a little extra)
437---
438
439:8,OXe,terri(1)
440
441?XX
442O*a
443---
444
445;marginal_eye(*) && proper_eye(a) && max_eye_value(a) > 0
446
447
448Pattern EE201b
449# nando New pattern. (3.7.11)
450
451?XX push deeper on first line.
452O.*
453---
454
455:8,sOXe
456
457?XX
458Oa*
459---
460
461;marginal_eye(a) && proper_eye(*) && max_eye_value(*) > 0
462;&& (safe_omove(*) || oplay_attack(*,a,a))
463
464>if (!safe_omove(*)) known_safe_move(*)
465
466
467Pattern EE202
468
469OXX. endgame move
470.O*. 1 point reverse sente
471----
472
473:8,OXe,terri(1),reverse_followup(1)
474
475OXX.
476.O*a
477----
478
479;marginal_eye(*) && marginal_eye(a)
480
481
482Pattern EE203
483
484OXX. 1 point double sente
485.O*.
486----
487
488:8,OXe,terri(1),reverse_followup(2)
489
490ODDc
491bO*a
492----
493
494;marginal_eye(*) && marginal_eye(a) && marginal_eye(c)
495;&& (oplay_attack(*,a,b,a) || oplay_attack(*,a,b,D))
496
497
498Pattern EE204
499
500?X. endgame move
501O*. 2 points gote
502---
503
504:8,OXe,terri(2)
505
506?Cb
507O*a
508---
509
510;marginal_eye(*) && proper_eye(a)
511;&& (!oplay_defend(*,a,b,a) || !oplay_defend(*,a,b,C))
512
513
514Pattern EE205
515
516X.X at least 2 points, possibly more (followup)
517O*.
518---
519
520:8,OXe,terri(2)
521
522XaX
523O*b
524---
525
526;marginal_eye(*) && proper_eye(a) && proper_eye(b)
527
528
529Pattern EE206
530# gf New pattern. (3.1.20)
531
532X.
533O*
534--
535
536:8,OXe
537
538
539# first line blocks (except in corner)
540######################################
541
542Pattern EE301
543
544O. endgame move
545X* 1 points gote
546--
547
548:8,OXe,terri(1)
549
550Oa
551X*
552--
553
554;marginal_eye(*) && proper_eye(a) && oplay_attack(*,a,a)
555
556
557Pattern EE302
558# gf Revised constraint. (3.3.10)
559
560O. endgame move
561X* 2 points reverse sente
562--
563
564:8,OXe,terri(2),reverse_followup(5)
565
566ba
567X*
568--
569
570;eye(*) && proper_eye(a) && oplay_defend_both(*,a,*,b)
571
572
573Pattern EE303
574# al1 Revised symmetry. (3.7.11)
575
576OXO
577.*.
578---
579
580:|,OXe,terri(2)
581
582
583# first line corner moves
584#########################
585
586Pattern EE401
587# gf Added n classification. (3.5.2)
588
589|.O? big endgame move
590|.OX at least 2 points gote
591|.*x
592+---
593
594:8,nOXed,terri(2)
595
596
597Pattern EE402
598# May look risky, but if it is, the safe_move test will reject it.
599
600|xxXO big endgame move
601|.XO. at least 3 points reverse sente
602|.*..
603+----
604
605:8,OXed,terri(3),reverse_followup(5)
606
607
608Pattern EE403
609
610|OX endgame move
611|.* one point gote
612+--
613
614:8,OXe,terri(1)
615
616|OX
617|.*
618+--
619
620;marginal_eye(*)
621
622
623Pattern EE404
624# gf Revised constraint. (3.3.10)
625
626|OX? endgame move
627|.*. half point gote as sacrifice
628+---
629
630:8,sOXe,terri(0.5)
631
632|OX?
633|.*a
634+---
635
636;marginal_eye(*) && proper_eye(a)
637
638
639Pattern EE404b
640# gf New pattern. See nngs:1480. (3.3.7)
641
642|.OX
643|OX. endgame move
644|.*. at least 1.5 points gote as sacrifice
645+---
646
647:8,sOXe,value(1.5)
648
649|.OX
650|OX.
651|.*.
652+---
653
654;marginal_eye(*)
655
656
657Pattern EE405
658# gf Made main diagram consistent with constraint diagram. (3.1.18)
659# gf Revised constraint. (3.3.10)
660
661|XO? endgame move
662|.*. one point gote
663+---
664
665:8,OXe,terri(1)
666
667|XO?
668|.*a
669+---
670
671;marginal_eye(*) && proper_eye(a)
672
673
674Pattern EE406
675
676|XO endgame move
677|.* possibly only filling dame
678+--
679
680:8,OXe,terri(0.1)
681
682
683Pattern EE407
684# gf Increased value. (3.3.14)
685# Give it a little more than 0.5 points in order to fill before capturing.
686
687|OX? fill ko at end of game
688|*OX 1/2 point gote
689+---
690
691:8,X,terri(0.6)
692
693|aX?
694|*OX
695+---
696
697;!dead(a)
698
699
700Pattern EE408
701# gf Increased value. (3.3.14)
702# Give it a little more than 0.5 points in order to fill before capturing.
703
704|XO? fill ko at end of game
705|O*O 1/2 point gote
706+---
707
708:8,X,terri(0.6)
709
710|Xa?
711|O*O
712+---
713
714;!dead(a)
715
716
717Pattern EE409
718
719|OX? take ko at end of game
720|X*X 1/2 point
721+---
722
723:8,sO,terri(0.5)
724
725|OA?
726|X*X
727+---
728
729;!dead(A)
730
731
732Pattern EE410
733
734|XO? take ko at end of game
735|*XO 1/2 point
736+---
737
738:8,sO,terri(0.5)
739
740|AO?
741|*XO
742+---
743
744;!dead(A)
745
746
747Pattern EE411
748
749|*O endgame ko
750|XO zero points sente or better
751|.X
752+--
753
754:8,OX,terri(0.1),followup(0.5)
755
756
757Pattern EE412
758
759|.X endgame ko
760|OX zero points reverse sente or better
761|*O
762+--
763
764:8,OX,terri(0.1),reverse_followup(0.5)
765
766
767Pattern EE413
768
769|.X? endgame ko
770|OXO 1/2 point
771|.O*
772+---
773
774:8,OX,terri(0.5)
775
776
777Pattern EE414
778
779|xX? three points gote
780|*OX plus possibly more for the eye in the corner
781|.OX
782|..O
783+---
784
785:8,OXed,terri(3)
786
787
788Pattern EE415
789# pp New pattern (3.3.18)
790# Currently necessary (see trevorb:170, where N11 is otherwise rejected
791# as "strategically or tactically unsafe) /ab
792
793|*O?
794|OXX
795|.OX
796+---
797
798:8,X,terri(0.1),reverse_followup(2)
799
800|*A?
801|OXX
802|.OX
803+---
804
805;alive(A)
806
807
808Pattern EE416
809# pp New pattern (3.3.18)
810
811|.OO?
812|..*X
813+----
814
815:8,OXe
816
817|.aa?
818|..*X
819+----
820
821;xplay_attack(*,a) && !oplay_attack(*,a)
822
823>prevent_attack_threat(a)
824
825
826# miscellaneous first line moves
827################################
828
829Pattern EE501
830# gf Increased value. (3.3.14)
831# Give it a little more than 0.5 points in order to fill before capturing.
832
833?OX? fill ko at end of game
834O*OX 1/2 point gote
835----
836
837:8,X,terri(0.6)
838
839?aX?
840O*OX
841----
842
843;!dead(a)
844
845
846Pattern EE502
847
848?OX? take ko at end of game
849OX*X 1/2 point
850----
851
852:8,sO,terri(0.5)
853
854?OA?
855OX*X
856----
857
858;!dead(A)
859
860
861Pattern EE504
862
863... jump on the edge
864*.O
865---
866
867:8,Oe
868
869...
870*.O
871---
872
873;!omoyo(*)
874
875
876# second line descents
877######################
878
879Pattern EE601
880# gf Revised constraint to avoid cyclic redistribution. (3.5.1)
881
882??O? It's better to push down before blocking
883.X*X
884....
885----
886
887:8,OX,terri(3),followup(5)
888
889??O?
890aA*X
891....
892----
893
894; oplay_attack(*,a,A) && !oplay_attack(a,*,A)
895
896> replace(a,*)
897
898
899# second line hanes
900###################
901
902# second line extensions
903########################
904
905Pattern EE801
906# 1: not really gote and larger than 2.5 points
907# 2: Well, without making the pattern more specific we should be
908# prepared that the x really is in place and that there is an X two
909# steps below * too. Then it is usually gote and about this size.
910# We certainly can and should add patterns to deal with the case
911# that there is more space below, when it very likely is sente,
912# unless such patterns already exist in the EB class.
913# gf Actually this pattern doesn't even guarantee a single point, see
914# gifu03:204. Removed fixed territorial value. (3.5.3)
915
916|.O? endgame move
917|.*X 2.5 points gote
918|..x
919
920:8,OXe
921
922
923Pattern EE802
924
925|.X extend on second line
926|.* 2 points gote
927|.O
928
929:8,OXe,terri(2)
930
931|bX
932|.*
933|aO
934
935;proper_eye(a) && proper_eye(b)
936
937
938Pattern EE803
939
940?xx?
941X.*O extend on second line
942.... about 2 points gote
943----
944
945:8,OXe,terri(2)
946
947?xx?
948X.*O
949b..a
950----
951
952;proper_eye(a) && proper_eye(b)
953
954
955Pattern EE804
956# gf Revised value. (3.3.15)
957
958O*X endgame move
959..X not guaranteed to be more than 0 points gote
960---
961
962:8,OXe,terri(0.1)
963
964O*X
965a.X
966---
967
968;marginal_eye(a)
969
970
971Pattern EE805
972
973XX. extend on second line
974OO* not guaranteed to yield a single point
975...
976---
977
978:8,OXe,terri(0.1)
979
980
981Pattern EE806
982# evand new (3.7.1)
983# see kgs:70
984
985|.O??
986|.OX.
987|.*X.
988|....
989+----
990
991:8,OXe,terri(3)
992
993|bO??
994|.OX.
995|.*Xa
996|....
997+----
998
999;xmoyo(a) && omoyo(b)
1000
1001
1002# second line extensions
1003########################
1004
1005Pattern EE851
1006
1007Ox. clamp on second line
1008OX* almost too big to be classified as endgame move
1009...
1010---
1011
1012:8,OXe,terri(8)
1013
1014Ox.
1015OX*
1016.a.
1017---
1018
1019;oplay_attack(*,a,a)
1020
1021
1022# miscellaneous second line moves
1023#################################
1024
1025
1026Pattern EE901
1027# al1 Revised symmetry. (3.7.11)
1028
1029?.? endgame move
1030X*X one point reverse sente
1031O.O
1032---
1033
1034:|,OXe,terri(1),reverse_followup(2)
1035
1036?a?
1037X*X
1038O.O
1039---
1040
1041;marginal_eye(*) && proper_eye(a)
1042
1043
1044Pattern EE902
1045# al1 Revised symmetry. (3.7.11)
1046# Why does this have followup value? -ab
1047
1048?.? endgame move
1049O*O one point sente
1050X.X
1051---
1052
1053:|,OXe,terri(1),followup(2)
1054
1055?a?
1056O*O
1057X.X
1058---
1059
1060;marginal_eye(*) && proper_eye(a)
1061
1062
1063Pattern EE903
1064# gf New pattern. (3.1.23)
1065
1066??XO?
1067?OO*.
1068X....
1069-----
1070
1071:8,OXe
1072
1073??XO?
1074?OO*.
1075Xa...
1076-----
1077
1078;!safe_omove(a)
1079
1080
1081# third line moves
1082##################
1083
1084
1085Pattern EE1002
1086
1087??X? endgame move
1088?X*O at least one point reverse sente
1089OO..
1090....
1091----
1092
1093:8,OXe,terri(1),reverse_followup(4)
1094
1095??X?
1096?X*O
1097aa..
1098....
1099----
1100
1101;lib(a)>3
1102
1103
1104Pattern EE1003
1105# gf New pattern. (3.1.12)
1106
1107O*X? at least one point and usually sente
1108?X.o
1109?X.o
1110----
1111
1112:8,OXe,terri(1)
1113
1114O*X?
1115?Abo
1116?A.o
1117----
1118
1119;lib(A)==3 && proper_eye(b)
1120
1121
1122# reverse followups
1123######################################
1124
1125
1126Pattern EF101
1127# This is the least value for the followup. A more precise value can
1128# only be had by dynamic reading.
1129
1130O..
1131X*.
1132---
1133
1134:8,OX,reverse_followup(4)
1135
1136Oa.
1137X*.
1138---
1139
1140;marginal_eye(*) && proper_eye(a) && oplay_attack(*,a,a)
1141
1142
1143Pattern EF102
1144# tm New Pattern (3.1.16)
1145# tm modified (3.1.17)
1146# tm modified (3.1.20)
1147# gf Removed terri(1) value. (3.1.29)
1148# FIXME: see endgame:218, trevord:1030, trevorc:430
1149# FIXME: This is no edge pattern, move it.
1150
1151O.
1152*O
1153
1154:8,O,reverse_followup(3)
1155
1156ac
1157*b
1158
1159;proper_eye(c) && oterri(c) && !oplay_attack(*,*)
1160;&& !xplay_attack(*,*) && xplay_attack_either(*,a,b)
1161
1162
1163######################################################################
1164#
1165# Center endgame patterns
1166#
1167# Moves in the center with small weights, intended to come into play
1168# in the endgame.
1169#
1170######################################################################
1171
1172Pattern CE1
1173# gf Increased value. (3.3.14)
1174# Give it a little more than 0.5 points in order to fill before capturing.
1175
1176?OX? fill ko at end of game
1177O*OX 1/2 point gote
1178?OX?
1179
1180:-,X,terri(0.6)
1181
1182?OX?
1183a*OX
1184?OX?
1185
1186;!dead(a)
1187
1188
1189Pattern CE2
1190
1191?OX? take ko at end of game
1192OX*X 1/2 point
1193?OX?
1194
1195:-,sO,terri(0.5)
1196
1197?OX?
1198OX*A
1199?OX?
1200
1201;!dead(A)
1202
1203
1204Pattern CE3
1205# al1 Revised symmetry. (3.7.11)
1206
1207... push against opponent
1208O*X about 1 point gote
1209...
1210
1211:-,OXe,terri(1)
1212
1213
1214Pattern CE4a
1215# gf Split and revised pattern. (3.3.10)
1216# gf Revised constraint. (3.3.16)
1217
1218??X endgame move
1219O*. about 1 point reverse sente
1220?.O
1221
1222:8,OXe,terri(1),reverse_followup(1)
1223
1224??X
1225O*.
1226?aO
1227
1228;marginal_eye(*) && proper_eye(a) && (!halfeye(a) || false_eye_territory(a))
1229
1230
1231Pattern CE4b
1232# gf Split and revised pattern. (3.3.10)
1233
1234??X endgame move
1235O*. about 1 point reverse sente
1236x.O
1237
1238:8,OXe,terri(1),reverse_followup(2)
1239
1240??X
1241O*.
1242baO
1243
1244;marginal_eye(*) && proper_eye(a) && proper_eye(b)
1245
1246
1247Pattern CE6
1248
1249X? push in
1250*O 0 points gote
1251
1252:8,OXe,terri(0.1)
1253
1254
1255Pattern CE9
1256# gf Revised constraint. (3.3.15)
1257
1258.X push in
1259*O 1 points gote
1260
1261:8,nOXe,terri(1)
1262
1263aX
1264*O
1265
1266;marginal_eye(*) && max_eye_value(*)>0
1267;&& !safe_omove(a) && !obvious_false_xeye(a)
1268
1269
1270Pattern CE12
1271
1272X*O worth a point in chinese rules
1273
1274:-,OXe,terri(0.1)
1275
1276
1277Pattern CE13
1278# al1 Revised symmetry. (3.7.11)
1279
1280X.X sometimes double sente endgame move
1281.*. one point gote
1282O.O
1283
1284:|,OXe,terri(1)
1285
1286XbX
1287.*.
1288OaO
1289
1290;proper_eye(a) || proper_eye(b)
1291
1292
1293Pattern CE14
1294# al1 Revised symmetry. (3.7.11)
1295
1296X.X sometimes double sente endgame move
1297.*. two points gote
1298O.O
1299
1300:|,OXe,terri(2)
1301
1302XbX
1303.*.
1304OaO
1305
1306;proper_eye(a) && proper_eye(b)
1307
1308
1309Pattern CE15
1310
1311.X? sente endgame move
1312.*. one point sente
1313X.O
1314
1315:8,OXe,terri(1)
1316
1317.X?
1318a*.
1319X.O
1320
1321;marginal_eye(*) && proper_eye(a)
1322
1323
1324Pattern CE15b
1325
1326XX? gote endgame move
1327.*. one point gote
1328X.O
1329
1330:8,OXe,terri(1)
1331
1332XX?
1333a*.
1334X.O
1335
1336;marginal_eye(*) && proper_eye(a)
1337
1338
1339Pattern CE16
1340
1341.X? sente endgame move
1342.*O one point sente
1343X??
1344
1345:8,OXe,terri(1)
1346
1347.X?
1348a*O
1349X??
1350
1351;marginal_eye(*) && proper_eye(a) && olib(*)>2
1352
1353
1354Pattern CE16b
1355# gf Revised constraint. (3.3.15)
1356
1357.O? sente endgame move
1358.*X one point reverse sente
1359O??
1360
1361:8,OXe,terri(1),reverse_followup(2)
1362
1363.O?
1364a*X
1365O??
1366
1367;marginal_eye(*) && proper_eye(a) && max_eye_value(a)>0 && xlib(*)>2
1368
1369
1370Pattern CE17
1371# gf Revised constraint. (3.3.20)
1372
1373XO endgame move
1374.* one point sente
1375xX
1376
1377:8,OXe,terri(1)
1378
1379XO
1380a*
1381xX
1382
1383;marginal_eye(*) && proper_eye(a) && max_eye_value(a)>0 && olib(*)>2
1384
1385
1386Pattern CE18
1387# tm removed reverse_followup value
1388# see trevorb:700
1389# gf Revised constraint. (3.3.15)
1390
1391OX endgame move
1392.* one point gote.
1393oO
1394
1395:8,OXe,terri(1)
1396
1397OX
1398a*
1399oO
1400
1401;marginal_eye(*) && proper_eye(a) && max_eye_value(a)>0
1402
1403
1404Pattern CE19
1405# gf Revised constraint. (3.3.15)
1406
1407?.? endgame move
1408X*X one point gote
1409O.O
1410
1411:|,OXe,terri(1)
1412
1413?b?
1414X*X
1415OaO
1416
1417;marginal_eye(*) && proper_eye(b) && max_eye_value(b)>0 && oplay_attack(*,a,a)
1418
1419
1420Pattern CE20a
1421# gf Split and revised pattern. (3.3.10)
1422# gf Revised constraint. (3.3.15)
1423
1424?.? Smallish endgame
1425O*O one point, possibly reverse sente
1426?X?
1427
1428:|,nOXe,terri(1),reverse_followup(1)
1429
1430?a?
1431O*O
1432?X?
1433
1434;marginal_eye(*) && proper_eye(a) && max_eye_value(a)>0
1435
1436
1437Pattern CE20b
1438# gf Split and revised pattern. (3.3.10)
1439
1440?.x Smallish endgame
1441O*O one point reverse sente
1442?X?
1443
1444:8,nOXe,terri(1),reverse_followup(2)
1445
1446?ab
1447O*O
1448?X?
1449
1450;marginal_eye(*) && proper_eye(a) && proper_eye(b)
1451
1452
1453Pattern CE20c
1454# gf Split and revised pattern. (3.3.10)
1455
1456x.x Smallish endgame
1457O*O one point reverse sente
1458?X?
1459
1460:|,nOXe,terri(1),reverse_followup(3)
1461
1462cab
1463O*O
1464?X?
1465
1466;marginal_eye(*) && proper_eye(a) && proper_eye(b) && proper_eye(c)
1467
1468
1469Pattern CE21
1470# gf Constraint revised. (3.1.8)
1471
1472*OX Smallish endgame
1473O.O one point reverse sente
1474
1475:8,nOXe,terri(1),reverse_followup(2)
1476
1477*bX
1478OaO
1479
1480;proper_eye(a) && lib(b)==2 && !oterri(*)
1481
1482
1483Pattern CE22
1484# gf Territory not guaranteed by pattern. Removed terri(1). (3.7.2)
1485# al1 Revised symmetry. (3.7.11)
1486
1487?X?
1488.*. one point gote
1489O.O
1490ooo
1491
1492:|,OXe
1493
1494
1495Pattern CE23
1496
1497O??
1498*Xx endgame move
1499..X two points gote
1500xXO
1501
1502:8,OXe,terri(2)
1503
1504O??
1505*Xx
1506baX
1507xXO
1508
1509;proper_eye(a) && proper_eye(b)
1510
1511
1512Pattern CE24
1513#tm revised terri from 5 to 4 (3.1.20) (see trevord:180 O6)
1514
1515??OX rescue one stone making territory
1516X*.O
1517?O..
1518
1519:8,X,terri(4)
1520
1521??OX
1522X*.A
1523?Ob.
1524
1525; omoyo(b) && lib(A)==2
1526
1527
1528# Pattern CE25
1529# # tm New pattern (3.1.15) (see trevora:320)
1530# # gf Bad pattern, see olympiad2004:121.
1531# # gf Also no longer needed in trevora:320, removed. (3.7.1)
1532#
1533# O*X
1534# XX.
1535#
1536# :8,OX,terri(1)
1537#
1538# O*X
1539# Xa.
1540#
1541# ;lib(a)==2
1542
1543
1544Pattern CE26
1545# gf New pattern. (3.1.18) (see trevorb:870)
1546
1547O*O
1548X.X
1549
1550:|,OXe
1551
1552
1553Pattern CE27
1554# tm New Pattern (3.1.18)
1555# al1 Revised symmetry. (3.7.11)
1556
1557... moyo breakin worth a lot.
1558X*X
1559?O?
1560
1561:|,-,terri(3)
1562
1563.b.
1564A*C
1565?O?
1566
1567; xmoyo(b) && oplay_break_through(*,b,A,b,C) == WIN
1568
1569
1570Pattern CE28
1571# tm New Pattern (3.1.20)
1572# gf Revised constraint. (3.3.10)
1573
1574OX
1575.*
1576O.
1577
1578:8,nOXe,terri(1)
1579
1580OX
1581A*
1582OB
1583
1584;proper_eye(A) && oplay_attack(*,B,B)
1585
1586
1587Pattern CE28b
1588# gf New pattern. (3.3.10)
1589
1590OX
1591.*
1592O.
1593
1594:8,nOXe
1595
1596
1597Pattern CE29
1598# tm New Pattern (3.1.20) (see trevord:950)
1599# FIXME: this pattern better in patterns.db?
1600# gf Added constraint. (3.3.13) (see gunnar:18)
1601# nando Added s classification and action. (3.7.11)
1602
1603X*X Wedge
1604O.X
1605
1606:8,sOXe
1607
1608B*X
1609OaX
1610
1611;oplay_attack_either(*,a,a,B)
1612
1613>if (!safe_omove(*)) known_safe_move(*)
1614
1615
1616Pattern CE31
1617# gf New pattern. (3.3.6)
1618
1619X.X
1620?*?
1621?O?
1622
1623:|,OXe,terri(0.1)
1624
1625
1626Pattern CE32
1627# gf New pattern. (3.3.17)
1628
1629X*X
1630O.o
1631?O?
1632
1633:8,OXe
1634
1635
1636Pattern CE33
1637# gf New pattern. (3.5.3)
1638# If both colors are alive this does at best fill a dame.
1639
1640OOO
1641O*O
1642?X?
1643
1644:8,OX,maxterri(0.1)
1645
1646
1647Pattern CE34
1648# gf New pattern. (3.7.4)
1649# See gunnar:77.
1650
1651X.*
1652?O.
1653??X
1654
1655:/,OXe
1656
1657
1658######################################################################
1659#
1660# Center followup patterns
1661#
1662# Patterns in the center which enhance the precision of the CE patterns.
1663#
1664######################################################################
1665
1666# Pattern CF3
1667# # tm New Pattern (3.1.23) (see arend:36)
1668# # FIXME: Perhaps better in patterns.db?
1669# # gf This pattern is redundant because the followup has already been
1670# # found by find_worm_threats(). (This was broken in 3.1.23 and 3.1.24.)
1671# # al1 Remove pattern. (3.7.11)
1672#
1673# O*.O threaten to save
1674#
1675# :-,-
1676#
1677# b*ca
1678#
1679# ; dead(a) && !dead(b) && oplay_disconnect(*,*,a) && !oplay_attack(*,?,c,a)
1680#
1681# > threaten_to_save(a)
1682
1683
1684######################################################################
1685#
1686# Eye patterns
1687#
1688# Moves which steal or save a few points by making eye points false.
1689#
1690######################################################################
1691
1692
1693Pattern EY1
1694# gf Revised constraint. (3.3.10)
1695
1696X*O
1697.X?
1698
1699:8,nOXe,terri(1)
1700
1701X*b
1702aX?
1703
1704;halfeye(a) && max_eye_value(a)>0 && !false_eye_territory(a) && !weak(b)
1705
1706
1707Pattern EY2
1708# gf Revised constraint. (3.3.10)
1709
1710?.O
1711X*.
1712.X?
1713
1714:/,nOXe,terri(1)
1715
1716?.b
1717X*.
1718aX?
1719
1720;halfeye(a) && max_eye_value(a)>0 && !false_eye_territory(a) && !weak(b)
1721
1722
1723Pattern EY3
1724# gf Revised constraint. (3.3.10)
1725
1726O*X
1727.O?
1728
1729:8,nOXe,terri(1)
1730
1731O*X
1732aO?
1733
1734;halfeye(a) && max_eye_value(a)>0 && !false_eye_territory(a)
1735
1736
1737Pattern EY4
1738# gf Revised constraint. (3.3.10)
1739
1740?.X
1741O*.
1742.O?
1743
1744:/,nOXe,terri(1)
1745
1746?.X
1747O*.
1748aO?
1749
1750;halfeye(a) && max_eye_value(a)>0 && !false_eye_territory(a)
1751
1752
1753Pattern EY5
1754# gf Revised constraint. (3.3.10)
1755
1756?.X
1757O.*
1758.O?
1759
1760:8,nOXe,terri(1)
1761
1762?.X
1763Ob*
1764aO?
1765
1766;halfeye(a) && max_eye_value(a)>0 && !false_eye_territory(a)
1767;&& oplay_attack(*,b,b) == WIN
1768
1769
1770# END OF FILE