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 Owl offensive 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# In the second field (classification) the following pattern attributes 52# are possible. Friendly stones are 'O', opponent stones are 'X'. 53# 54# s : "Sacrifice" pattern. Omit the usual check that an O stone here 55# cannot be capture. 56# 57# n : In addition to usual check that an O stone here cannot be 58# captured, check also that an X move cannot be captured. 59# 60################# 61# 62# 'Y' is the anchor stone, a unique stone of color 'X' used by the pattern 63# matcher to find the pattern. 64# 65################# 66# The patterns in this database are sorted into the following 67# categories: 68# 69# Axx Limiting moves on the fourth line 70# A1xx Limiting moves on the third line 71# A2xx Limiting moves on the second line 72# A3xx Limiting moves on the first line 73# A4xx Limiting moves in the center 74# A5xx Eye reducing moves on the second line 75# A6xx Eye reducing moves on the first line 76# A7xx Eye reducing moves in the center 77# A8xx Invade the eye space 78# A9xx Nakade patterns 79# A10xx Cuts 80# A11xx Reinforce the perimeter 81# A12xx Kill or threaten a worm of the dragon 82# A13xx Specific corner attacks 83# A14xx Invasion patterns 84# A15xx Ko patterns 85# A16xx Specific edge attacks 86# 87# ACxx Threats to capture 88# AExx Threats to destroy eyes 89# ARxx Reverse sente attacking moves 90 91 92attribute_map owl_attack 93 94goal_elements Xx 95callback_data Xx 96 97 98######################################################### 99# # 100# Limiting moves on the fourth line # 101# # 102######################################################### 103 104 105Pattern A1 106# sometimes sagari is better 107 108?.*Ox connect 109..OYX 110..... 111..... 112----- 113 114:8,n,value(80) 115 116?.*Ax 117..OYX 118..... 119..... 120----- 121 122; lib(A)<4 123 124 125Pattern A2 126 127?..X. 128?.*.x block 129..OY. 130..... 131..... 132----- 133 134:8,-,value(65) 135 136 137Pattern A3 138# db added (3.1.8) 139# gf Reduced value. (3.1.14) 140 141.*O? draw back 142O.YX 143.... 144.... 145---- 146 147:8,-,value(65) 148 149 150######################################################### 151# # 152# Limiting moves on the third line # 153# # 154######################################################### 155 156 157Pattern A101 158 159Oo? Block 160Y*. 161... 162... 163--- 164 165:8,-,value(70) 166 167 168Pattern A102 169 170OO..? Draw back 171XXO*. 172..Y.. 173..... 174----- 175 176:8,-,value(80) 177 178 179Pattern A103 180 181?Oo? draw back 182x*.Y 183x.OX 184?... 185---- 186 187:8,-,value(50) 188 189 190Pattern A104 191 192?..O pull back 193.*OY 194..X. 195.... 196---- 197 198:8,-,value(90) 199 200?..O 201.*Oa 202..X. 203.... 204---- 205 206; lib(a)>2 207 208 209Pattern A105 210 211?..OxX mandatory block 212..*Y.. 213...... 214...... 215------ 216 217:8,-,value(99) 218 219 220Pattern A106 221 222?X?? push in 223..*O 224X.YO 225.... 226---- 227 228:8,-,value(60) 229 230 231Pattern A107 232# gf Not on second line without known support. See trevora:290. (3.1.15) 233# nn Added constraint (3.3.14) 234 235....? block on third line 236Y.*.? 237....? 238....? 239----- 240 241:8,-,value(50) 242 243# 244# ....? 245# a.*.b 246# ....? 247# ....? 248# ----- 249# 250# ; weak(a) || oarea(b) 251 252 253Pattern A108 254 255*.x stand on third line 256OYx 257... 258--- 259 260:8,n,value(70) 261 262 263Pattern A109 264# tm Constraint added (3.1.16) 265 266oOo block on third line 267Y*. 268... 269... 270--- 271 272:8,-,value(79) 273 274aOb 275Y*. 276... 277... 278--- 279 280#Pattern A232 is almost certainly better if this 281#constraint fails (avoid empty triangle) 282; (o_somewhere(a) || !o_somewhere(b)) 283 284 285Pattern A110 286 287O..o draw back --- the only move! 288XO*. 289XY.. 290.... 291---- 292 293:8,-,value(85) 294 295 296Pattern A111 297# db added (3.1.8) 298 299?Ooo try to confine 300?... 301Y.*. 302x... 303.... 304---- 305 306:8,-,value(50) 307 308 309Pattern A112 310# db added (3.1.8) 311 312..O? draw back 313O*YX 314.... 315.... 316---- 317 318:8,-,value(79) 319 320..A? 321O*YX 322.... 323.... 324---- 325 326; lib(A)>2 327 328 329Pattern A113 330# gf Moved from A212. (3.1.9) 331 332|..xX prevent connection 333|.... 334|..*O 335|..Y? 336 337:8,C,value(99) 338 339 340Pattern A114 341# gf Moved from A213. (3.1.9) 342 343|..X. prevent connection 344|.... 345|..*O 346|..Y? 347 348:8,C,value(99) 349 350 351Pattern A115 352# gf New pattern. (3.1.14) 353 354o..Y? 355o.*.X 356..... 357..... 358----- 359 360:8,-,value(85) 361 362a..Y? 363b.*.X 364..... 365..... 366----- 367 368;o_somewhere(a,b) 369 370 371######################################################### 372# # 373# Limiting moves on the second line # 374# # 375######################################################### 376 377 378Pattern A201 379 380OO... Block if safe 381XXOO. 382..YX* 383..... 384----- 385 386:8,-,value(60) 387 388OOc.b 389XXOOa 390..YX* 391..... 392----- 393 394; oplay_attack(*,a,a) || !oplay_attack(*,a,b,c,*) 395 396 397Pattern A203 398# tm Modified (3.1.16) 399 400?O?? second line block 401x*Yx 402...X 403---- 404 405:8,C,value(60) 406 407 408Pattern A204 409# gf Pattern revised. (3.5.1) 410 411??O?? second line block 412?.*Y? 413..... 414----- 415 416:8,-,value(60) 417 418 419Pattern A205 420 421?Oo second line block (needs a helper) 422XY* 423... 424--- 425 426:8,-,value(60) 427 428 429Pattern A205b 430 431?Oo second line block (needs a helper) 432XY* 433.O. 434--- 435 436:8,-,value(70) 437 438 439Pattern A206 440 441?O? block 442YOo 443.X* 444... 445--- 446 447:8,-,value(80) 448 449 450Pattern A206b 451 452?.O block 453YO. 454.X* 455... 456--- 457 458:8,-,value(78) 459 460 461Pattern A207 462 463O.Y second line kosumi 464.*. 465... 466--- 467 468:8,-,value(35) 469 470 471Pattern A207b 472 473O.Yx second line kosumi 474.*.x 475...? 476---- 477 478:8,-,value(58) 479 480 481Pattern A207c 482# nn Modified (3.3.11) see A207d 483 484?O.Yxx second line kosumi 485?.*.xx 486?...?? 487------ 488 489:8,-,value(78) 490 491?O.Yxx 492a.*.xx 493?...?? 494------ 495 496;!x_somewhere(a) || attack(a) 497 498 499# nn Removal candidate (3.3.13) 500# Success rate in regressions : 2.61% (15/560) 501 502Pattern A207d 503# nn New pattern (3.3.11) penalty for being gote 504 505?O.Yxx second line kosumi 506X.*.xx 507?...?? 508------ 509 510:8,C,value(60) 511 512?O.Yxx 513a.*.xx 514?...?? 515------ 516 517;!attack(a) 518 519 520Pattern A208a 521# tm New Pattern (3.1.16) 522 523O.X 524*.Y 525.oo 526--- 527 528:8,-,value(55) 529 530 531Pattern A208b 532# nn New Pattern (3.3.11) 533 534O.. 535*.Y 536.oo 537--- 538 539:8,-,value(35) 540 541 542Pattern A208c 543# gf New pattern. (3.3.18) 544 545?Xx 546O.X 547.*Y 548.oo 549--- 550 551:8,-,value(56) 552 553 554Pattern A208d 555# gf New pattern. (3.5.3) 556 557O.X 558.*Y 559.oo 560--- 561 562:8,-,value(56) 563 564OaX 565.*Y 566.oo 567--- 568 569;!oplay_attack(*,a,*) 570 571 572Pattern A208e 573# gf New pattern. (3.7.3) 574 575O.. 576.*Y 577.oo 578--- 579 580:8,-,value(56) 581 582Oa. 583.*Y 584.oo 585--- 586 587;oplay_attack(*,a,a) 588 589 590Pattern A209 591 592?Ooo 593xY*. second line block 594x... 595---- 596 597:8,-,value(70) 598 599?aoo 600xY*. 601x... 602---- 603 604;lib(a)>2 605 606 607Pattern A210 608 609?OO?x 610xY*.x second line block 611x.... 612----- 613 614:8,C,value(85) 615 616?OO?x 617xY*.a 618x.... 619----- 620 621;owl_escape_value(a)>0 622 623 624Pattern A211 625 626?Oo? second line block 627o..Y 628o.*. 629?... 630---- 631 632:8,-,value(80) 633 634 635Pattern A214 636 637---- connect 638.... 639XO*. 640xYO? 641 642:8,-,value(85) 643 644---- 645.... 646XO*. 647xAO? 648 649;lib(A)>1 650 651 652Pattern A215 653 654?oOx sagari 655?OYX 656x*.. 657.... 658---- 659 660:8,C,value(80) 661 662 663Pattern A216 664 665??O descend to attack 666XYO 667..* 668... 669--- 670 671:8,-,value(50) 672 673 674Pattern A216b 675# gf New pattern. (3.1.11) 676 677??O hane with support 678XYO 679.*. 680... 681--- 682 683:8,-,value(60) 684 685??O 686XYO 687a*. 688... 689--- 690 691;!oplay_attack(*,a,*) 692 693 694Pattern A217 695 696?OYX sometimes more effective to just descend 697.*.. 698.... 699---- 700 701:8,-,value(40) 702 703 704Pattern A217b 705# gf Increased value. (3.1.14) 706 707?OYX sometimes more effective to just descend 708.*.. 709.... 710---- 711 712:8,-,value(65) 713 714?aYX 715.*.. 716.... 717---- 718 719;lib(a)==2 720 721 722Pattern A217c 723# gf New pattern. (3.1.14) 724 725.OYX sometimes more effective to just descend 726.*.. 727.... 728---- 729 730:8,-,value(60) 731 732caYX 733b*.. 734.... 735---- 736 737;!xplay_defend_both(*,b,c,a,b) 738 739 740Pattern A218 741 742..OO reverse sente sagari 743.OYX 744.*.. 745.... 746---- 747 748:8,-,value(75) 749 750 751Pattern A219 752 753O..? 754XO.? double hane 755.Y*. 756...? 757---- 758 759:8,s,value(70) 760 761ba.? 762AOc? 763eY*d 764..f? 765---- 766 767;(xlib(a)==1 || lib(b)>2) && lib(A)<=3 && olib(e)>1 768;&& oplay_attack(*,c,a,d,e,f,A) 769;&& oplay_defend(*,c,a,e,*) 770 771 772Pattern A220 773# tm Modified (3.1.23) 774 775???? prevent jump 776?xx. 777xY*. 778.... 779---- 780 781:8,-,value(45) 782 783??bc 784?xad 785xY*. 786.... 787---- 788 789; (owl_escape_value(b) <= 0 && owl_escape_value(c) <= 0) 790; || !oplay_attack(*,a,d) 791 792 793Pattern A221 794# tm Modified (3.1.20) - added right hand ?s 795# tm Modified (3.1.23) 796 797????? back off to prevent jump 798?xx.? 799xY.*? 800....? 801----- 802 803:8,-,value(50) 804 805???a? 806?xx.? 807xY.*? 808....? 809----- 810 811;owl_escape_value(a) < 1 812 813 814Pattern A222 815 816?oOo?? clamp 817?Oooo? 818XOY*.. 819.X.... 820------ 821 822:8,-,value(35) 823 824 825Pattern A223 826 827O.Y attach underneath 828..* 829... 830--- 831 832:8,-,value(80) 833 834O.B 835.a* 836... 837--- 838 839;lib(B)<=3 && oplay_attack(*,a,B) 840 841 842Pattern A224 843 844???? block if X can't cut 845OO.? 846XY*. 847.... 848---- 849 850:8,-,value(80) 851 852???? 853OOa? 854XY*. 855.... 856---- 857 858; oplay_attack(*,a,a) 859 860 861Pattern A225 862 863?OY? descend to prevent hane and eye 864.*.X 865...x 866---- 867 868:8,-,value(50) 869 870 871Pattern A226 872 873.OY? descend to prevent hane and eye in sente 874.*.X 875...x 876---- 877 878:8,-,value(80) 879 880bCY? 881a*.X 882...x 883---- 884 885;xplay_attack(*,a,C) || !xplay_defend_both(*,a,b,a,C) 886 887 888Pattern A227 889 890?XOxx 891?XO*. stop escape 892X.Y.. 893----- 894 895:8,C,value(35) 896 897?XOxx 898?XO*a 899X.Y.. 900----- 901 902;owl_escape_value(a)>0 903 904 905Pattern A227b 906# gf New pattern. (3.1.9) 907 908?O.x 909X.*. stop escape 910xY.. 911---- 912 913:8,C,value(65) 914 915?O.x 916X.*a 917xYb. 918---- 919 920;owl_escape_value(a)>0 && !oplay_attack(*,a,b,*) 921 922 923Pattern A228 924 925.*O eliminate kikashi 926..Y 927--- 928 929:8,-,value(45) 930 931.*a 932..Y 933--- 934 935; xplay_attack(*,a) 936 937 938Pattern A229 939 940xx.O? stop escape 941x.*OX 942...Y. 943----- 944 945:8,C,value(80) 946 947ac.O? 948b.*OX 949...Y. 950----- 951 952;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0 953 954 955Pattern A229b 956 957xxx? stop escape 958..*O 959...Y 960---- 961 962:8,C,value(79) 963 964abx? 965..*O 966...Y 967---- 968 969;owl_escape_value(a) + owl_escape_value(b) > 0 970 971 972Pattern A229c 973 974xx? stop escape 975.*O 976..Y 977--- 978 979:8,-,value(79) 980 981ab? 982.*O 983..Y 984--- 985 986;owl_escape_value(a) + owl_escape_value(b) > 0 987 988 989Pattern A229d 990 991X? stop escape 992*O 993.Y 994-- 995 996:8,C,value(79) 997 998a? 999*O 1000.Y 1001-- 1002 1003;owl_escape_value(a) > 0 1004 1005 1006Pattern A230 1007 1008?Oo? stop escape along edge 1009..*Y 1010.... 1011---- 1012 1013:8,-,value(80) 1014 1015?Oo? 1016a.*Y 1017b... 1018---- 1019 1020;owl_escape_value(a)+owl_escape_value(b) > 0 1021 1022 1023Pattern A231 1024 1025?..Y jump to undermine 1026O.*. 1027.... 1028 1029:8,-,value(50) 1030 1031 1032Pattern A232 1033# db added (3.1.7) 1034 1035?OO? Jump down to block 1036Y..? 1037.*.. 1038.... 1039---- 1040 1041:8,C,value(80) 1042 1043?OO? 1044Yab? 1045.*c. 1046.... 1047---- 1048 1049; oplay_attack(*,a,b,c,c) 1050 1051 1052Pattern A232b 1053# gf New pattern. (3.5.4) 1054# See trevorc:240. 1055 1056?O. Jump down to block 1057Y.. 1058.*. 1059... 1060--- 1061 1062:8,-,value(80) 1063 1064?ed 1065Yab 1066.*c 1067... 1068--- 1069 1070; xlib(d)<=2 && lib(e)>3 && oplay_attack(*,a,b,c,c) 1071 1072 1073Pattern A233 1074# db added (3.1.10) 1075 1076OO.? Jump and block 1077.... 1078Y*.? 1079...? 1080---- 1081 1082:8,-,value(75) 1083 1084 1085Pattern A234 1086# tm new pattern (3.1.13) 1087# Descend to attack. Possibly defend vulnerable stone. 1088# Useful in arb:231 1089 1090xX defend vulnerable stone. 1091YO 1092.* 1093.. 1094-- 1095 1096:8,C,value(20) 1097 1098 1099Pattern A235 1100# db new pattern (3.3.6) 1101# gf Revised pattern. (3.5.7) 1102 1103?XXO? prevent the hane 1104?Y.*. 1105..x.. 1106----- 1107 1108:8,-,value(77) 1109 1110 1111Pattern A236 1112# tm new pattern (3.3.12) 1113 1114--- 1115x.. 1116Y.* 1117X.. 1118xO. 1119 1120:8,-,value(66) 1121 1122--- 1123x.. 1124Y.* 1125X.. 1126xO. 1127 1128; !oplay_attack(*,*) 1129 1130 1131Pattern A237 1132# pp New pattern (3.3.18) See nngs4:370 1133 1134??O. eliminate an eye in reverse sente 1135xY*O 1136X..o 1137---- 1138 1139:8,-,value(80) 1140 1141??Oc 1142aY*A 1143X.bo 1144---- 1145 1146; (x_somewhere(a) || ! safe_omove(a)) && !xplay_defend(*,b,c,A) 1147 1148 1149Pattern A238 1150# evand New pattern (3.3.20) See nngs4:570 1151 1152oO?Y Jump down to enclose 1153o..x 1154.*.X 1155.... 1156---- 1157 1158:8,-,value(55) 1159 1160 1161Pattern A239 1162#spl added 3.5.1 1163 1164.Yo 1165.*O Penetration 1166... 1167--- 1168 1169:8,-,value(85) 1170 1171 1172Pattern A240 1173#spl added 3.5.1 1174 1175?YO? 1176o*XO capture one stone and limiting eye 1177o... maybe gote 1178---- 1179 1180:8,C,value(50) 1181 1182 1183Pattern A241 1184# gf New pattern. See gifu03:303. (3.5.3) 1185 1186O.YO connect beneath 1187o.*o 1188.... 1189---- 1190 1191:8,-,value(37) 1192 1193a.Yb 1194o.*o 1195.... 1196---- 1197 1198;!oplay_disconnect(*,a,b) 1199 1200 1201Pattern A242 1202# gf New pattern. (3.5.3). 1203# See e.g. nngs:1090. 1204 1205...o? 1206..*O? 1207...Yx 1208----- 1209 1210:8,-,value(35) 1211 1212...o? 1213ba*c? 1214...Yx 1215----- 1216 1217;xplay_disconnect(*,a,a,c) && xplay_disconnect(*,b,b,c) 1218 1219 1220######################################################### 1221# # 1222# Limiting moves on the first line # 1223# # 1224######################################################### 1225 1226 1227Pattern A301 1228 1229YO.X prevent connection 1230X*.. 1231---- 1232 1233:8,-,value(60) 1234 1235YO.A 1236X*.. 1237---- 1238 1239;!owl_goal_dragon(A) 1240 1241 1242Pattern A302 1243# gf Revised pattern. (3.1.14) 1244 1245?oOX? descend, but not on edge 1246?OY.x 1247x*.Xo 1248----- 1249 1250:8,-,value(30) 1251 1252 1253Pattern A305 1254# tm New Pattern (3.1.15) 1255 1256xYxx? Monkey Jump to reduce eye space 1257x...O 1258.*..o 1259----- 1260 1261:8,C,value(45) 1262 1263 1264######################################################### 1265# # 1266# Limiting moves in the center # 1267# # 1268######################################################### 1269 1270 1271Pattern A401 1272# tm Modified (3.1.17) 1273 1274O..? block strongly if possible 1275Y*.. 1276?..? 1277 1278:8,-,value(80) 1279 1280ba.? 1281Y*.. 1282?..? 1283 1284; oplay_defend_both(*,a,*,b) && !oplay_attack(*,a,b) 1285 1286 1287Pattern A401a 1288# tm Modified (3.1.17) 1289# identical to A401, but lower value if bad cut aji 1290# see, for example, strategy4:182 1291 1292O..? block strongly if possible 1293Y*.. 1294?..? 1295 1296:8,-,value(60) 1297 1298ba.? 1299Y*.. 1300?..? 1301 1302; oplay_defend_both(*,a,*,b) 1303 1304 1305Pattern A402 1306# tm Modified (3.1.14) - doesn't make sense to match at edge. 1307 1308O*.? fall back to confine 1309Y... 1310?..? 1311???? 1312 1313:8,-,value(70) 1314 1315a*.? 1316Y... 1317?..? 1318???? 1319 1320;lib(a)<=2 || xlib(*)>2 1321 1322 1323Pattern A403 1324# gf Devalued. See also A403b. (3.3.13) 1325 1326..* knight's move to block 1327O.. 1328OYX 1329 1330:8,-,value(55) 1331 1332cb* 1333Aad 1334OYX 1335 1336; oplay_defend_both(*,a,b,c,A,b) && oplay_defend_both(*,b,a,d,*,A) 1337 1338 1339Pattern A403b 1340# gf More specific pattern and constraint. (3.3.13) 1341 1342??? 1343..* knight's move to block 1344O.. 1345OYX 1346 1347:8,-,value(75) 1348 1349??e 1350cb* 1351Aad 1352OYX 1353 1354; owl_escape_value(e)>0 1355; && oplay_defend_both(*,a,b,c,A,b) && oplay_defend_both(*,b,a,d,*,A) 1356 1357 1358Pattern A404 1359 1360xYx attack eyeshape 1361X.X 1362.*. 1363 1364:|,-,value(75) 1365 1366 1367Pattern A406 1368 1369xxx 1370... center block 1371.*O 1372OY? 1373 1374:8,-,value(85) 1375 1376xax 1377b.. 1378.*O 1379OY? 1380 1381; (owl_escape_value(a)>0)||(owl_escape_value(b)>0) 1382 1383 1384Pattern A406b 1385# nn Modifed (3.3.13) 1386 1387?xxx? 1388o...o center block 1389..*Oo 1390o.Y?? 1391 1392:8,-,value(80) 1393 1394?xax? 1395o...o 1396..*Od 1397o.Ybc 1398 1399;owl_escape_value(a)>0 1400;&& (!x_somewhere(b,c) 1401; || o_somewhere(b,d) 1402; || (o_somewhere(c) && !safe_xmove(d))) 1403 1404 1405Pattern A406c 1406# tm New Pattern (3.1.17) 1407# tm Modified (3.1.22) 1408 1409?xx 1410*.. center keima enclosure 1411..O 1412.YO 1413 1414:8,-,value(81) 1415 1416?ax 1417*c. 1418dbO 1419eYO 1420 1421;owl_escape_value(a)>0 1422; && (xplay_attack(b,c,*,d,d) || !xplay_defend(*,b,d,e,e)) 1423 1424 1425Pattern A406d 1426# gf New pattern. (3.7.1) 1427 1428?xxx? 1429o...o center block 1430..*Oo 1431o..Y? 1432??Xx? 1433 1434:8,-,value(80) 1435 1436?xax? 1437o...o 1438..*Oo 1439o..Y? 1440??Xx? 1441 1442;owl_escape_value(a)>0 1443 1444 1445Pattern A407 1446# gf Added constraint. (3.5.3) 1447 1448?O.X 1449?*Y. 1450?... 1451?... 1452 1453:8,-,value(45) 1454 1455aO.X 1456b*Y. 1457c... 1458?... 1459 1460;!(o_somewhere(a) && o_somewhere(b)) || x_somewhere(c) 1461 1462 1463Pattern A407b 1464# gf New pattern. (3.5.3) 1465 1466OO.X 1467O.Y. 1468o*.. 1469?... 1470 1471:8,-,value(45) 1472 1473 1474Pattern A408 1475# gf Revised constraint. (3.1.14) 1476 1477?oOo seal the opponent in 1478?... 1479.*.Y 1480.... 1481???. 1482???. 1483 1484:8,-,value(70) 1485 1486?oOo 1487?... 1488e*.Y 1489.... 1490?ab. 1491?cd. 1492 1493;o_somewhere(a,b,c,d) && owl_escape_value(e) > 0 1494 1495 1496Pattern A409 1497 1498??xxx 1499oO*.. try to contain 1500O.Y.O 1501?X.Oo 1502 1503:8,C,value(80) 1504 1505??abc 1506oO*.. 1507O.Y.O 1508?X.Oo 1509 1510;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0 1511 1512 1513Pattern A410 1514 1515xxx try to block 1516.*. 1517OYO 1518?X? 1519 1520:|,B,value(90) 1521 1522xax 1523.*. 1524OYO 1525?X? 1526 1527;owl_escape_value(a)>0 1528 1529 1530Pattern A411 1531# gf Revised pattern. Necessary to constrain it harder. (3.1.14) 1532# gf Revised and devalued pattern. (3.1.15) 1533# nn Modified constraint (3.3.11) 1534 1535??...??? try to stop escape into center 1536??...oo? 1537??.*.oo? 1538??o.Y??? 1539??oo???? 1540 1541:8,-,value(79) 1542 1543??.a.??? 1544??...def 1545??.*.ghi 1546??j.Y??? 1547??bc???? 1548 1549;owl_escape_value(a)>0 1550;&& ((o_somewhere(b,c,j) && o_somewhere(d,e,f,g,h,i)) 1551; || (o_somewhere(j) && owl_escape_value(d)==0 && owl_escape_value(e)==0)) 1552 1553 1554Pattern A411a 1555# nn New pattern (3.3.11) 1556# FIXME: there must be a way to prevent duplicate matches with A411 1557 1558???..?? try to stop escape into center 1559??...oo 1560??.*.oo 1561??o.Y?? 1562??oo??? 1563??oo??? 1564 1565:8,-,value(79) 1566 1567???a.?? 1568??...de 1569??.*.bc 1570??f.Y?? 1571??gh??? 1572??ij??? 1573 1574;owl_escape_value(a)>0 && o_somewhere(f,g,h,i,j) && o_somewhere(b,c,d,e) 1575 1576 1577Pattern A413a 1578# nn New pattern (3.3.11) 1579 1580o..... prevent escape 1581o..... 1582o..*.. 1583O.Y... 1584 1585:8,-,value(50) 1586 1587idf... 1588jcbe.. 1589k.a*.. 1590O.Y... 1591 1592;(o_somewhere(j) || (o_somewhere(i) && o_somewhere(k))) 1593;&& !oplay_attack(*,a,b,c,d,e,f,*) && !oplay_attack(*,a,b,e,f,*) 1594 1595 1596Pattern A414 1597# gf Revised constraint. (3.1.14) 1598 1599??xxx?? cap to prevent escape 1600??...?? 1601oo.*.oo 1602oo...oo 1603??.Y.?? 1604 1605:8,-,value(82) 1606 1607??xxx?? 1608??e..?? 1609ab.*.fg 1610cd...hi 1611??.Y.jk 1612 1613; o_somewhere(a,b,c,d) && owl_escape_value(e)>0 && o_somewhere(f,g,h,i,j,k) 1614 1615 1616Pattern A414a 1617# nn New pattern (3.3.11) 1618 1619......o 1620......o 1621..*...o 1622oo.Y.oo 1623 1624:8,-,value(65) 1625 1626a.....b 1627......c 1628..*...d 1629ef.Y.oo 1630 1631;owl_escape_value(a)>0 1632;&& owl_escape_value(b)==0 1633;&& owl_escape_value(c)==0 1634;&& owl_escape_value(d)==0 1635;&& o_somewhere(e,f) 1636 1637 1638Pattern A415 1639 1640o.. cut off escape 1641.*Y 1642X.O 1643 1644:8,C,value(80) 1645 1646o.. 1647.*Y 1648Abc 1649 1650;owl_escape_value(A)>0 && oplay_defend_both(*,b,*,c) 1651 1652 1653Pattern A416 1654 1655?.O?? hane 1656.*Y.X 1657?...x 1658 1659:8,-,value(65) 1660 1661 1662Pattern A417 1663 1664?Y.O prevent center escape 1665O.*. 1666o... 1667xxxx 1668 1669:8,-,value(75) 1670 1671?Y.O 1672O.*. 1673o... 1674xabc 1675 1676;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0 1677 1678 1679Pattern A418 1680# db added (3.1.8) 1681 1682...O prevent escape 1683.*OX 1684O.Yx 1685 1686:8,-,value(80) 1687 1688...O 1689.*OA 1690O.Yx 1691 1692; lib(A)>1 1693 1694 1695Pattern A419 1696# gf New pattern. (3.1.10) 1697# gf Uncommented pattern (3.1.13) 1698# tm modified (3.1.22) (see 13x13:52 --decide-dragon K10) 1699 1700Y.O 1701.*X cut to stop escape 1702 1703:8,C,value(68) 1704 1705Ycd 1706.*A 1707 1708;(owl_escape_value(A)>0) 1709; && oplay_defend_both(*,c,*,d) 1710 1711 1712Pattern A419b 1713# Same as A419, different anchor. 1714 1715X.O 1716.*Y cut to stop escape 1717 1718:8,C,value(68) 1719 1720Acd 1721.*Y 1722 1723;(owl_escape_value(A)>0) 1724; && oplay_defend_both(*,c,*,d) 1725 1726 1727Pattern A420 1728# gf New pattern. (3.1.12) 1729 1730?X.o stop escape into center 1731OY.O 1732.O*. 1733xxxx 1734 1735:8,-,value(75) 1736 1737?X.o 1738cYaO 1739bd*. 1740xexx 1741 1742;owl_escape_value(e)>0 && !xplay_defend_both(*,a,b,c,d) 1743 1744 1745Pattern A421 1746# gf New pattern. (3.1.13) 1747 1748xx? 1749..O center block 1750.*. 1751OY? 1752 1753:8,-,value(80) 1754 1755ax? 1756b.O 1757.*. 1758OY? 1759 1760;owl_escape_value(a)>0 || owl_escape_value(b)>0 1761 1762 1763Pattern A422 1764# ab New pattern. (3.3.10) 1765 1766?Oo? prevent connection to another dragon 1767Y*.X 1768?xo? 1769 1770:8,-,value(85) 1771 1772?Oo? 1773a*.b 1774?xo? 1775 1776;(!owl_goal_dragon(b)) 1777;&& !xplay_disconnect(*,a,b) 1778 1779 1780Pattern A422a 1781# same as A422; different anchor. 1782 1783?Oo? prevent connection to another dragon 1784X*.Y 1785?xo? 1786 1787:8,-,value(85) 1788 1789?Oo? 1790a*.b 1791?xo? 1792 1793;(!owl_goal_dragon(a)) 1794;&& !xplay_disconnect(*,a,b) 1795 1796 1797Pattern A423 1798# db New pattern (3.3.9) 1799# complementary to D1358 1800 1801X..? try to cut 1802Y.*X 1803??O? 1804 1805:8,C,value(61) 1806 1807X..? 1808Y.*a 1809??O? 1810 1811;(owl_escape_value(a) > 0) 1812 1813 1814Pattern A423a 1815# Same as A423; different anchor. 1816 1817X..? try to cut 1818X.*Y 1819??O? 1820 1821:8,-,value(61) 1822 1823a..? 1824a.*Y 1825??O? 1826 1827;(owl_escape_value(a) > 0) 1828 1829 1830Pattern A424 1831# pp New pattern (3.3.18) 1832 1833XYO? block and prevent opponent from playing double threat move 1834.O.o 1835XX*. 1836 1837:8,-,value(80) 1838 1839XYO? 1840.O.o 1841XX*a 1842 1843;owl_escape_value(a) > 0 1844 1845 1846Pattern A425 1847#spl added 3.5.1, counter part of D1348d 1848 1849O.Y block connection 1850.*. 1851X.O 1852 1853:/,n,value(90) 1854 1855 1856######################################################### 1857# # 1858# Eye reducing moves on the second line # 1859# # 1860######################################################### 1861 1862 1863Pattern A501 1864 1865x.Y? jump under 1866.*.O 1867.... 1868---- 1869 1870:8,C,value(75) 1871 1872 1873Pattern A502 1874 1875?Xo extend to kill eye 1876O*Y 1877X.X 1878--- 1879 1880:8,Cn,value(45) 1881 1882?Xo 1883a*Y 1884X.X 1885--- 1886 1887; attack(a) 1888 1889 1890Pattern A503 1891 1892?XX push in to eliminate eye 1893Y*O 1894X.X 1895--- 1896 1897:8,Cs,value(45) 1898 1899 1900Pattern A503b 1901# gf New pattern. (3.5.3) 1902 1903?XXX atari to eliminate eye or make ko 1904Y.O. 1905X.X* 1906---- 1907 1908:8,s,value(32) 1909 1910?XXX 1911Y.O. 1912X.X* 1913---- 1914 1915;olib(*)>1 1916 1917 1918Pattern A504 1919 1920Y* cut off one stone 1921OX 1922-- 1923 1924:8,C,value(35) 1925 1926 1927Pattern A505 1928 1929?OYX there is death in the hane 1930..*. 1931.... 1932---- 1933 1934:8,-,value(45) 1935 1936 1937Pattern A506 1938 1939?YX undermine eyespace 1940O*. 1941... 1942--- 1943 1944:8,-,value(35) 1945 1946 1947Pattern A507 1948 1949?O? destroy eye space and threaten to cut 1950Y*X 1951... 1952--- 1953 1954:8,C,value(80) 1955 1956 1957Pattern A508 1958 1959o.Xx? undermine potential eye space 1960O.*.Y 1961....x 1962----- 1963 1964:8,C,value(65) 1965 1966 1967Pattern A509 1968 1969X.O destroy eye space by damezumari 1970Y*X 1971x.x 1972--- 1973 1974:8,-,value(80) 1975 1976AbO 1977A*X 1978x.x 1979--- 1980 1981;lib(A)<=3 && xlib(b) <= 2 && oplay_attack(*,b,b) 1982 1983 1984Pattern A510 1985 1986.XY.X destroy eyespace in reverse sente 1987OXO*. 1988.O... 1989----- 1990 1991:8,C,value(55) 1992 1993 1994Pattern A511 1995# gf New pattern. (3.1.11) 1996 1997?Y.x undermine eyespace 1998O*.x 1999...x 2000---- 2001 2002:8,-,value(35) 2003 2004?Y.x 2005O*ax 2006...x 2007---- 2008 2009;owl_eyespace(a) 2010 2011 2012Pattern A512 2013# gf New pattern. (3.1.11) 2014 2015.O?? attack eye shape and stop expansion 2016.*Yx 2017..oX 2018---- 2019 2020:8,-,value(70) 2021 2022 2023Pattern A513 2024# tm New pattern. (3.1.15) (see trevora:620) 2025# This may be just too generic, though often useful. 2026# tm Modified (3.1.16) 2027# Added ??? rows, make sure not at upper edge. 2028# ab This is indeed too generic. 2029# gf Added constraint to make it slightly less generic. (3.5.3) 2030# See trevora:620,630 and gifu03:303 for relevant testcases. 2031 2032???| 2033???| 2034Y..| 2035O*.| 2036 2037:8,-,value(45) 2038 2039???| 2040?b?| 2041Ya.| 2042O*.| 2043 2044;x_somewhere(b) || oplay_attack(a,b,a) 2045 2046 2047Pattern A514 2048# tm New Pattern (3.1.15) 2049# see also Pattern A615 2050 2051XOo| special edge position 2052.YX| 2053x*O| 2054...| 2055 2056:8,s,value(45) 2057 2058XOb| 2059CYW| 2060A*O| 2061...| 2062 2063; oplay_attack(*,W) && !oplay_attack(*,A,b,C,b) 2064 2065 2066Pattern A515 2067# gf New pattern. See owl1:286. (3.3.17) 2068 2069XXY*O sacrifice lunch and falsify eye 2070XOO.. 2071----- 2072 2073:8,-,value(35) 2074 2075XXY*O 2076XOba. 2077----- 2078 2079;!oplay_attack(*,a,b,*) 2080 2081 2082Pattern A516 2083# evand New pattern (3.3.20) 2084 2085oOXY. Begin to falsify eye in reverse sente 2086..O*X 2087..... 2088----- 2089 2090:8,-,value(70) 2091 2092oOXYa 2093..O*X 2094....b 2095----- 2096 2097;!obvious_false_xeye(a) || !obvious_false_oeye(b) 2098 2099 2100Pattern A517 2101#spl added (3.3.23) see nando:11 2102 2103?OYXxx Prevent opponent from making an eye on the first line 2104.*O.X. 2105.....X 2106------ 2107 2108:8,-,value(5) 2109 2110 2111Pattern A518 2112# gf New pattern. (3.5.3) 2113# See nngs2:460 2114 2115O.xx? destroye eye 2116.*.YX 2117....X 2118----- 2119 2120:8,-,value(45) 2121 2122 2123######################################################### 2124# # 2125# Eye reducing moves on the first line # 2126# # 2127######################################################### 2128 2129 2130Pattern A601 2131 2132---- jump along edge 2133O.*. 2134Y..? 2135?Xxx 2136 2137:8,-,value(75) 2138 2139 2140Pattern A602 2141 2142--+ hane in corner 2143..| 2144Y*| 2145Oo| 2146 2147:8,-,value(70) 2148 2149--+ 2150..| 2151Y*| 2152ao| 2153 2154;!attack(a) 2155 2156 2157Pattern A603 2158 2159xXY.O reduce eye space 2160x.*.. 2161----- 2162 2163:8,s,value(35) 2164 2165xXY.a 2166cb*.. 2167----- 2168 2169;!attack(a) && owl_proper_eye(b) 2170;&& (x_somewhere(c) || owl_proper_eye(c)) 2171 2172 2173Pattern A603b 2174# tm - modified (3.1.15) (see trevora:170) 2175 2176xY.x reduce eye space 2177.*.O 2178---- 2179 2180:8,s,value(35) 2181 2182xY.x 2183b*.a 2184---- 2185 2186;owl_eyespace(b) && !attack(a) 2187 2188 2189Pattern A604 2190 2191XY..O reduce eye space 2192.*... 2193----- 2194 2195:8,s,value(35) 2196 2197 2198Pattern A605 2199 2200|.Y.O reduce eye space 2201|.*.. 2202+---- 2203 2204:8,s,value(35) 2205 2206 2207Pattern A606 2208 2209XxY.O try to destroy eye 2210xO*.. 2211----- 2212 2213:8,s,value(50) 2214 2215XxYaO 2216xc*b. 2217----- 2218 2219;lib(c) > 1 && !oplay_attack(*,a,b,*) 2220 2221 2222Pattern A607a 2223# gf Split pattern. (3.5.3) 2224# gf Revised constraint. (3.5.4) 2225# gf Comment: A607a and A607b could now be merged again but I think 2226# it may be handy for later revisions to keep them apart. 2227 2228XYO there is death in the hane 2229.*. 2230--- 2231 2232:8,s,value(36) 2233 2234XYa 2235b*. 2236--- 2237 2238;owl_maxeye(b) > 0 && !oplay_attack(*,a) && !obvious_false_xeye(b) 2239 2240 2241Pattern A607b 2242# gf Split pattern and revised constraint. (3.5.3) 2243# gf Reordered constraint for better performance. (3.5.4) 2244 2245.YO there is death in the hane 2246.*. 2247--- 2248 2249:8,s,value(36) 2250 2251.Ya 2252b*. 2253--- 2254 2255;owl_maxeye(b)>0 && !oplay_attack(*,a) && !obvious_false_xeye(b) 2256 2257 2258Pattern A607c 2259# gf New pattern. (3.1.12) 2260# gf Reordered constraint for better performance. (3.5.4) 2261 2262xYO the push is also deadly 2263.*O 2264--- 2265 2266:8,-,value(55) 2267 2268xYa 2269b*a 2270--- 2271 2272;owl_eyespace(b) && !oplay_attack(*,b,a) 2273 2274 2275Pattern A607d 2276# gf New pattern. (3.5.4) 2277# gf Comment: A607a and A607b could now be merged again but I think 2278# it may be handy for later revisions to keep them apart. 2279 2280?XYO there is death in the hane 2281o.*. 2282---- 2283 2284:8,s,value(36) 2285 2286dXYa 2287cb*. 2288---- 2289 2290;owl_maxeye(b)==0 2291;&& ((o_somewhere(c) && owl_lunch(c)) 2292; || (o_somewhere(d) && owl_lunch(d))) 2293;&& !oplay_attack(*,a) && !obvious_false_xeye(b) 2294 2295 2296Pattern A608 2297 2298xYO hane with atari on more than one stone 2299.*. 2300--- 2301 2302:8,s,value(75) 2303 2304xCa 2305b*. 2306--- 2307 2308;lib(C)==2 && wormsize(C)>1 && !oplay_attack(*,a) && !obvious_false_xeye(b) 2309 2310 2311Pattern A609 2312 2313XOY destroy eye 2314.*. 2315--- 2316 2317:8,s,value(35) 2318 2319 2320Pattern A610 2321 2322X.YO try to damage eyespace in sente 2323.*.? 2324---- 2325 2326:8,s,value(55) 2327 2328X.Ya 2329.*.? 2330---- 2331 2332;!attack(a) 2333 2334 2335Pattern A611 2336 2337?Ox? placement where X cannot cut 2338XY.X 2339O.*. 2340---- 2341 2342:8,-,value(80) 2343 2344?Ox? 2345AA.X 2346O.*. 2347---- 2348 2349;lib(A)==2 2350 2351 2352Pattern A612 2353 2354oOY? threaten snapback to destroy eye 2355OX.X 2356*X.O 2357---- 2358 2359:8,-,value(60) 2360 2361oOY? 2362OX.X 2363*X.a 2364---- 2365 2366;lib(a) > 1 2367 2368 2369Pattern A613 2370 2371X.X? extra forceful hane 2372..YO 2373..*. 2374---- 2375 2376:8,-,value(65) 2377 2378X.D? 2379.bDO 2380.a*c 2381---- 2382 2383;oplay_attack(*,a,b,c,D) 2384 2385 2386Pattern A614 2387# gf New pattern. (3.1.15) 2388 2389XYO? destroy eyespace when we can't capture 2390..XO 2391X.*. 2392---- 2393 2394:8,-,value(65) 2395 2396XYO? 2397.aXO 2398X.*. 2399---- 2400 2401;!oplay_attack(a,*,*) 2402 2403 2404Pattern A615 2405# tm New Pattern (3.1.15) 2406 2407OXYXO attack shortage of liberties 2408?...? 2409?.*.? 2410----- 2411 2412:|,s,value(65) 2413 2414OXAXO 2415?...? 2416?.*.? 2417----- 2418 2419;lib(A) == 3 2420 2421 2422# nn Removal candidate (3.3.13) 2423# Success rate in regressions : 0.75 % (2/268) 2424 2425Pattern A616 2426# tm New Pattern (3.1.15) 2427# tm Modified (3.1.17) 2428 2429?XOo| special edge collapse 2430?.Y.| 2431?x.*| 2432?x..| 2433 2434:8,s,value(45) 2435 2436?XCa| 2437?.Y.| 2438?b.*| 2439?x..| 2440 2441; !attack(C) 2442; && (!x_somewhere(b) || (x_somewhere(b) && o_somewhere(a))) 2443 2444 2445Pattern A617 2446# tm New Pattern (3.1.15) 2447 2448OY? threaten snapback. 2449X.X 2450X.O 2451X*. 2452--- 2453 2454:8,s,value(50) 2455 2456OY? 2457A.X 2458X.O 2459X*. 2460--- 2461 2462; lib(A) == 3 2463 2464 2465Pattern A618 2466# tm New Pattern (3.1.17) 2467 2468XYO falsify eye 2469XOX 2470X.* 2471--- 2472 2473:8,-,value(75) 2474 2475XYb 2476XOX 2477XA* 2478--- 2479 2480; oplay_defend_both(*,A,b,*) 2481 2482 2483Pattern A619 2484#tm New Pattern (3.1.17) 2485 2486|.Y 2487|.* 2488+-- 2489 2490:8,-,value(75) 2491 2492 2493Pattern A620 2494#evand New Pattern. (3.3.18) 2495 2496.YO push in to destroy eyespace 2497*Ox 2498--- 2499 2500:8,s,value(65) 2501 2502aYO 2503*Ox 2504--- 2505 2506;!obvious_false_xeye(a) 2507 2508 2509Pattern A621 2510# spl added 3.3.22 2511# gf Revised constraint. (3.5.3) 2512 2513?YOo? threaten to make ko or nakade 2514X..*. 2515----- 2516 2517:8,s,value(10) 2518 2519?AOo? 2520X..*. 2521----- 2522 2523;lib(A)<3 && owl_eyespace(*) 2524 2525 2526Pattern A622 2527# gf New pattern. (3.5.3) 2528# Compare D704b. See nngs3:450. 2529 2530xY.O half eye sometimes missed 2531X.*o 2532---- 2533 2534:8,-,value(35) 2535 2536bYaO 2537X.*o 2538---- 2539 2540; xplay_attack(*,a,a) 2541; && (x_somewhere(b) || !safe_omove(b)) 2542 2543 2544Pattern A623 2545# gf New pattern. (3.5.5) 2546 2547|.xY.O 2548|....O monkey jump into the corner 2549|.*... 2550+----- 2551 2552:8,-,value(65) 2553 2554 2555Pattern A626 2556# gf New pattern. (3.7.3) 2557 2558??XXO? 2559XX..XO steal an eye 2560.*.X.O 2561------ 2562 2563:8,s,value(75) 2564 2565??XXO? 2566XX..XO 2567a*.X.O 2568------ 2569 2570;owl_proper_eye(a) 2571 2572 2573######################################################### 2574# # 2575# Eye reducing moves in the center # 2576# # 2577######################################################### 2578 2579 2580Pattern A701 2581 2582?XOo make atari 2583X.YO 2584x.*. 2585 2586:8,-,value(79) 2587 2588?AOo 2589X.YO 2590x.*. 2591 2592;lib(A)>1 2593 2594 2595Pattern A702 2596 2597?XOo make atari 2598X.YO 2599..*O 2600??x? 2601 2602:8,-,value(80) 2603 2604?AOo 2605X.YO 2606..*O 2607??x? 2608 2609;lib(A)>1 2610 2611 2612Pattern A703 2613 2614?XX? push in to limit eyeshape 2615O*.Y 2616?..x 2617 2618:8,-,value(80) 2619 2620 2621Pattern A704 2622 2623?OY? capture one stone 2624OXOX 2625.*.? 2626 2627:8,C,value(80) 2628 2629 2630Pattern A705b 2631 2632?.? attack eye shape 2633X*Y 2634?.? 2635 2636:8,C,value(61) 2637 2638?b? 2639X*Y 2640?a? 2641 2642;owl_eyespace(a) && xlib(b) <= 2 && oplay_attack(*,b,b) 2643 2644 2645Pattern A706 2646 2647?*? 2648X.X 2649?Y. 2650 2651:8,C,value(70) 2652 2653?*? 2654XaA 2655?Yb 2656 2657; (owl_topological_eye(a,A)<=2) && (owl_topological_eye(b,A)==2) 2658 2659 2660Pattern A707 2661 2662?O? 2663X*X 2664.Y. 2665 2666:8,C,value(70) 2667 2668?O? 2669X*A 2670aYb 2671 2672; (owl_topological_eye(a,A)==2) 2673; && ((owl_topological_eye(b,A)==2) || (owl_topological_eye(b,A)==3)) 2674 2675 2676Pattern A708 2677 2678?Y* attack eye with sente 2679x.X 2680?x? 2681 2682:8,n,value(80) 2683 2684?Y* 2685xaB 2686?x? 2687 2688;owl_topological_eye(a,B)==3 && does_attack(*,B) 2689 2690 2691Pattern A709 2692 2693xX. half eye sometimes missed 2694Y.* 2695?x? 2696 2697:8,C,value(45) 2698 2699xXb 2700Aa* 2701?x? 2702 2703; owl_topological_eye(a,A)==3 2704; && safe_omove(b) && safe_omove(*) && xplay_attack(*,b,b) 2705 2706 2707Pattern A710 2708 2709?Y* kill a half eye with an atari 2710x.X 2711?x? 2712 2713:8,-,value(35) 2714 2715?A* 2716xba 2717?x? 2718 2719; lib(a)==2 && owl_topological_eye(b,A)==3 2720 2721 2722Pattern A711 2723 2724O*.X destroy eye 2725X..X 2726xXY? 2727 2728:8,C,value(35) 2729 2730 2731Pattern A712 2732 2733?XX? eye stealing tesuji 2734...Y 2735.*.X 2736oo.? 2737 2738:8,C,value(60) 2739 2740 2741Pattern A713 2742 2743OO? destroy potential eye 2744X.Y 2745X.X 2746x*x 2747 2748:8,-,value(45) 2749 2750bb? 2751XaY 2752X.X 2753x*x 2754 2755;!attack(b) && xplay_attack(a,b) 2756 2757 2758Pattern A714 2759 2760?XY? capture to spoil eyespace 2761O..X 2762X*.x 2763OX.x 2764 2765:8,C,value(82) 2766 2767?XY? 2768O..X 2769A*.x 2770OX.x 2771 2772;lib(A)==1 2773 2774 2775Pattern A715 2776# gf New pattern. (3.1.11) 2777# evand Modified. (3.3.18) 2778 2779?*YX attack eye shape and possibly threaten to cut 2780x..x 2781?xXO 2782 2783:8,-,value(60) 2784 2785?*YX 2786x..x 2787?xXa 2788 2789;!owl_proper_eye(*) && !attack(a) 2790 2791 2792Pattern A716 2793# gf New pattern. (3.1.12) 2794 2795O*x destroy eye in reverse sente 2796X.X 2797xYx 2798 2799:8,C,value(50) 2800 2801a*x 2802X.X 2803xYx 2804 2805;xplay_attack(*,a) 2806 2807 2808Pattern A717 2809# tm New Pattern (3.1.17) 2810 2811?.?? 2812XO*Y 2813?X.X 2814 2815:8,Cs,value(75) 2816 2817?.?? 2818XO*Y 2819?XAb 2820 2821; owl_big_eyespace(A) 2822; && oplay_attack(*,b) 2823 2824 2825Pattern A718 2826# tm New Pattern (3.1.22) (see trevorc:1360) 2827# see related general defense pattern D309a 2828 2829xYx? reduce eye space 2830x.*O 2831xXx? 2832 2833:8,C,value(50) 2834 2835xYx? 2836x.*A 2837xXx? 2838 2839; 1 || oplay_attack(*,A) 2840 2841 2842Pattern A719 2843# gf New pattern. (3.3.20) 2844# gf Revised constraint. (3.5.2) 2845 2846?XYO reduce eye space 2847X.*X 2848?XX. 2849 2850:8,s,value(50) 2851 2852?XYc 2853Xa*X 2854?XXb 2855 2856;owl_mineye(*)==1 && xlib(b)==2 && !oplay_attack(*,c) && !oplay_attack(*,a,b,b) 2857 2858 2859Pattern A719b 2860# gf New pattern. (3.3.20) 2861 2862|XYO reduce eye space 2863|.*X 2864|XX. 2865 2866:8,s,value(50) 2867 2868|XYc 2869|a*X 2870|XXb 2871 2872;xlib(b)==2 && !oplay_attack(*,c) && !oplay_attack(*,a,b,b) 2873 2874 2875Pattern A720 2876# evand New pattern (3.3.20) 2877 2878?.?? 2879Y..x Bamboo connection to reduce eyespace 2880X*Ox 2881?... 2882?OO? 2883 2884:8,C,value(40) 2885 2886?c?? 2887Ya.x 2888X*Ox 2889?... 2890?OO? 2891 2892;(owl_eyespace(a) || owl_eyespace(c)) 2893;&& oplay_attack(a,a) && xplay_attack(*,a) 2894 2895 2896Pattern A721 2897 2898?XX. 2899Y.*. 2900?XX. 2901 2902:8,s,value(45) 2903 2904?XXe 2905Yd*c 2906?AAb 2907 2908;lib(A) == 3 && !obvious_false_xeye(d) 2909;&& oplay_defend(*,b,c,*) && oplay_defend(*,e,c,*) 2910;&& oplay_defend_both(*,c,b,d,e,b,e) 2911 2912 2913######################################################### 2914# # 2915# Invade the eye space # 2916# # 2917######################################################### 2918# # 2919# These are patterns where a live stone # 2920# is played where the opponent might get # 2921# an eye. They do not include sacrifice # 2922# patterns. # 2923# # 2924######################################################### 2925 2926 2927Pattern A801 2928 2929?xYx attack chimera 2930xX.X 2931X.*O 2932---- 2933 2934:8,n,value(80) 2935 2936 2937Pattern A802 2938 2939xYx destroy eye 2940X.X 2941.*O 2942--- 2943 2944:8,n,value(50) 2945 2946 2947Pattern A803 2948# tm modified(3.1.16) 2949 2950xxX? connect under 2951oOYO 2952..*. 2953---- 2954 2955:8,-,value(80) 2956 2957xxX? 2958oAYO 2959..*. 2960---- 2961 2962; attack(A) && !oplay_attack(*,A) 2963 2964 2965Pattern A804 2966 2967.YO? connect out on first line 2968O*oo 2969---- 2970 2971:8,-,value(45) 2972 2973.YO? 2974A*oo 2975---- 2976 2977; does_attack(*,A) 2978 2979 2980Pattern A805 2981 2982XxxX? connect under 2983.oOYO 2984...*. 2985----- 2986 2987:8,-,value(60) 2988 2989 2990Pattern A806 2991 2992O..Y clamp 2993OX*. 2994.... 2995---- 2996 2997:8,C,value(75) 2998 2999 3000Pattern A807 3001 3002?X. connect under 3003OY* 3004.O. 3005--- 3006 3007:8,-,value(65) 3008 3009 3010Pattern A808 3011 3012|.OYO avoid leaving ko by connecting on the outside 3013|*XO. 3014+---- 3015 3016:8,-,value(60) 3017 3018 3019Pattern A809 3020 3021XX.O? connect out 3022O.YO? 3023O.*.. 3024----- 3025 3026:8,-,value(80) 3027 3028XX.O? 3029A.YO? 3030A.*.. 3031----- 3032 3033; lib(A)>2 3034 3035 3036Pattern A810 3037# This looks a little weird. /ab 3038 3039?O? 3040X.Y safe invasion into eye 3041?*? 3042 3043:8,-,value(45) 3044 3045?O? 3046X.Y 3047?*? 3048 3049;owl_eyespace(*) 3050 3051 3052Pattern A811 3053#tm New Pattern (3.1.17) 3054 3055.X? 3056X.Y 3057.*X 3058 3059:8,s,value(65) 3060 3061aX? 3062XbC 3063.*X 3064 3065; lib(C) <= 3 3066; && owl_proper_eye(a) 3067; && owl_proper_eye(b) 3068 3069 3070Pattern A812 3071 3072.Y? clamp to invade eyespace 3073..O 3074*XO 3075..o 3076--- 3077 3078:8,C,value(40) 3079 3080.Y? 3081..O 3082*XO 3083..o 3084--- 3085 3086;owl_eyespace(*) 3087 3088 3089Pattern A813 3090#spl added 3.5.1 see century2002:80 3091# gf Revised constraint. (3.5.1) 3092 3093X*. 3094OYO sacrifice to eliminate eye 3095.X. 3096--- 3097 3098:8,Cs,value(85) 3099 3100X*. 3101aYb 3102cXd 3103--- 3104 3105;(!attack(a) && olib(d)>=3) 3106;|| (!attack(b) && olib(c)>=3) 3107 3108 3109Pattern A814 3110# gf New pattern. (3.7.2) 3111# See ld_owl:321. 3112 3113X.. try to squeeze eyespace 3114OY* 3115?X. 3116--- 3117 3118:8,s,value(35) 3119 3120X.. 3121OB* 3122?Ba 3123--- 3124 3125;lib(B) == 3 && owl_big_eyespace(*) && olib(*)>2 && olib(a)>1 3126 3127 3128######################################################### 3129# # 3130# Nakade patterns # 3131# # 3132######################################################### 3133# # 3134# These are patterns where a sacrifice stone # 3135# is played in the opponent's eye space to # 3136# prevent two eyes. Use the s (sacrifice) # 3137# classification # 3138# # 3139######################################################### 3140 3141 3142Pattern A901 3143 3144|X??? 3145|OXYX connect corner ko to make nakade 3146|*O.X 3147+---- 3148 3149:8,s,value(70) 3150 3151 3152Pattern A902 3153 3154XOY nakade trick 3155O*O 3156--- 3157 3158:8,s,value(70) 3159 3160XbY 3161a*c 3162--- 3163 3164;lib(a)==1 && lib(b)==1 && lib(c)<=2 3165 3166 3167Pattern A902b 3168 3169XOY nakade trick 3170O*O 3171--- 3172 3173:8,s,value(30) 3174 3175XbY 3176a*c 3177--- 3178 3179;lib(a)<=2 && lib(b)==1 && lib(c)<=2 3180 3181 3182Pattern A903 3183 3184|xYX? 3185|.O.X try to make nakade 3186|..*. 3187+---- 3188 3189:8,s,value(35) 3190 3191 3192Pattern A904 3193 3194|OX? try to form nakade 3195|XOY 3196|*.x 3197+--- 3198 3199:8,s,value(55) 3200 3201|aB? 3202|XOY 3203|*.x 3204+--- 3205 3206;lib(a) == 1 && lib(B) > 1 3207 3208 3209Pattern A905 3210# gf Increased value slightly. (3.1.14) 3211 3212|O.X try to form nakade 3213|XOY 3214|*.. 3215+--- 3216 3217:8,s,value(36) 3218 3219 3220Pattern A906a 3221# gf New pattern. (3.5.3) 3222# See seki:303. 3223 3224|X??? 3225|.YX? 3226|XO.X try to make ko 3227|*.O. 3228+---- 3229 3230:8,s,value(32) 3231 3232|Xa?? 3233|.YX? 3234|XO.X 3235|*.O. 3236+---- 3237 3238;!o_somewhere(a) || !defend(a) 3239 3240 3241Pattern A906b 3242# gf New pattern. (3.5.3) 3243# See seki:303. 3244 3245|X??? 3246|.YX? 3247|.OXX try to make ko 3248|*.O. 3249+---- 3250 3251:8,s,value(32) 3252 3253|Xa?? 3254|.YX? 3255|.OXX 3256|*.O. 3257+---- 3258 3259;!o_somewhere(a) || !defend(a) 3260 3261 3262Pattern A907 3263 3264|.X?? 3265|OYX? critical point, might kill 3266|*.Xx 3267|.... 3268+---- 3269 3270:8,s,value(65) 3271 3272|.X?? 3273|aYX? 3274|*.Xx 3275|.... 3276+---- 3277 3278;!defend(a) 3279 3280 3281Pattern A908 3282 3283|X??? nakade if ko can be won 3284|OYX? 3285|.OX? 3286|O*.X 3287+---- 3288 3289:8,s,value(35) 3290 3291|X??? 3292|OYX? 3293|.OX? 3294|O*aX 3295+---- 3296 3297;xlib(a) == 2 3298 3299 3300Pattern A909 3301 3302|.X? capture to form nakade 3303|OYX 3304|XOX 3305|*O. 3306+--- 3307 3308:8,s,value(35) 3309 3310 3311Pattern A910 3312# gf Revised constraint. (3.5.3) 3313 3314XYX| try nakade in corner 3315.*.| 3316---+ 3317 3318:8,s,value(25) 3319 3320XYX| 3321a*.| 3322---+ 3323 3324;!obvious_false_xeye(a) && owl_maxeye(*)>1 3325 3326 3327Pattern A911 3328 3329Y.Xo| try nakade 3330X.*.| 3331----+ 3332 3333:8,s,value(25) 3334 3335A.Xo| 3336A.*.| 3337----+ 3338 3339;lib(A)==2 3340 3341 3342Pattern A912 3343 3344OYOo destroy eyespace 3345X.XO 3346.*.. 3347---- 3348 3349:8,s,value(35) 3350 3351 3352Pattern A913 3353 3354XY.X try sente eyeshape reduction 3355X.*. 3356---- 3357 3358:8,s,value(80) 3359 3360AAbX 3361A.*. 3362---- 3363 3364;lib(A)==2 && !safe_omove(b) 3365 3366 3367Pattern A914 3368 3369XY.X try nakade 3370X.*. 3371---- 3372 3373:8,s,value(25) 3374 3375XYaX 3376X.*. 3377---- 3378 3379;!safe_omove(a) 3380 3381 3382Pattern A915 3383 3384X.Yoo destroy eyespace 3385.*.Xo 3386..... 3387----- 3388 3389:8,s,value(85) 3390 3391X.Yao 3392.*.Xb 3393..... 3394----- 3395 3396;o_somewhere(a,b) 3397 3398 3399Pattern A916 3400 3401??Yx play inside to kill one eye 3402XX.X 3403..*. 3404---- 3405 3406:8,s,value(65) 3407 3408 3409Pattern A917 3410 3411?X?? always worth considering 3412X.Y? 3413?*.X 3414??X? 3415 3416:/,s,value(45) 3417 3418 3419Pattern A918 3420# gf New pattern. (3.1.14) 3421 3422?X?? always worth considering 3423X.Y? 3424?*.X 3425???? 3426 3427:8,s,value(40) 3428 3429 3430Pattern A919 3431# evand New pattern. (3.3.20) 3432 3433o?XX?? 3434OX..Y? 3435..*..x 3436------ 3437 3438:8,s,value(35) 3439 3440 3441Pattern A920 3442# evand New pattern. (3.3.20) 3443 3444?XX?? 3445X..Y? 3446xO*.x 3447----- 3448 3449:8,s,value(35) 3450 3451 3452Pattern A921 3453# gf New pattern. (3.7.1) 3454# See ld_owl:320. 3455 3456?XX?? 3457X.*Y? 3458xO..x 3459----- 3460 3461:8,s,value(30) 3462 3463?XX?? 3464X.*A? 3465xO..x 3466----- 3467 3468;oplay_defend(*,A)!=WIN 3469 3470 3471######################################################### 3472# # 3473# Cuts # 3474# # 3475######################################################### 3476 3477 3478Pattern A1001 3479 3480YO cut if safe 3481*X 3482 3483:8,Cn,value(80) 3484 3485Ba 3486*C 3487 3488;(owl_escape_value(B)>0 || owl_escape_value(C)>0) 3489;&& !oplay_attack_either(*,*,a) 3490 3491 3492Pattern A1001b 3493# Sometimes cut of small useless tail 3494# i.e.: gq -l games/niki.sgf -L 158 --decide-dragon S8 -o x.sgf 3495 3496YO cut if safe 3497*X 3498 3499:8,Cn,value(50) 3500 3501Ya 3502*X 3503 3504; !oplay_attack_either(*,*,a) 3505 3506 3507Pattern A1002 3508 3509???? 3510?*.X threaten to cut 3511??YO 3512 3513:8,C,value(75) 3514 3515???? 3516?*aX 3517??Yc 3518 3519; !safe_omove(a) && !oplay_attack_either(*,?,a,a,c) && !oplay_attack(*,a,*) 3520 3521 3522Pattern A1003 3523 3524???? 3525?*.X threaten to cut 3526??YO 3527 3528:8,C,value(55) 3529 3530???? 3531?*aX 3532??Yc 3533 3534; !safe_omove(a) && !oplay_attack_either(*,?,a,a,c) 3535 3536 3537Pattern A1005 3538 3539Y? cut! 3540*O 3541.X 3542 3543:8,C,value(90) 3544 3545Y? 3546*b 3547aC 3548 3549;owl_escape_value(C)>0 && xplay_attack_either(*,a,a,b) 3550 3551 3552Pattern A1005b 3553# gf Need to consider both directions. (3.3.13) 3554 3555X? cut! 3556*O 3557.Y 3558 3559:8,C,value(90) 3560 3561C? 3562*b 3563aY 3564 3565;owl_escape_value(C)>0 && xplay_attack_either(*,a,a,b) 3566 3567 3568Pattern A1006 3569 3570XOY push out 3571.*. 3572?.? 3573 3574:8,C,value(70) 3575 3576 3577Pattern A1006b 3578# gf New pattern. (3.1.12) 3579 3580XOY push out in reverse sente 3581.*. 3582?.? 3583 3584:8,C,value(75) 3585 3586XaY 3587.*. 3588?.? 3589 3590;lib(a) <= 2 3591 3592 3593Pattern A1008 3594 3595X*Y stop connection 3596?O? 3597 3598:8,C,value(80) 3599 3600a*b 3601?O? 3602 3603;owl_escape_value(a)>0 || owl_escape_value(b)>0 3604 3605 3606Pattern A1008b 3607# tm Modified (3.1.22) (see trevorc:810) 3608 3609ooo 3610X*Y stop connection 3611O.? 3612 3613:8,C,value(80) 3614 3615ooo 3616a*b 3617Oc? 3618 3619;(owl_escape_value(a)>0 || owl_escape_value(b)>0) 3620; && oplay_attack(*,c,c) 3621 3622 3623Pattern A1009 3624 3625XO*Y stop connection underneath 3626.... 3627---- 3628 3629:8,C,value(55) 3630 3631XO*Y 3632.a.. 3633---- 3634 3635;xplay_attack(*,a,a) 3636 3637 3638Pattern A1010 3639 3640Y.O cut and capture to destroy eyespace 3641.*X 3642... 3643--- 3644 3645:8,C,value(75) 3646 3647YaO 3648.*B 3649... 3650--- 3651 3652;oplay_attack(*,a,B) 3653 3654 3655Pattern A1011 3656 3657XOY stop connection underneath 3658x*x 3659--- 3660 3661:8,C,value(80) 3662 3663aOb 3664x*x 3665--- 3666 3667;owl_escape_value(a)>0 || owl_escape_value(b)>0 3668 3669 3670Pattern A1012 3671 3672X.?? cut 3673OY*O 3674oOX? 3675 3676:8,C,value(45) 3677 3678Xa?? 3679OY*O 3680obX? 3681 3682; !safe_omove(a) && lib(b)>1 3683 3684 3685Pattern A1013 3686# tm New pattern. (3.1.13) 3687# see owl:229 3688 3689?O? enclose! 3690Y.. 3691X*? 3692 3693:8,-,value(10) 3694 3695?c? 3696YAb 3697X*? 3698 3699; owl_escape_value(b)>0 3700; && oplay_defend_both(*,A,b,c,b) 3701; && oplay_defend_both(*,A,b,b,*) 3702 3703 3704Pattern A1014 3705# gf New pattern. (3.1.14) 3706 3707xx..Ox stop connection underneath 3708...*Y. 3709------ 3710 3711:8,C,value(55) 3712 3713AB..Ox 3714...*Y. 3715------ 3716 3717;x_somewhere(A,B) && owl_escape_value(A) + owl_escape_value(B) > 0 3718 3719 3720Pattern A1015 3721 3722X.*Y cut! 3723X..X 3724 3725:8,C,value(75) 3726 3727Ae*B 3728AfgB 3729 3730; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0) 3731; && oplay_defend_both(*,g,f,e,f,*) 3732 3733 3734Pattern A1015a 3735 3736Y.*X cut! 3737X..X 3738 3739:8,C,value(75) 3740 3741Ae*B 3742AfgB 3743 3744; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0) 3745; && oplay_defend_both(*,g,f,e,f,*) 3746 3747 3748Pattern A1016 3749# gf New pattern. (3.1.22) 3750# Converse to D1376. See lazarus:114 for an example. 3751 3752YxO? 3753o.*X 3754---- 3755 3756:8,C,value(75) 3757 3758Bde? 3759oc*A 3760---- 3761 3762; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0) 3763; && ((x_somewhere(d) && xplay_attack_either(*,c,c,e)) 3764; || (!x_somewhere(d) && !xplay_defend_both(*,c,d,c,e))) 3765 3766 3767Pattern A1016a 3768# gf New pattern. (3.1.22) 3769# Converse to D1376. See lazarus:114 for an example. 3770 3771XxO? 3772o.*Y 3773---- 3774 3775:8,C,value(75) 3776 3777Bde? 3778oc*A 3779---- 3780 3781; (owl_escape_value(A) > 0 || owl_escape_value(B) > 0) 3782; && ((x_somewhere(d) && xplay_attack_either(*,c,c,e)) 3783; || (!x_somewhere(d) && !xplay_defend_both(*,c,d,c,e))) 3784 3785 3786Pattern A1017 3787# nn New pattern (3.3.11) 3788# gf Revised constraint, see owl1:354. (3.7.3) 3789 3790X.*o threaten to cut and mess up opponent's shape 3791xY.X 3792 3793:8,C,value(65) 3794 3795X.*b 3796xYaC 3797 3798;!oplay_attack(*,a,*) 3799;&& (o_somewhere(b) || !oplay_attack(*,b,*)) 3800;&& !attack(C) 3801 3802 3803Pattern A1018 3804# nn New pattern (3.3.11) 3805 3806O.Y separate 3807.*. 3808X.o 3809 3810:8,C,value(35) 3811 3812 3813Pattern A1019 3814# nn New pattern (3.3.11) 3815 3816.o.O cut / prevent escape 3817X... 3818.*.Y 3819 3820:8,C,value(65) 3821 3822.fgO 3823Xbde 3824.*cA 3825 3826;!owl_goal_dragon(A) && !oplay_attack_either(*,b,c,d,e,c,e) 3827;&& (o_somewhere(f) || !oplay_attack_either(*,d,b,f,g,b,g)) 3828 3829 3830Pattern A1020 3831# nn New pattern (3.3.11) 3832# FIXME: constraint is ugly 3833 3834ooooo try to cut off and kill the moyo reducing stone 3835....o 3836....o 3837.Y..o 3838*...o 3839 3840:/,-,value(45) 3841 3842abcde 3843....f 3844....g 3845.Y..h 3846*...i 3847 3848;(owl_escape_value(a)>0) + (owl_escape_value(b)>0) 3849;+(owl_escape_value(c)>0) + (owl_escape_value(d)>0) 3850;+(owl_escape_value(e)>0) + (owl_escape_value(f)>0) 3851;+(owl_escape_value(g)>0) + (owl_escape_value(h)>0) 3852;+(owl_escape_value(i)>0) < 2 3853 3854 3855Pattern A1021 3856# gf New pattern. (3.3.17) 3857 3858??O cut off from friendly stone 3859Y*X 3860?O. 3861 3862:8,-,value(45) 3863 3864??O 3865B*A 3866?O. 3867 3868;!owl_goal_dragon(A) && !oplay_connect(*,A,B) 3869 3870 3871Pattern A1022 3872# evand New pattern. (3.3.18) 3873 3874oY.O 3875..*. 3876.X.X 3877...o 3878 3879:8,C,value(55) 3880 3881oA.O 3882..*. 3883.X.B 3884...o 3885 3886;!oplay_connect(*,A,B) 3887 3888 3889Pattern A1023 3890# evand New pattern. (3.3.18) 3891 3892?Xx? 3893O*.? 3894?..? 3895xYxx 3896 3897:8,C,value(45) 3898 3899?Bx? 3900O*a? 3901?..? 3902xCxx 3903 3904;oplay_disconnect(*,a,B,C) 3905 3906 3907Pattern A1024a 3908# gf New pattern. (3.5.4) 3909# gf Revised pattern. (3.7.3) 3910# Converse to D1386a 3911 3912YO.? connect along edge to strong dragon 3913x*.X 3914---- 3915 3916:8,CEb,value(90) 3917 3918AO.? 3919x*.B 3920---- 3921 3922;owl_strong_dragon(B) && !xplay_disconnect(*,A,B) 3923 3924 3925Pattern A1024b 3926# gf New pattern. (3.5.4) 3927# Converse to D1386a 3928 3929XO.o connect along edge to strong dragon 3930x*.Y 3931---- 3932 3933:8,Eb,value(90) 3934 3935BO.o 3936x*.A 3937---- 3938 3939;owl_strong_dragon(B) && !xplay_disconnect(*,A,B) 3940 3941 3942######################################################### 3943# # 3944# Reinforce the perimeter # 3945# # 3946######################################################### 3947# # 3948# Patterns where the perimeter is already in place # 3949# but has a defect which needs repair. # 3950# # 3951######################################################### 3952 3953 3954Pattern A1100 3955#tm New Pattern (3.1.22) (see pattern D1100) 3956# gf Fixed diagram inconsistency. (3.1.23) 3957 3958XO defend connect out 3959.* 3960OY 3961 3962:8,-,value(90) 3963 3964cb 3965a* 3966OY 3967 3968;owl_escape_value(c)>0 && xplay_attack_either(*,a,a,b) 3969 3970 3971Pattern A1101 3972 3973... 3974O*O 3975?Y? 3976 3977:|,-,value(93) 3978 3979.a. 3980b*c 3981?Y? 3982 3983; xplay_break_through(*,a,b,a,c) == WIN 3984 3985 3986Pattern A1101b 3987 3988... 3989O*O 3990?Y? 3991 3992:|,-,value(94) 3993 3994.a. 3995b*c 3996?Y? 3997 3998; lib(b)<=4 && lib(c)<=4 && xplay_break_through(*,a,b,a,c) == WIN 3999 4000 4001Pattern A1101c 4002# New Pattern (before 3.1.20 - when?) 4003# see strategy3:150 for wasted move. 4004# see also lazarus:5 4005# tm Modified (3.1.22) 4006 4007O*O connect against threat 4008?Y? 4009 4010:8,-,value(81) 4011 4012A*B 4013?Y? 4014 4015; vital_chain(A) && vital_chain(B) 4016; && !xplay_defend_both(*,A,B) 4017 4018 4019Pattern A1102 4020 4021..X 4022O*O 4023?Y? 4024 4025:8,C,value(95) 4026 4027baX 4028c*O 4029?Y? 4030 4031;!xplay_defend_both(*,a,b,a,c) 4032 4033 4034Pattern A1104 4035 4036OYO connect to prevent double atari 4037XO* 4038... 4039 4040:8,C,value(85) 4041 4042OYB 4043AO* 4044.a. 4045 4046; xplay_attack(*,a,B) && !oplay_defend(*,A) 4047 4048 4049Pattern A1105 4050# gf Added n classification. (3.3.20) 4051 4052O.. 4053XO* connect against double threat 4054xYO 4055x.. 4056--- 4057 4058:8,Cn,value(85) 4059 4060Oa. 4061XO* 4062xAb 4063x.. 4064--- 4065 4066;!attack(A) && xplay_attack(*,a,b) 4067 4068 4069Pattern A1106 4070 4071OO.? 4072XOX* capture cutting stone to defend 4073xYO. 4074xx.. 4075---- 4076 4077:8,C,value(70) 4078 4079OO.? 4080XOB* 4081xAa. 4082xx.. 4083---- 4084 4085;!attack(A) && attack(a) && !oplay_defend(*,B) 4086 4087 4088# tm Moved to owl_vital_apats (3.1.17) 4089# tm copied back from owl_vital_apats (3.1.22) 4090# suspect that vital_chain works differently called from there??? -tm 4091# see 13x13:52 --decide-dragon K10 4092Pattern A1107 4093# spl never on edge (3.3.23) 4094 4095??? defend the surrounding chain 4096O*? 4097YO? 4098 4099:/,-,value(95) 4100 4101??? 4102a*? 4103Yb? 4104 4105; vital_chain(a) && vital_chain(b) 4106; && !xplay_defend_both(*,a,b) 4107 4108 4109Pattern A1107b 4110# gf New pattern. (3.1.9) 4111# tm Modified (3.1.17) - took away from edge 4112 4113?? defend the surrounding chain 4114*. 4115O. 4116YO 4117 4118:8,-,value(96) 4119 4120?? 4121*. 4122ba 4123Yc 4124 4125;lib(c)>2 && vital_chain(b) && vital_chain(c) 4126;&& oplay_attack(*,a,a) && !xplay_defend_both(a,b,c) 4127 4128# nn Removal candidate (3.3.13) 4129# Success rate in regressions : 0.9 % (23/2562) 4130 4131Pattern A1107c 4132# tm New pattern. (3.1.17) 4133# tm Modified (3.1.20) - reduced value (see nngs:320) 4134 4135.* defend the surrounding chain 4136O. 4137YO 4138 4139:8,-,value(60) 4140 4141.* 4142ba 4143Yc 4144 4145;lib(c)>2 && vital_chain(b) && vital_chain(c) 4146;&& oplay_attack(*,a,a) && !xplay_defend_both(a,b,c) 4147 4148 4149Pattern A1108 4150 4151?XO don't let defender capture to escape 4152*OY 4153 4154:8,-,value(80) 4155 4156?BO 4157*aY 4158 4159;owl_escape_value(B) > 0 && does_defend(*,a) 4160 4161 4162Pattern A1109 4163 4164?Xx?? connect underneath 4165?OYoo 4166O.*.. 4167..... 4168----- 4169 4170:8,C,value(65) 4171 4172?Xx?? 4173?cYab 4174O.*.. 4175..... 4176----- 4177 4178; o_somewhere(a,b) && attack(c) 4179 4180 4181Pattern A1110 4182 4183o..YO? connect underneath 4184O.*Ooo 4185------ 4186 4187:8,-,value(50) 4188 4189 4190Pattern A1111 4191 4192?.x..| defend bottom while emphasizing top 4193.OXX.| 4194.*OY.| 4195?..O.| 4196??...| 4197 4198:8,-,value(65) 4199 4200 4201Pattern A1112 4202# Strict speaking we should not need patterns 4203# like this 4204 4205X.*O save lunch 4206YO.. 4207.... 4208---- 4209 4210:8,-,value(50) 4211 4212X.*O 4213Ya.. 4214.... 4215---- 4216 4217; attack(a) 4218 4219 4220Pattern A1113 4221# gf New pattern. (3.1.9) 4222 4223xYO.? reinforce 4224?*..? 4225O.O.? 4226...x? 4227????? 4228 4229:8,-,value(70) 4230 4231xYO.? 4232?*..b 4233O.O.? 4234...x? 4235?a??? 4236 4237;owl_escape_value(a)>0 || owl_escape_value(b)>0 4238 4239 4240Pattern A1114 4241# gf New pattern. (3.1.9) 4242 4243xxO.? reinforce 4244?Y*.? 4245O.O.? 4246...x? 4247????? 4248 4249:8,-,value(81) 4250 4251xxO.? 4252?Y*.b 4253O.O.? 4254...x? 4255?a??? 4256 4257;owl_escape_value(a)>0 || owl_escape_value(b)>0 4258 4259 4260Pattern A1115 4261# gf New pattern. (3.1.9) 4262 4263xxO. reinforce 4264?YXO 4265O*O. 4266...x 4267 4268:8,-,value(81) 4269 4270 4271Pattern A1116 4272# gf New pattern. (3.1.9) 4273 4274?X? Reinforce 4275OYO 4276*OX 4277xxx 4278 4279:8,C,value(90) 4280 4281?X? 4282aDO 4283*bX 4284xCx 4285 4286;owl_escape_value(C)>0 && owl_goal_dragon(D) && !xplay_defend_both(*,a,b) 4287 4288 4289Pattern A1117 4290# gf New pattern. (3.1.11) 4291 4292X*O don't let defender cut and capture to escape 4293?OY 4294 4295:8,Cn,value(80) 4296 4297X*b 4298?aY 4299 4300;!xplay_defend_both(*,a,b) 4301 4302 4303Pattern A1117a 4304# Same as A1117; different anchor. 4305 4306Y*O don't let defender cut and capture to escape 4307?OX 4308 4309:8,Cn,value(80) 4310 4311Y*b 4312?aX 4313 4314;!xplay_defend_both(*,a,b) 4315 4316 4317Pattern A1118 4318# tm New pattern (3.1.17) 4319 4320YO? defend 4321OX* 4322... 4323--- 4324 4325:8,-,value(75) 4326 4327YO? 4328AX* 4329... 4330--- 4331 4332; attack(A) && !oplay_attack(*,A) 4333 4334 4335Pattern A1119 4336# tm New Pattern (3.1.17) 4337# analog to defense pattern D1348 4338# tm Modified (3.1.18) (see trevorc:100) 4339# tm Modified (3.1.22) (see trevorc:810) 4340 4341Y*? cut off escape route. 4342o.X 4343 4344:8,Cn,value(36) 4345 4346a*E 4347Dcb 4348 4349;(owl_escape_value(a)>0 || owl_escape_value(b)>0) 4350;&& ((o_somewhere(E) || x_somewhere(E)) || owl_escape_value(a) < 0) 4351;&& !oplay_attack_either(*,c,D,*,D) 4352 4353 4354Pattern A1121 4355# tm New Pattern (3.1.20) 4356# see also Pattern D1361 (both this and that are too generic) 4357# see trevorc:550, trevor:1050 4358# gf Added constraint. (3.1.32) 4359 4360O.O block to protect weakness 4361Y*. 4362?O? 4363 4364:8,C,value(35) 4365 4366a.b 4367Y*. 4368?c? 4369 4370;!same_string(a,b) && (lib(a) <= 4 || lib(b) <= 4 || lib(c) <= 4) 4371 4372 4373Pattern A1122 4374# tm New Pattern (3.1.22) 4375# see -l games/trevor/auto/d02.sgf -L 142 --decide-dragon P2 4376# gf Revised constraint. (3.7.11) 4377 4378Y. 4379*. 4380.X 4381 4382:8,-,value(75) 4383 4384a. 4385*. 4386.b 4387 4388;!owl_goal_dragon(b) && !oplay_connect(*,a,b) 4389 4390 4391Pattern A1122a 4392# same as A1122 - different anchor. 4393# gf Revised constraint. (3.7.11) 4394 4395X. 4396*. 4397.Y 4398 4399:8,-,value(75) 4400 4401a. 4402*. 4403.b 4404 4405;!owl_goal_dragon(a) && !oplay_connect(*,a,b) 4406 4407 4408Pattern A1122b 4409# gf New Pattern. (3.7.11) 4410 4411Y. 4412*. 4413.X 4414 4415:8,C,value(76) 4416 4417a. 4418*. 4419.b 4420 4421;lib(a) == 2 && !oplay_connect(*,a,b) 4422 4423 4424Pattern A1123 4425# tm New Pattern (3.1.22) (see D1376) 4426# FIXME: duplicate of A1016 4427 4428YxO? 4429o.*X 4430---- 4431 4432:8,-,value(75) 4433 4434bdE? 4435oc*a 4436---- 4437 4438; (owl_escape_value(a) > 0 || owl_escape_value(b) > 0) 4439; && xplay_attack_either(*,c,d,c,E) 4440 4441 4442Pattern A1123a 4443# Same as A1123 - different anchor. 4444 4445XxO? 4446o.*Y 4447---- 4448 4449:8,-,value(75) 4450 4451bdE? 4452oc*a 4453---- 4454 4455; (owl_escape_value(a) > 0 || owl_escape_value(b) > 0) 4456; && xplay_attack_either(*,c,d,c,E) 4457 4458 4459Pattern A1124 4460# tm New Pattern (3.1.22) (see nngs:770 decide-dragon K4) 4461# see also D1140 4462# ab Revised constraint. (3.3.10) 4463 4464?OY 4465?.* 4466??? 4467 4468:8,-,value(70) 4469 4470?AY 4471bd* 4472?c? 4473 4474;(owl_escape_value(c) > 0 4475; || owl_escape_value(b) > 0) 4476;&& oplay_defend_both(*,d,A,*) 4477 4478 4479Pattern A1124a 4480# tm New Pattern (3.1.22) (see nngs:770 decide-dragon K4) 4481# see also D1140 4482# gf Revised. Might still be too general. (3.5.4) 4483# spl revised (3.5.5) 4484 4485?OY 4486x*. 4487xxx 4488 4489:8,-,value(70) 4490 4491?AY 4492b*e 4493cdx 4494 4495;(owl_escape_value(d) > 0 4496; || owl_escape_value(b) > 0 4497; || owl_escape_value(c) > 0) 4498;&& !oplay_defend_both(e,*,A,e) 4499 4500 4501Pattern A1124b 4502# gf New pattern. (3.5.4) (see nngs:770 decide-dragon K4) 4503 4504?OY 4505x.* 4506xx? 4507 4508:8,C,value(70) 4509 4510?OA 4511be* 4512cd? 4513 4514;(owl_escape_value(d) > 0 4515; || owl_escape_value(b) > 0 4516; || owl_escape_value(c) > 0) 4517;&& xplay_connect(e,*,e,A) 4518;&& oplay_disconnect(*,e,e,A) 4519 4520 4521Pattern A1125 4522# tm New Pattern (3.1.22) (see D1118) 4523 4524xxx? defend threaten of escape 4525O*O? 4526XOYo 4527?X.? 4528 4529:8,C,value(76) 4530 4531 4532Pattern A1126 4533# tm New Pattern (3.1.23) 4534# gf Revised constraint. (3.5.3) 4535# See also D1378. 4536 4537O*O prevent breakout & attack 4538?Y? 4539 4540:|,-,value(55) 4541 4542a*b 4543?Y? 4544 4545; vital_chain(a) && vital_chain(b) 4546; && xplay_attack_either(*,a,b) && !xplay_connect(*,a,b) 4547 4548 4549Pattern A1127 4550# tm New Pattern (3.1.23) (see Pattern D1001) 4551# Note: there's no reason to cut the goal dragon up. 4552 4553O*X prevent connection 4554?YO 4555 4556:8,n,value(70) 4557 4558O*b 4559?cA 4560 4561; (attack(A) != WIN || (wormsize(A)<=2 && does_attack(*,A))) 4562; && (!owl_goal_dragon(b) || !owl_goal_dragon(c)) 4563 4564 4565Pattern A1127a 4566# Same as A1127 - different anchor. 4567 4568O*Y prevent connection 4569?XO 4570 4571:8,n,value(70) 4572 4573O*b 4574?cA 4575 4576; (attack(A) != WIN || (wormsize(A)<=2 && does_attack(*,A))) 4577; && (!owl_goal_dragon(b) || !owl_goal_dragon(c)) 4578 4579 4580Pattern A1128 4581# tm New Pattern (3.1.23) 4582# see also CB14 4583 4584OY*X cut off from home 4585X.X. 4586 4587:8,C,value(80) 4588 4589Ob*a 4590XcXd 4591 4592; owl_escape_value(a) > 0 4593; && oplay_attack(*,b) 4594; && !oplay_attack(*,c,d,d) 4595 4596 4597Pattern A1129 4598# tm New Pattern (3.1.23) (see D1123) 4599 4600xO*x stop break through 4601XYO. 4602XO.. 4603O..? 4604 4605:8,C,value(86) 4606 4607xB*x 4608XYOa 4609XO.. 4610O..? 4611 4612;xplay_attack(*,a,B) 4613 4614 4615Pattern A1130 4616# nn New pattern (3.3.11) 4617# FIXME: should be constrained 4618 4619...o? to be considered in crosscut cases like this 4620...Ox 4621.*.OX 4622..XYO 4623...o? 4624 4625:8,C,value(65) 4626 4627 4628Pattern A1131 4629# gf New pattern. (3.3.18) 4630 4631XO.Y 4632?*.? 4633---- 4634 4635:8,-,value(90) 4636 4637AO.B 4638?*.? 4639---- 4640 4641;owl_strong_dragon(A) && !xplay_disconnect(*,A,B) 4642 4643 4644Pattern A1132 4645# gf New pattern. (3.3.18) 4646 4647|.O?? save one lunch and make one a false eye 4648|OYX? 4649|*OXX 4650|..OX 4651+---- 4652 4653:8,-,value(70) 4654 4655 4656Pattern A1133a 4657# evand New pattern. (3.3.20) 4658 4659?O.Y 4660?..x 4661?.*. 4662?..O 4663???? 4664 4665:8,-,value(65) 4666 4667?O.Y 4668?..x 4669a.*. 4670b..O 4671cd?? 4672 4673;owl_escape_value(a) + owl_escape_value(b) + 4674;owl_escape_value(c) + owl_escape_value(d) > 0 4675 4676 4677Pattern A1133b 4678# evand New pattern. (3.3.20) 4679 4680?O.Y 4681?.*. 4682?... 4683?..O 4684???? 4685 4686:8,-,value(45) 4687 4688?O.Y 4689?.*. 4690a... 4691b..O 4692cd?? 4693 4694;owl_escape_value(a) + owl_escape_value(b) + 4695;owl_escape_value(c) + owl_escape_value(d) > 0 4696 4697 4698Pattern A1134 4699# pp New pattern (3.5.3). See trevorb:120. 4700# FIXME: is it better to do this algorithmically with owl boundaries? 4701# gf Added explicit anchoring. (3.5.3) 4702 4703XOY prevent escaping by capturing 4704.*O 4705--- 4706 4707:8,C,value(75) 4708 4709BOY 4710.*a 4711--- 4712 4713; lib(a) == 1 && owl_escape_value(B) > 0 4714 4715 4716Pattern A1134b 4717# gf New pattern. (3.5.3). 4718 4719YOX prevent escaping by capturing 4720.*O 4721--- 4722 4723:8,C,value(75) 4724 4725YOB 4726.*a 4727--- 4728 4729; lib(a) == 1 && owl_escape_value(B) > 0 4730 4731 4732Pattern A1134c 4733# gf New pattern. (3.5.3). 4734 4735XOY prevent escaping by capturing 4736.*O 4737--- 4738 4739:8,C,value(40) 4740 4741XOY 4742.*a 4743--- 4744 4745; lib(a) == 1 4746 4747 4748Pattern A1134d 4749# gf New pattern. (3.5.3). 4750# See 13x13b:23 4751 4752YOX prevent escaping by capturing 4753.*O 4754--- 4755 4756:8,C,value(40) 4757 4758YOX 4759.*a 4760--- 4761 4762; lib(a) == 1 4763 4764 4765Pattern A1135 4766# gf New pattern. (3.5.3) 4767 4768..OY 4769X.*. 4770---- 4771 4772:8,-,value(75) 4773 4774..OB 4775A.*. 4776---- 4777 4778;owl_escape_value(A)>0 && !xplay_disconnect(*,A,B) && !oplay_connect(*,A,B) 4779 4780 4781Pattern A1136 4782# gf New pattern. (3.5.3) 4783 4784?Y? 4785O*O 4786..? 4787?X? 4788 4789:8,-,value(75) 4790 4791?B? 4792O*O 4793..? 4794?A? 4795 4796;owl_escape_value(A)>0 && !xplay_disconnect(*,A,B) && !oplay_connect(*,A,B) 4797 4798 4799Pattern A1137 4800# gf New pattern. (3.5.3) 4801# Converse to D1125. 4802 4803xxx? 4804...x 4805.*O. 4806?YXO 4807 4808:8,-,value(79) 4809 4810abc? 4811...x 4812.*O. 4813?YXO 4814 4815;owl_escape_value(a) + owl_escape_value(b) + owl_escape_value(c) > 0 4816 4817 4818Pattern A1138 4819# gf New pattern. (3.5.5) 4820 4821xx.?? 4822xx.O? 4823..*OY 4824...X. 4825----- 4826 4827:8,-,value(30) 4828 4829 4830Pattern A1139 4831# gf New pattern. (3.5.7) 4832 4833.OYx 4834*XOX 4835o..O 4836??O? 4837 4838:8,-,value(60) 4839 4840.dYx 4841*XOX 4842oabc 4843??O? 4844 4845;oplay_attack(b,d) && oplay_attack(*,a,a) 4846;&& oplay_attack(*,b,?,a,a) && !oplay_attack(*,b,c) 4847 4848 4849Pattern A1140a 4850# gf New pattern. (3.7.4) 4851# See gunnar:73. 4852 4853?XOY 4854XO*o 4855---- 4856 4857:8,-,value(40) 4858 4859?AOB 4860XO*o 4861---- 4862 4863;owl_escape_value(A) > 0 && xplay_disconnect(*,A,B) != WIN 4864 4865 4866Pattern A1140b 4867# gf New pattern. (3.7.4) 4868# See gunnar:76. 4869 4870?YOX 4871XO*o 4872---- 4873 4874:8,-,value(40) 4875 4876?AOB 4877XO*o 4878---- 4879 4880;owl_escape_value(B) > 0 && xplay_disconnect(*,A,B) != WIN 4881 4882 4883Pattern A1141 4884# gf New Pattern. (3.7.11) 4885 4886OO? 4887Y.O 4888*.o 4889.X? 4890 4891:8,C,value(76) 4892 4893OO? 4894a.O 4895*.o 4896.b? 4897 4898;!oplay_connect(*,a,b) 4899 4900 4901Pattern A1141b 4902# gf New Pattern. (3.7.11) 4903 4904OO? 4905X.O 4906*.o 4907.Y? 4908 4909:8,C,value(76) 4910 4911OO? 4912a.O 4913*.o 4914.b? 4915 4916;!oplay_connect(*,a,b) 4917 4918 4919######################################################### 4920# # 4921# Kill or threaten a worm of the dragon # 4922# # 4923######################################################### 4924 4925 4926Pattern A1201 4927 4928?O? capture one stone to rescue 4929*YO 4930 4931:8,-,value(75) 4932 4933?a? 4934*BO 4935 4936; (lib(a)==1) && (lib(B)==1) 4937 4938 4939Pattern A1203 4940 4941?*? capture 3 stones 4942OYO 4943 4944:8,s,value(80) 4945 4946?*? 4947OAO 4948 4949;wormsize(A)>3 && lib(A)==1 4950 4951 4952Pattern A1204 4953 4954?*? capture 1 or two stones 4955OYO 4956 4957:8,s,value(30) 4958 4959?*? 4960OAO 4961 4962;wormsize(A)<=3 && lib(A)==1 && olib(*) > 1 4963 4964 4965Pattern A1205 4966 4967*Y kill one string! 4968XO 4969 4970:8,s,value(75) 4971 4972*Y 4973AO 4974 4975;wormsize(A)>3 && does_attack(*,A) 4976 4977 4978Pattern A1206 4979 4980*Y kill one string, possibly with ko! 4981XO 4982 4983:8,Cs,value(30) 4984 4985*Y 4986AO 4987 4988;wormsize(A)<=3 && does_attack(*,A) 4989;&& (olib(*) > 1 || ko(*)) 4990 4991 4992Pattern A1207 4993 4994..X attack one stone 4995.*Y 4996.XO 4997 4998:8,C,value(45) 4999 5000..X 5001.*Y 5002.AO 5003 5004; does_attack(*,A) 5005 5006 5007Pattern A1208 5008 5009?Ooo cut off one stone 5010Y..o 5011.*XO 5012.... 5013---- 5014 5015:8,C,value(40) 5016 5017 5018Pattern A1209 5019 5020OYX* 5021.O.. 5022---- 5023 5024:8,-,value(65) 5025 5026OYX* 5027.O.. 5028---- 5029 5030;owl_proper_eye(*) 5031 5032 5033Pattern A1210 5034# gf New pattern. (3.7.1) 5035# See ld_owl:318. 5036 5037?O? not always found as lunch defense 5038Y*X 5039 5040:8,-,value(65) 5041 5042?a? 5043B*C 5044 5045;attack(a) && !oplay_attack(*,a) && !oplay_defend_both(*,B,C) 5046 5047 5048######################################################### 5049# # 5050# Specific corner attacks # 5051# # 5052######################################################### 5053 5054 5055Pattern A1301 5056 5057|..o??? 5058|.Oooo? kill corner 5059|.XOO.o 5060|.XY..O 5061|...*.. 5062|...... 5063+------ 5064 5065:8,-,value(90) 5066 5067|..a??? 5068|.Oboo? 5069|.XOO.o 5070|.XY..O 5071|...*.. 5072|...... 5073+------ 5074 5075; o_somewhere(a,b) 5076 5077 5078Pattern A1302 5079 5080|..X? corner clamp, often resourceful 5081|.*YO 5082|.... 5083+---- 5084 5085:8,s,value(30) 5086 5087 5088Pattern A1303 5089#tm - modified (3.1.15) (see ld_owl:152) 5090 5091|..X? obligatory corner attack 5092|X.Yo 5093|.*.? 5094+---- 5095 5096:8,s,value(90) 5097 5098 5099Pattern A1303b 5100 5101|..X? followup 5102|X*YO 5103|.OX? 5104+---- 5105 5106:8,s,value(50) 5107 5108 5109Pattern A1303c 5110# gf New pattern. (3.5.3) 5111 5112|..X? variation 5113|XOYo 5114|.*.? 5115+---- 5116 5117:8,s,value(85) 5118 5119|..X? 5120|XaYo 5121|.*.? 5122+---- 5123 5124;defend(a) != WIN 5125 5126 5127Pattern A1304 5128# gf Revised constraint. (3.1.18) 5129 5130|.YO throw in threatening to destroy two corner eye vertices 5131|.*X 5132+--- 5133 5134:8,s,value(60) 5135 5136|bYO 5137|.*A 5138+--- 5139 5140;lib(A)==2 && !obvious_false_xeye(b) 5141 5142 5143Pattern A1305 5144 5145|XXY? try to kill corner formation 5146|.*.X 5147|...X 5148+---- 5149 5150:8,s,value(90) 5151 5152 5153Pattern A1305b 5154 5155|XY.? try to kill corner formation 5156|.*.X 5157|...X 5158+---- 5159 5160:8,s,value(35) 5161 5162 5163Pattern A1306 5164 5165|XXY? try to make ko in corner 5166|...X 5167|.*.X 5168+---- 5169 5170:8,s,value(85) 5171 5172 5173Pattern A1307 5174 5175|XxY? kill one eye 5176|.X.X 5177|.O*X 5178+---- 5179 5180:8,s,value(85) 5181 5182 5183Pattern A1308 5184 5185|Xx?? attack bent four in the corner 5186|.YXx 5187|.*.X 5188+---- 5189 5190:8,s,value(90) 5191 5192 5193Pattern A1309 5194 5195|.YxX try to damage corner eye space 5196|.*Ox 5197+---- 5198 5199:8,s,value(90) 5200 5201|bYxX 5202|.*ax 5203+---- 5204 5205;lib(a)>1 && !obvious_false_xeye(b) 5206 5207 5208Pattern A1310 5209 5210|*X.Y try to make ko or bent four in the corner 5211|.OOx 5212+---- 5213 5214:8,s,value(30) 5215 5216 5217Pattern A1310b 5218 5219|XxX? 5220|.Y.X better to kill without ko if we can 5221|*OOX 5222+---- 5223 5224:8,s,value(31) 5225 5226 5227Pattern A1311 5228 5229|.XY? 5230|XO.X set up corner ko 5231|..*. 5232+---- 5233 5234:8,s,value(80) 5235 5236 5237Pattern A1311b 5238# gf New pattern. (3.3.13) 5239 5240|.XY?? 5241|XO.XO kill without ko 5242|.*..? 5243+----- 5244 5245:8,s,value(81) 5246 5247 5248Pattern A1312 5249 5250|OX?? 5251|.YX? try to kill corner formation 5252|.*.X 5253|...x 5254+---- 5255 5256:8,s,value(35) 5257 5258 5259Pattern A1313 5260 5261|.??Ooo attack 3-3 invasion 5262|.xY.oo 5263|...*.. 5264|...... 5265+------ 5266 5267:8,-,value(50) 5268 5269 5270Pattern A1314 5271# gf Added constraint. (3.5.5) 5272 5273|x.X? sometimes correct attack in corner 5274|..YO 5275|.*.o 5276+---- 5277 5278:8,s,value(45) 5279 5280|x.X? 5281|..Ya 5282|.*.o 5283+---- 5284 5285;!attack(a) 5286 5287 5288Pattern A1315 5289 5290|.XO? attack corner eye space 5291|..Y? 5292|.X*O 5293|.... 5294+---- 5295 5296:8,-,value(55) 5297 5298 5299Pattern A1316 5300 5301|.XY? try to make ko in corner 5302|.*.X 5303|..OX 5304+---- 5305 5306:8,s,value(35) 5307 5308 5309Pattern A1317 5310 5311|..X? try to make ko in corner 5312|.XYO 5313|.*.O 5314+---- 5315 5316:8,s,value(55) 5317 5318|..A? 5319|.AAO 5320|.*.O 5321+---- 5322 5323;lib(A) == 4 && attack(A) != WIN 5324 5325 5326Pattern A1318 5327 5328|..X? create ko 5329|*XYO 5330|.OXO 5331+---- 5332 5333:8,s,value(55) 5334 5335|..A? 5336|*AAO 5337|.OXO 5338+---- 5339 5340;lib(A) == 2 && attack(A) != WIN 5341 5342 5343Pattern A1319 5344 5345|.XO? critical point, might give ko 5346|*.Y? 5347|..Xx 5348|.... 5349+---- 5350 5351:8,s,value(61) 5352 5353|.AO? 5354|*.Y? 5355|..Xx 5356|.... 5357+---- 5358 5359;!attack(A) 5360 5361 5362Pattern A1319b 5363 5364|.XO critical point, might kill 5365|O.Y 5366|*.X 5367|... 5368+--- 5369 5370:8,s,value(30) 5371 5372 5373Pattern A1319c 5374# gf New pattern. (3.1.11) 5375 5376|.XO? critical point, might give ko 5377|O.Y? 5378|X*Xx 5379|.... 5380+---- 5381 5382:8,s,value(61) 5383 5384|.AO? 5385|O.Y? 5386|X*Xx 5387|.... 5388+---- 5389 5390;!attack(A) 5391 5392 5393Pattern A1320 5394 5395|X?? try to make nakade instead of playing ko 5396|OYX 5397|*O. 5398+--- 5399 5400:8,s,value(80) 5401 5402 5403Pattern A1321 5404 5405|X?? prevent throwin for ko 5406|.YX 5407|*O. 5408+--- 5409 5410:8,s,value(45) 5411 5412 5413Pattern A1322 5414 5415|X.X sometimes correct attack point 5416|..Y 5417|.*. 5418+--- 5419 5420:8,s,value(40) 5421 5422 5423Pattern A1323 5424 5425|XXO eye stealing move might kill 5426|..Y 5427|*.X 5428|... 5429+--- 5430 5431:8,s,value(50) 5432 5433 5434Pattern A1324 5435 5436|oo??? 5437|..O.. even if another attack works, try this first 5438|...O. 5439|..Y*. 5440|..... 5441|..... 5442+----- 5443 5444:8,-,value(90) 5445 5446 5447Pattern A1325 5448# This pattern could be generalized 5449 5450OOO.| kill the eye 5451.X*.| 5452X.Y.| 5453?X..| 5454----+ 5455 5456:8,-,value(50) 5457 5458 5459Pattern A1326 5460 5461+----- block to kill 5462|..... 5463|...X* 5464|..Y.O 5465|..OO. 5466|oo??? 5467 5468:8,-,value(85) 5469 5470 5471Pattern A1327 5472 5473+----- try to kill without ko 5474|..... 5475|.*.XO 5476|..Y.O 5477|.XOO. 5478|oo??? 5479|oo??? 5480 5481:8,Cs,value(85) 5482 5483 5484Pattern A1328 5485 5486|xX?? almost certain life if defender plays here 5487|xoY? 5488|.*oX 5489|..xx 5490+---- 5491 5492:8,s,value(45) 5493 5494 5495Pattern A1329 5496 5497|X?? try to make nakade 5498|OY? 5499|*Ox 5500|Oox 5501+--- 5502 5503:8,s,value(45) 5504 5505 5506Pattern A1330 5507 5508|XX? take ko to maybe kill 5509|*YX 5510|XOX 5511|OoO 5512+--- 5513 5514:8,s,value(75) 5515 5516|AA? 5517|*AA 5518|XaA 5519|OoO 5520+--- 5521 5522;lib(A)<=3 && defend(a) != WIN 5523 5524 5525Pattern A1331 5526 5527|*Y? capture to deny X trivial life 5528|XOX 5529|O.O 5530+--- 5531 5532:8,s,value(55) 5533 5534|*Y? 5535|XOX 5536|OaO 5537+--- 5538 5539;oplay_attack(a,a) 5540 5541 5542Pattern A1332 5543 5544|xYx? make nakade or escape 5545|O.*X 5546|.X.x 5547+---- 5548 5549:8,s,value(55) 5550 5551|xYx? 5552|Oa*X 5553|.X.x 5554+---- 5555 5556;oplay_defend(*,a,*) 5557 5558 5559Pattern A1333 5560 5561|XXY? try to get ko 5562|.*.X 5563|XOOX 5564|...X 5565+---- 5566 5567:8,s,value(55) 5568 5569|XXYa 5570|.*.B 5571|XOOB 5572|...B 5573+---- 5574 5575;!x_somewhere(a) || (lib(B) <= 6) 5576 5577 5578Pattern A1334 5579 5580|XXY? try to get ko 5581|XO.X 5582|XOOX 5583|..*X 5584+---- 5585 5586:8,s,value(55) 5587 5588 5589Pattern A1335 5590 5591|..X? vital point 5592|*.YO 5593|.XOO 5594+---- 5595 5596:8,s,value(41) 5597 5598|..X? 5599|*aYb 5600|.Xbb 5601+---- 5602 5603;oplay_attack(a,a) != 0 && !oplay_attack(a,b) 5604 5605 5606Pattern A1335b 5607# gf New pattern. (3.1.1) 5608 5609|..X? vital point 5610|*OYO 5611|.X.O 5612+---- 5613 5614:8,s,value(41) 5615 5616|..X? 5617|*cYO 5618|.XaO 5619+---- 5620 5621;oplay_attack(a,c) != 0 || oplay_attack(a,a) 5622 5623 5624Pattern A1336 5625 5626|XXYO very special pattern 5627|...X 5628|*XO. 5629+---- 5630 5631:8,s,value(35) 5632 5633|XXYO 5634|acbX 5635|*Xd. 5636+---- 5637 5638;!oplay_attack(*,a,b,b) && oplay_defend(*,c,d) 5639 5640 5641Pattern A1337 5642 5643|XXx? kill without ko 5644|.OYx 5645|XOOX 5646|.*oX 5647+---- 5648 5649:8,s,value(35) 5650 5651 5652Pattern A1338 5653 5654|OOo 5655|OXO kill without ko 5656|X.X 5657|.Yx 5658|*OX 5659+--- 5660 5661:8,s,value(35) 5662 5663 5664Pattern A1339 5665 5666|xXx strange things happen at the 1-2 point 5667|X.Y 5668|.*x 5669+--- 5670 5671:8,s,value(75) 5672 5673 5674Pattern A1340 5675# gf New pattern. (3.1.13) 5676 5677|X.X? destroy eyespace 5678|.OYx 5679|.*.X 5680+---- 5681 5682:8,s,value(40) 5683 5684 5685Pattern A1341 5686# tm new pattern 3.1.13 5687# Useful for manyfaces:8 5688 5689?X?| vital corner point 5690X.X| 5691Y..| 5692X.*| 5693...| 5694---+ 5695 5696:8,s,value(40) 5697 5698 5699Pattern A1342 5700# tm new pattern (3.1.14) 5701 5702|.XO 5703|..X 5704|*.X 5705|.YX 5706|.O? 5707 5708:8,Cs,value(50) 5709 5710 5711Pattern A1343 5712# gf New pattern. (3.1.14) 5713# tm modified (3.1.15) (cho1:150) 5714 5715|xxx? destroy eyespace 5716|..YX 5717|.*.x 5718+---- 5719 5720:8,s,value(46) 5721 5722 5723Pattern A1344 5724# tm new pattern (3.1.15) (see cho1:150) 5725# This pattern shouldn't be necessary. It's definitely a vital move 5726# for the eyespace. 5727 5728XXY? consolidate or destroy eyespace 5729X.*O 5730---- 5731 5732:8,s,value(46) 5733 5734 5735Pattern A1345 5736# tm new pattern (3.1.15) (see cho1:160) 5737 5738|.X.O special corner shape 5739|.*YO 5740|...O 5741+---- 5742 5743:8,s,value(46) 5744 5745 5746Pattern A1346 5747# tm new pattern (3.1.15) (see cho1:200) 5748 5749??Xx| important 1-2 attack. 5750XY.x| 5751x.*.| 5752----+ 5753 5754:8,s,value(75) 5755 5756 5757Pattern A1347 5758# gf New pattern. (3.1.15) 5759 5760|xx? 5761|..X destroy eyespace 5762|*.Y 5763|OX? 5764+--- 5765 5766:8,s,value(35) 5767 5768 5769Pattern A1348 5770# gf New pattern. (3.1.15) 5771 5772|xX? fighting ko is only chance to kill 5773|OxX 5774|OYX 5775|X*X 5776+--- 5777 5778:8,s,value(75) 5779 5780|xX? 5781|axB 5782|aBB 5783|X*B 5784+--- 5785 5786;lib(a)==1 && lib(B)<=3 && defend(a)!=WIN 5787 5788 5789Pattern A1349a 5790# gf New pattern. (3.3.20) 5791 5792|.O? only chance to kill, sometimes tesuji 5793|.XO 5794|X.Y 5795|..X 5796|*.X 5797|.X? 5798+--- 5799 5800:8,s,value(75) 5801 5802|.O? 5803|.XO 5804|X.Y 5805|..X 5806|*.X 5807|.A? 5808+--- 5809 5810;!attack(A) 5811 5812 5813Pattern A1349b 5814# gf New pattern. (3.3.20) 5815 5816|oO? only chance to kill, sometimes tesuji 5817|OXO 5818|.XO 5819|X.Y 5820|..X 5821|*.X 5822|.X? 5823+--- 5824 5825:8,s,value(75) 5826 5827|oO? 5828|OXO 5829|.XO 5830|X.Y 5831|..X 5832|*.X 5833|.A? 5834+--- 5835 5836;!attack(A) 5837 5838 5839Pattern A1350 5840# gf New pattern. (3.3.20) 5841# See ld_owl:68. 5842 5843|XXX? try to kill without ko 5844|O.X? 5845|X.YX 5846|.*.O 5847+---- 5848 5849:8,s,value(75) 5850 5851|AAA? 5852|O.A? 5853|X.AA 5854|.*.O 5855+---- 5856 5857;lib(A)==3 5858 5859 5860Pattern A1351 5861# mh New Pattern (3.5.4) 5862# see ld_owl:406-412 5863 5864|OO?? better than capturing 5865|XOX? 5866|.Y.X 5867|*.X? 5868|..X? 5869+---- 5870 5871:8,s,value(75) 5872 5873 5874Pattern A1352a 5875# gf New pattern. (3.7.3) 5876 5877|?X?? destroy eyespace 5878|X.Y? 5879|.*YX 5880|...x 5881+---- 5882 5883:8,s,value(55) 5884 5885|?X?? 5886|XaY? 5887|.*YX 5888|...x 5889+---- 5890 5891;proper_eye(a) 5892 5893 5894Pattern A1352b 5895# gf New pattern. (3.7.3) 5896 5897|?X?? destroy eyespace 5898|X.Y? 5899|.*YX 5900|...x 5901+---- 5902 5903:8,s,value(75) 5904 5905|?X?? 5906|XaY? 5907|c*YX 5908|.b.x 5909+---- 5910 5911;proper_eye(a) && oplay_defend(*,b,c,*) 5912 5913 5914######################################################### 5915# # 5916# Invasion patterns # 5917# # 5918######################################################### 5919# # 5920# These are not ordinary owl attack patterns. # 5921# # 5922######################################################### 5923 5924 5925Pattern A1401 5926# nn Increased value a bit (3.3.12) 5927 5928Y...| don't let opponent live easily in the corner 5929.*..| 5930....| 5931....| 5932----+ 5933 5934:\,-,value(46) 5935 5936 5937Pattern A1403 5938#evand new pattern 3.3.13 5939 5940Y.O.| 5941.*..| 5942o...| 5943....| 5944----+ 5945 5946:8,-,value(55) 5947 5948 5949######################################################### 5950# # 5951# Ko patterns # 5952# # 5953######################################################### 5954 5955Pattern A1501 5956# Necessary to have one O stone in the pattern to identify the goal. 5957# The helper is reused from a similar defense pattern. 5958 5959?O fill outer liberty in two-step ko 5960Y* 5961 5962:8,-,value(35) 5963 5964?O 5965A* 5966 5967;lib(A)==2 && olib(*)>1 && finish_ko_helper(A) 5968 5969 5970Pattern A1502 5971# Necessary to have one O stone in the pattern to identify the goal. 5972# The helper is reused from a similar defense pattern. 5973 5974Y*O fill outer liberty in two-step ko 5975 5976:-,-,value(35) 5977 5978A*O 5979 5980;lib(A)==2 && olib(*)>1 && finish_ko_helper(A) 5981 5982 5983Pattern A1503 5984 5985OX? capture ko to stop escape 5986Y*X 5987OXO 5988?O? 5989 5990:8,Cs,value(75) 5991 5992OX? 5993A*B 5994OXO 5995?O? 5996 5997;owl_escape_value(A) > 0 || owl_escape_value(B) > 0 5998 5999 6000Pattern A1503a 6001#Same as 1503 - differnt anchor. 6002 6003OX? capture ko to stop escape 6004X*Y 6005OXO 6006?O? 6007 6008:8,Cs,value(75) 6009 6010OX? 6011A*B 6012OXO 6013?O? 6014 6015;owl_escape_value(A) > 0 || owl_escape_value(B) > 0 6016 6017 6018Pattern A1504 6019# nn New pattern (3.3.13) 6020# redundant, as long as A1107c isn't removed 6021 6022OXXXO threaten to take an eye by ko 6023.OY.X 6024*..X. 6025----- 6026 6027:8,-,value(60) 6028 6029OXXXa 6030bcY.X 6031*..X. 6032----- 6033 6034;!attack(a) && !xplay_defend(b,c) 6035 6036 6037######################################################### 6038# # 6039# Specific edge attacks # 6040# # 6041######################################################### 6042 6043 6044Pattern A1601 6045 6046?xx 6047Y.. 6048.*X 6049--- 6050 6051:8,s,value(35) 6052 6053?xx 6054Yac 6055b*X 6056--- 6057 6058;!safe_omove(a) && oplay_defend(*,a,*) && !oplay_attack(*,b,c,c) 6059 6060 6061Pattern A1602 6062 6063.YO? peep to destroy eyeshape 6064*.XO 6065.X.? 6066---- 6067 6068:8,Cs,value(55) 6069 6070aYO? 6071*bCO 6072.X.? 6073---- 6074 6075;!oplay_defend(*,a,b,C) 6076 6077 6078Pattern A1603 6079 6080.YO? peep to destroy eyeshape 6081*.XO 6082..X? 6083---- 6084 6085:8,Cs,value(55) 6086 6087aYO? 6088*bCO 6089..X? 6090---- 6091 6092;!oplay_defend(*,a,b,C) 6093 6094 6095Pattern A1604 6096 6097?XYO? peep to destroy eyeshape 6098O*.XO 6099..X.? 6100----- 6101 6102:8,Cs,value(55) 6103 6104?XYO? 6105O*aBO 6106..X.? 6107----- 6108 6109;!oplay_defend(*,?,a,B) 6110 6111 6112Pattern A1605 6113 6114?XYO? peep to destroy eyeshape 6115O*.XO 6116...X? 6117----- 6118 6119:8,Cs,value(55) 6120 6121?XYO? 6122O*aBO 6123...B? 6124----- 6125 6126;!oplay_defend(*,?,a,B) 6127 6128 6129Pattern A1606 6130 6131XYO? peep to destroy eyeshape 6132*.XO 6133.X.? 6134---- 6135 6136:8,Cs,value(35) 6137 6138XYO? 6139*aBO 6140.X.? 6141---- 6142 6143;!oplay_defend(*,?,a,B) 6144 6145 6146Pattern A1607 6147 6148XYO? peep to destroy eyeshape 6149*.XO 6150..X? 6151---- 6152 6153:8,s,value(35) 6154 6155XYO? 6156*aBO 6157..X? 6158---- 6159 6160;!oplay_defend(*,?,a,B) 6161 6162 6163Pattern A1608 6164 6165XYO? throw in to destroy eyespace 6166.*XO 6167.X.O 6168---- 6169 6170:8,s,value(45) 6171 6172 6173Pattern A1608b 6174 6175xXYO? atari to reduce eyespace, with further reduction as followup 6176...XO 6177..X*O 6178----- 6179 6180:8,s,value(50) 6181 6182 6183# nn Removal candidate (3.3.13) 6184# Success rate in regressions : 0% (0/35) 6185 6186Pattern A1609 6187 6188?OOY? 6189O.X.X 6190OX.*. 6191----- 6192 6193:8,s,value(35) 6194 6195 6196Pattern A1610 6197# gf New pattern. (3.1.11) 6198 6199OXYX? edge tesuji 6200X...O 6201.X.*. 6202----- 6203 6204:8,-,value(45) 6205 6206bAAA? 6207XedfO 6208.Xc*. 6209----- 6210 6211;lib(A)==3 && !attack(b) && !oplay_attack(*,c,d,e,f,f) 6212 6213 6214Pattern A1611 6215# gf New pattern. (3.1.12) 6216 6217OXYXx? edge tesuji 6218X...XO 6219..*... 6220------ 6221 6222:8,-,value(35) 6223 6224OXYXx? 6225X.edXf 6226.a*cb. 6227------ 6228 6229;oplay_attack(*,a,b,c,d,e,e) && !oplay_attack(*,f) 6230 6231 6232Pattern A1612 6233# tm New pattern (3.1.15) 6234 6235?*Y?? 6236?X.X. 6237?.X.O 6238----- 6239 6240:8,-,value(45) 6241 6242?*Y?? 6243?eDX. 6244?BXCA 6245----- 6246 6247;lib(A) > 2 && !oplay_defend(*,?,B,?,C,?,D,e) 6248 6249 6250Pattern A1613 6251# tm New Pattern (3.1.17) 6252 6253?XY? 6254XO.x 6255OX*X 6256---- 6257 6258:8,s,value(75) 6259 6260 6261######################################################### 6262# # 6263# Threats to capture # 6264# # 6265######################################################### 6266 6267 6268Pattern AC01 6269# pp New pattern (3.5.5). 6270 6271xXO threaten a snapback 6272x.Y 6273*.X 6274--- 6275 6276:8,cs, threatens_to_capture(A), value(25) 6277 6278xXB 6279x.A 6280*.A 6281--- 6282 6283; lib(A) == 2 && lib(B) > 1 && olib(*) > 1 6284 6285 6286######################################################### 6287# # 6288# Threats to destroy eyes # 6289# # 6290######################################################### 6291 6292 6293Pattern AE01 6294# pp New pattern (3.5.5). 6295 6296|OXx threaten to destroy the eye in ko 6297|X.X 6298|.Yx 6299|.*. 6300+--- 6301 6302:8,cs, threatens_eye(a), value(20) 6303 6304|BXx 6305|XaX 6306|.Yx 6307|.*. 6308+--- 6309 6310; owl_proper_eye(a) && !attack(B) 6311 6312 6313######################################################### 6314# # 6315# Reverse sente attacking moves # 6316# # 6317######################################################### 6318 6319 6320# END OF FILE 6321