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