Flank

A flank is a sequence of friendly stones that are either adjacent or linked by bridges in a certain way, and with a certain amount of space on one side, for example like this:  Apart from ladders, flanks are one of the most common "long-distance" patterns occuring in Hex. They are useful for climbing, and they can be used to form large interior and edge templates.

What makes a flank useful is that its owner can use it for climbing. For example, consider the following situation, and assume the stones "B" and "J" are connected to opposite edges.  Then Red can zipper all the way from J to the cell marked "*", by a sequence of forcing moves as follows:  It is not actually necessary for Red to play moves 6, 12, and 16; Red could also skip these moves. However, they usually do not hurt and may be useful to Red by solidifying Red's position below the flank.

Intruding into the flank's bridges does not help the opponent. The flank still works even if all the bridges have been filled in: 

Definition
A flank can belong to Red or to Blue, and it can be oriented in any of the 6 cardinal directions of the Hex board (a cardinal direction is parallel to an edge or to the short diagonal). In addition, it can be facing up or down (the side it is facing is the side where the empty space is). For simplicity, the following definition refers to red flanks that are oriented left-to-right and facing upward.

Each flank has three distinguished points: a starting point, which we usually mark "A", an endpoint, which we usually mark "B", and a jumping-off point, which we mark "J". We can define flanks inductively as follows:

float="inline" edges="none" coords="none" contents="R B:a3 E J:a1" />
 * Base case: A single red stone, together with the indicated space, is a flank. In this case, the stone marked "B" is both the starting point and the endpoint. The jumping-off point "J" is also shown. F0:  F2:  F3:  Here, "−" denotes the previous endpoint, and "B" denotes the new endpoint. The orientation of these patterns matters, i.e., they cannot be rotated.
 * Induction step: A flank can be extended with any of the following patterns: F1:  We can also use algebraic notation to denote flanks. For example, we write F0+F1+F1+F3+F1+F2+F3+F1 for the above flank.

Capped flank
A flank is capped if it has been extended past its endpoint "B" with one of the following patterns: C1:  C2:  C3:  C4:  Here, "B" denotes the original endpoint of the flank. Other cap patterns are also possible; the above C1–C4 are just some common examples of caps.

Here are some examples of capped flanks. In each case, the flank's starting point "A" and original endpoint "B" are shown.

F0+F1+C1:  F0+F2+C2:  F0+F2+F2+F3+F2+C1: 

The point of capped flanks is that if Red plays at the jumping-off point "J" of any capped flank, Red can connect:



Note that climbing along a flank is a generalization of 2nd row ladders, with the cap acting as a ladder escape. Indeed, a board edge can be regarded as a straight row of stones, and is therefore a special kind of flank only made up of F1 pieces:

<hexboard size="3x9" edges="none" coords="none" visible="-i3" contents="R A:a3 b3--g3 B:h3 i2 E J:a1" />

Interior templates from capped flanks
There are several ways of constructing interior templates from capped flanks.

Method 1
The simplest method is to add a Red piece to the jumping-off point "J". Since this connects to the rest of the flank, such a group can be viewed as a (potentially very large) interior template.

Many of the named interior templates are of this form. This is the case for the crescent, trapezoid (in more than one way), scooter, bicycle, as well as the long crescent and various long trapezoids. <hexboard size="3x3" float="inline" coords="hide" edges="none" visible="-c3" contents="R J:a1 A:a3 B:b3 c2" /> <hexboard size="3x3" float="inline" coords="hide" edges="none" visible="-c3" contents="R J:a1 A:a3 B:b3 c1" /> <hexboard size="3x3" float="inline" coords="hide" edges="none" visible="-c3" contents="R J:a1 A:a3 c2 c1" /> <hexboard size="4x4" float="inline" coords="hide" edges="none" visible="area(b1,a2,a4,b4,d2,d1)" contents="R J:a2 A:a4 B:c3 d2" /> <hexboard size="4x4" float="inline" coords="hide" edges="none" visible="area(b1,a2,a4,b4,d2,d1)" contents="R J:a2 A:a4 B:c3 d1" /> <hexboard size="3x6" float="inline" coords="hide" edges="none" visible="-f3" contents="R J:a1 A:a3 b3 c3 d3 B:e3 f2" /> <hexboard size="3x6" float="inline" coords="hide" edges="none" visible="-f3" contents="R J:a1 A:a3 b3 c3 d3 B:e3 f1" /> <hexboard size="3x6" float="inline" coords="hide" edges="none" visible="-f3" contents="R J:a1 A:a3 b3 c3 B:d3 f1 f2" /> Here is a larger template constructed by the same method. <hexboard size="6x9" edges="none" coords="none" visible="area(a6,b6,e5,g4,i2,i1,g1,b3,a4)" contents="R J:a4 A:a6 c5 d5 f4 B:h3 i2" />

Method 2
Another way to construct interior templates from flanks is to combine a capped flank and the mirror image of a capped flank so that they overlap at the point "J", schematically like this: <hexboard size="3x4" float="inline" edges="none" coords="none" visible="area(c1,a3,b3,d1)" contents="E *:(c1--a3) J:d1 R A:b3" /> + <hexboard size="3x2" float="inline" edges="none" coords="none" contents="E *:(b1--b3) J:a1 R A:a3" /> = <hexboard size="3x5" float="inline" edges="none" coords="none" visible="area(c1,a3,e3,e1)" contents="E *:(c1--a3) *:(e1--e3) J:d1 x:c3 R A:b3 A:d3" /> Here, the hex "J" remains empty. The point is that if Blue plays at "x", Red plays at "J", and vice versa.

Several of the named interior templates are of this form. This is the case for the span, the box, the shopping cart, and the long span:

<hexboard size="3x4" float="inline" coords="hide" edges="none" visible="-a1 d3" contents="R a2 R A:a3 R A:c3 R d2 E J:c1 x:b3" /> <hexboard size="3x4" float="inline" coords="hide" edges="none" visible="-a1 d3" contents="R b1 R A:a3 R A:c3 R d1 E J:c1 x:b3" /> <hexboard size="3x4" float="inline" coords="hide" edges="none" visible="-a1 d3" contents="R b1 R A:a3 R A:c3 R d2 E J:c1 x:b3" /> <hexboard size="3x6" float="inline" coords="hide" edges="none" visible="-a1 f3" contents="R a2 A:a3 A:c3 d3 B:e3 f2 E J:c1 x:b3" /> Here is a larger example: <hexboard size="6x15" coords="none" edges="none" visible="area(c4,c6,i6,m4,n3,n2,k2,g4,f3,d3)" contents="R c4 B:c5 d6 A:e6 A:g6 h6 j5 l4 B:m4 n3 E x:f6 J:g4" />

Method 3
A third way to construct interior templates from flanks is to combine a capped flank with a capped flank rotated by 180 degrees, schematically like this: <hexboard size="3x2" float="inline" edges="none" coords="none" contents="E *:(a1--a3) J:b3 R A:b1" /> + <hexboard size="3x2" float="inline" edges="none" coords="none" contents="E *:(b1--b3) J:a1 R A:a3" /> = <hexboard size="3x4" float="inline" edges="none" coords="none" contents="E *:(a1--a3,d1--d3) J:b3 R A:b1 E J:c1 R A:c3" /> or like this: <hexboard size="3x2" float="inline" edges="none" coords="none" contents="E *:(a1--a3) J:b3 R A:b1" /> + <hexboard size="3x2" float="inline" edges="none" coords="none" contents="E *:(b1--b3) J:a1 R A:a3" /> = <hexboard size="4x5" float="inline" edges="none" coords="none" visible="area(a2,a4,c4,e3,e1,c1)" contents="E *:(a2--a4,e1--e3) J:b4 R A:b2 E J:d1 R A:d3" /> If Blue plays at one of the hexes marked "J", Red can play at the other to keep the group connected.

Of the named interior templates, the parallelogram and the wide parallelogram are of this form:

<hexboard size="3x4" float="inline" coords="hide" edges="none" visible="-a1 d3" contents="R a2 A:b1 A:c3 d2 E J:c1 J:b3" /> <hexboard size="4x5" float="inline" coords="hide" edges="none" visible="area(c1,a3,a4,c4,e2,e1)" contents="R A:b2 a3 A:d3 e2 E J:d1 J:b4" />

But of course, it is again possible to constuct infinitely many examples. Here is a larger example:

<hexboard size="6x10" coords="none" edges="none" visible="area(b4,b5,d5,h4,j2,j1,h1,d2,c3)" contents="R A:f4 g4 B:i3 j2 A:e2 B:c3 b4 E J:e4 J:f2" />

Edge templates from capped flanks
Not surprisingly, capped flanks (appropriately rotated and positioned) can also be used to construct edge templates. There are various schemas for doing so. We give three examples. In each schema, we show the starting point "A" and the jumping-off point "J" of the capped flank, and we indicate by "*" the direction in which the flank continues. E1: <hexboard size="3x3" float="inline" coords="none" edges="bottom" contents="R A:a2 E J:c2 *:(a1--c1)" /> E2: <hexboard size="4x5" float="inline" coords="none" edges="bottom" visible="area(b1,a4,e4,e2,d1)" contents="R A:b2 E J:d2 *:(b1--d1)" /> E3: <hexboard size="5x4" float="inline" coords="none" edges="bottom" visible="area(b1,b4,a5,d5,d1)" contents="R A:b2 b4 E J:d2 *:(b1--d1)" />

Here is an example using schema E3 and (an appropriately rotated and mirrored version of) the capped flank F0+F2+F1+F1+F2+C1: <hexboard size="11x6" coords="none" edges="bottom" visible="area(e1,c3,b7,a11,d11,e7,f3,f1)" contents="R b10 A:b8 c6 c5 c4 B:d2 e1 E J:d8" />

Usage example
The following example is from an actual game. Blue to move and win. <hexboard size="11x11" coords="show" edges="all" contents="R a2 i5 g6 e7 c9 c8 d7 e6 g5 f7 g4 e4 c6 b5 i3           B f6 h7 f8 d9 d8 d6 h3 e5 f5 h2 f3 f4 c4 b4" />

Note that Blue's central group is already connected to the left edge by double threat at e3 and c7. But how will Blue connect to the right edge? The problem is that h7 does not normally act as a 2nd row ladder escape. Blue starts at j1, then pushes the 2nd row ladder to j5 and pivots at j7. This forces Red to respond at j6. <hexboard size="11x11" coords="show" edges="all" contents="R a2 i5 g6 e7 c9 c8 d7 e6 g5 f7 g4 e4 c6 b5 i3  2:k1 4:k2 6:k3 8:k4 10:k5 12:j6            B f6 h7 f8 d9 d8 d6 h3 e5 f5 h2 f3 f4 c4 b4 1:j1 3:j2 5:j3 7:j4 9:j5 11:j7" />

Now the killer move is c10. This caps the blue flank, and the entire shaded area becomes an edge template. Blue is now connected by double threat at i6 and b10.

<hexboard size="11x11" coords="show" edges="all" contents="R a2 i5 g6 e7 c9 c8 d7 e6 g5 f7 g4 e4 c6 b5 i3 k1 k2 k3 k4 k5 j6           B f6 h7 f8 d9 d8 d6 h3 e5 f5 h2 f3 f4 c4 b4 j1 j2 j3 j4 j5 j7 13:c10            E *:i6 *:b10            S area(c11,c10,e8,g7,k6,k9,g10,e11)" />