reset

To solve this puzzle you must wind the string around the grey pegs in such a way that removing any single peg will allow the string to fall.
Imagine the start and finish nodes pulling on the ends of the string: the string must come free when any one peg is removed, but must not come free if no pegs are removed.

**author: Diggory Blake**

This puzzle is similar to stringy, but is a more complicated version. Now we must either grok the arXiv paper or use group theory.

To use group theory, consider the two-peg stringy problem, and label the left peg A and the right B. Now we can denote the top side of peg A `A`

and the bottom `a`

, and similarly for B. `A`

and `a`

are inverses. We then find a string such that removing all the `a`

s and `A`

s results in `B`

s and `b`

s which cancel, and the same for A, e.g. `ABab`

, not including the start and finish pegs.

To extend to multiple pegs, add further elements, `C`

and `c`

for a third peg. Now append a `C`

, and invert the preceding elements such that the removal of the `C`

causes the entire string to collapse, and finally terminate with a `c`

: `ABabCBAbac`

.

Repeating the procedure, we get the full solution for four pegs: `ABabCBAbacDCABabcBAbad`

.

All that remains is to actually construct the string interactively, like so:

You can choose any peg-label mapping (I used top-left for A, bottom-left for B, bottom-right for C, top-right for D). It may help to edit the javascript source code in `addPeg`

like so:

```
//addHoverEffect(e1, {"fill": "#888"}, {"fill": "#ff0"})
addHoverEffect(e1, {"fill": "#aaa"}, {"fill": "#ff0"})
```

so that you can keep track of which side of each peg is which, although it should be soluble without this.