# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# This is GNU Go, a Go program. Contact gnugo@gnu.org, or see #
# http://www.gnu.org/software/gnugo/ for more information. #
# Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, #
# 2008 and 2009 by the Free Software Foundation. #
# This program is free software; you can redistribute it and/or #
# modify it under the terms of the GNU General Public License #
# as published by the Free Software Foundation - version 3, #
# or (at your option) any later version. #
# This program is distributed in the hope that it will be #
# useful, but WITHOUT ANY WARRANTY; without even the implied #
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR #
# PURPOSE. See the GNU General Public License in file COPYING #
# You should have received a copy of the GNU General Public #
# License along with this program; if not, write to the Free #
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, #
# Boston, MA 02111, USA #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# The General Fuseki Pattern Database, fuseki.db
# Further documentation may be found in the Texinfo documentation
# First there is a pattern title of the form: Pattern [string]. The
# string is used for identifying the pattern while tuning or debugging.
# Then a block of the following characters representing the pattern
# x : your piece or empty
# If a pattern must not match at the edge of the board,
# an extra row of ?'s in the pattern may be added. (This
# will not add to the time taken to check the pattern.)
# After the pattern, some supplementary information in the format:
# :trfno, classification, [values], helper_function
# These and other aspects of the pattern database are documented
# in the Texinfo documentation.
# Any line beginning with #, or any part of a line following
# whitespace is a comment.
# The patterns are classified into two different categories:
# The patterns are grouped in the file by category. New patterns
# should be added close to a similar pattern or at the end of the
# category where it belongs. When a new pattern is added, the names
# of later patterns in the category should usually not be changed.
# This can be accomplished by introducing names like F10b and so on.
######################################################################
# These patterns need to be revised.
# Various corner enclosures, kakaris, and extensions along the edges.
# These patterns are further subdivided into the following classes
# Edge extensions from corner positions
# Center extensions from wide positions
# Edge extensions combined with approach moves
# Invasions in the middle of the edge
######################################################################
|..???...ooo approach star
# Made attack dependent on extension space (3.1.25) /ab
|..???.ooo low kakari against star
|..???.oooo low kakari against star with space for extension
|.......... keima kakari against star, high handicap game
#### High (ikken taka) kakari
#### not so good in relation to the corner since the
#### 3-3 point relationship is inferior.
# Made attack dependent on extension space (3.1.25) /ab
|......... high kakari against star
|.........oo high kakari against star
|.......... high kakari against star
#### Two space high (nikken taka) kakari
# Made attack dependent on extension space (3.1.25) /ab
|......... far high kakari against star
|.........oo far high kakari against star
|.......... far high kakari against star
|....?? 3-3 point invasion
# similar to F6, but the difference makes it worthwhile to have both
|....... Low kakari against 3-4
|......... Low kakari against 3-4
|....... High kakari against 3-4
|......... High kakari against 3-4
|..???? 3-3 point invasion under 5-3
|...... 3-4 point kakari against 5-3
|...... high kakari against 5-3
|..???? 3-3 point invasion under 5-4
|...... shoulder hit on san-san
|........ ogeima approach to san-san
|..oo...... low kakari against star with space for extension
|..oo...... high kakari against star with space for extension
# The shape value is carefully chosen so that the low kakari will be
# played much more often, but not always.
|..xxX go-go invasion at san-san
; x_alive_somewhere(a) + x_alive_somewhere(b)
; + x_alive_somewhere(c) + x_alive_somewhere(d) <= 1
|...???? go-go invasion at hoshi
# I think this is suboptimal, thus the worse shape. /ab
|..?xx?? go-go invasion at komoku
|...... 5-3 approach move to go-go
|......... lower shimari is better if X can approach
|......... at 7-3 (left of a) too easily
|...O.. defend corner from star
# This is a large move since it closes the corner. It
# is not large enough to warrant the j classification.
|..O... defend corner from star
|..O... defend corner from star
|..O... defend corner from star
# gf Added constraint. (3.1.22)
|....... enclosure from star
# gf New pattern. (3.1.22)
|....... enclosure from star
|..xx...... extend between two stones on 4-th line
#######################################
# Edge extensions from corner positions
#######################################
# gf Increased value. (3.1.17)
|...O......... wide extension from ikken shimari
# gf Increased value. (3.1.17)
|..O.......... wide extension from kogeima shimari
.O...... 4 space extension from 1 space jump
O.......? 4 space extension from knight's move
O........ 4 space extension from knight's move
|............. wide extension from ikken shimari
|............. wide extension from kogeima shimari
.O....... 3 space extension from 1 space jump
|...................| San ren sei!
|............ Wide extension from star
#######################################
# Center extensions from wide positions
#######################################
?????.?? jump up to claim space from 4 point extension
....... jump up to claim space from 4 point extension
...... seal the largest area
...... light reducing move
?......o stand to defend extension
; o_alive_somewhere(a,b,c,d,e,f)
# gf Added constraint. See gunnar:92. (3.7.10)
x......xx make 2 space extension on third row
; x_alive_somewhere(a,b,c,d) && !oterri(e)
......x? make 2 space extension on third row
# This should only be j or J if the O stones do not already
# have a base, t otherwise. But they usually do not
# have a base as this pattern most naturally comes up.
......o? make 3 space extension from two stones
......o? make 3 space extension from two stones
# FIXME: This seems overconcentrated. See also F406
# Probably best to remove this pattern.
...*..O? make 3 space extension from two stones
;!oterri(*) && !oterri(a)
# tm Removed (3.1.24) This is just overconcentrated.
#......o? make 2 space extension from two stones
# (see nngs:1150, nngs:1030, nngs:1230)
......?? make 2 space extension on third row
# gf Added constraint to avoid overconcentration. See 13x13:12,
?......?? 3 space high extension
; x_alive_somewhere(a,b,c,d)
# gf Made constraint diagram consistent with main diagram. (3.1.18)
# evand changed from j to t class. (3.5.2)
# It was causing too many slow moves early. See nngs4:660
; x_alive_somewhere(a,b,c,d,e,f)
# gf Revised pattern. (3.3.15)
o......xxx extend while limiting opponent
; x_alive_somewhere(a,b,c,d)
......xxx extend while limiting opponent
; x_alive_somewhere(a,b,c,d)
# gf Revised pattern. (3.3.17)
....... extend between two stones on 4-th line
......... 2 space extension is less urgent if both sides are open
|.......... Take an empty corner in high handicap games ...
|.......... ... close that corner so it stays closed ...
|............. ... make an iron pillar ...
|............. ... and jump out!
xxX..*... stabilize the side
##############################################
# Edge extensions combined with approach moves
##############################################
X...... make 2 space extension on third row combined with approach move
....... make 2 space extension on third row combined with approach move
; x_alive_somewhere(a,b,c,d)
....... prevent extension
........o block extension
;x_alive_somewhere(a,b,c)
#evand new pattern. (3.5.2)
.....o pincer a stone against a wall
;o_alive_somewhere(a,b,c) && !omoyo(e) && !omoyo(f) && !weak(G)
#evand new pattern. (3.5.2)
.......o pincer a stone against a wall
;o_alive_somewhere(a,b,c) && !omoyo(e) && !omoyo(f) && !weak(G)
#####################################
# Invasions in the middle of the edge
#####################################
X.........xx invade with space to extend in both directions
; x_alive_somewhere(a,b,c,d)
x.........xx invade with space to extend in both directions
; x_alive_somewhere(a,b,c,d)
# gf Added constraint. (3.1.22)
?.....?? invade 4 space extension
;weak(A) || weak(B) || !xmoyo(c) || !xmoyo(d)
?......? invade 5 space extension
O..O..O respond to an invasion
# This is almost an antisuji, much less a joseki move!
#..... attack to make local shape
# gf Revised and devalued. See 13x13b:26.
############################################
# Stop edge extensions from corner positions
############################################
|...X.......... stop wide extension from ikken shimari
|...X.......... stop wide extension from ikken shimari
|..X........... stop wide extension from kogeima shimari
|..X........... stop wide extension from kogeima shimari
|.............. stop wide extension from ikken shimari
|.............. stop wide extension from kogeima shimari
|...................| Invade nirensei.
|...................| Invade nirensei.
|...X.......... approach shimari and strengthen own stone
;x_alive_somewhere(a,b,c,d,e,f) && o_alive_somewhere(g,h)
|...X........... approach shimari and strengthen own stone
;x_alive_somewhere(a,b,c,d,e,f) && o_alive_somewhere(g,h)
|.............. approach shimari and strengthen own stone
;x_alive_somewhere(a,b,c,d,e,f) && x_alive_somewhere(g,h)
|..xxx.........xxx..| wariuchi
; x_somewhere(a,b,c,d,e,f,g,h,i)
|..xxx.........xxx..| wariuchi
; x_somewhere(a,b,c,d,e,f,g,h,i)
|..xxx.........xxx..| wariuchi
; x_somewhere(a,b,c,d,e,f,g,h,i)
|..xxx.........xxx..| wariuchi
; x_somewhere(a,b,c,d,e,f,g,h,i)
|..xxx.........xxx..| wariuchi
; x_somewhere(a,b,c,d,e,f,g,h,i)
......x mandatory reinforcement
......x mandatory reinforcement
######################################################################
# Corner joseki moves. Notice that the very first approach move in a
# corner is not classified as a joseki move but as a fuseki move.
# The bulk of our Joseki patterns are automatically built from
# the files patterns/*.sgf. Sometimes it is easier to add a pattern
######################################################################
|.....? hane if attached under hoshi stone
|....... don't tenuki when star is approached
|....??? don't tenuki when star is approached
|....??? don't tenuki when star is approached
|..X??? defend slide with kosumi
# gf Made pattern more specific. (3.7.1)
|........... block after 3-3 invasion
;o_somewhere(a,b,c,d,e,f)
# gf New pattern. (3.7.1)
|..X........ block after 3-3 invasion
;o_somewhere(a,b,c,d,e,f) && o_somewhere(g,h)
# gf New pattern. (3.7.1)
|..X........ block after 3-3 invasion
;o_somewhere(a,b,c,d) && o_somewhere(e,f)
|..... defend when pressed
.X...... follow up the slide with extension
|.xxx....??? cap the kogeima shimari with double wing formation
;x_alive_somewhere(a,b,c,d,e,f,g,h,i) && x_alive_somewhere(j,k,l,m,n,p,q,r,s)
|....... attach at 3-3 point
# pincer or attachment below X might be best in many cases
|...X.. follow up the slide by taking the corner
|.xx????? make life in the corner
|..X.?? sente and not aji keshi
|.xX.?? sente and not aji keshi
|..X. both attack and defense
|..X.X... knight's move to defend
|..O.O... enclose the opponent
|..X.X... don't get enclosed!
|..X.??? limit X to small life in corner
; x_alive_somewhere(a,b,c,d)
; x_alive_somewhere(a,b,c,d,e,f)
# The owl code should be able to read this out correctly now.
|.xx??? Defend correctly (leaves ko)
?..... block before cutting
|...X..... make bamboo joint
|..X...... take corner to secure group when pressed
|..X.... connect for safety
|...... atari to build up the top
|....... push again to build up the top
|...XX?? attack positively
+------- attach to defend cut
; x_alive_somewhere(a,b,c,d,e,f,g,h)
?O....?? fixing this defect is often urgent
; (!omoyo(a) || !omoyo(b)) && !attack(c)
???.....??? develop the side
------+ needed generalization of a hoshi.db pattern
+------- general hanetsugi
+------- general hanetsugi
+-------- stabilize the corner