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