How to generate random siteswaps
All maths in this file courtesy of Aidan Burns,
http://www.geocities.com/aidanjburns/
ASYNCHRONOUS PATTERNS
Seed a buffer of pattern_length with throws of height num_balls
Rule 1, The Downright Rule: to swap any two throws in a pattern, the
throw that moves to the right decreases with each step, and the throw
that moves to the left increases with each step. A throw may not move
if it would decrease below zero.
Rule 2, The Circular Rule: a throw may be moved from the front to the
back of a pattern.
Implemenation note: Rule 2 is implied by doing all swapping arithmetic
modulo patt_len.
SYNCHRONOUS PATTERNS
To seed the pattern:
1) Even numbers of balls go (n,n)
2) Odd numbers of balls should go ((2n-2)x,2)(2,(2n-2)x)
3) Unfortunately, that breaks down the notation at 18 throws, so use
this instead: ((n+1)x, (n-1))((n-1), (n+1)x)
Rule 3, The Handedness Rule: when you change a throws handedness, you
change its crossedness.
Rule 4, The Two Up, Two Down Rule: to swap any two throws in a synchronous
pattern, the throw that moves to the right decreases by two with each
bracket, and the throw that moves to the left increases by two with each
bracket. A throw may not move if it would decrease below zero.
Rule 2 is also still used, and is also still implied by the implemenation
MULTIPLEX PATTERNS
Multiplex patterns can be created by combining same-length patterns of
the either other two flavers. Example here is easier than anything else:
5 0 4 + ( 3 balls )
4 2 0 ( 2 balls )
-----------
[54] 2 4 ( 5 balls )
( 4 , 4 ) + ( 4 balls )
( 6x , 6x ) ( 6 balls )
-----------------
( [46x] , [46x] ) ( 10 balls )