How to Quickly Validate a Siteswap in Your Head

The following is an explanation of a simple method for validating siteswaps that does not involve any calculations and is ideal for doing in your head. It also gives you some helpful insight in that it tells you which throws are causing problems.

The Criterion

A sufficient criterion for a validation of any siteswap is that for every beat, the number of balls thrown equals the number of balls in your hand at that beat. For vanilla siteswaps, since at most one ball is thrown at a time, this means that no two throws can land at the same time and if a throw lands, it must be thrown again at the next beat (i.e. the next beat must contain a nonzero siteswap number).

The Re-Throw

The actual time that a given throw lands is going to depend on the jugglers dwell ratio, but for ease of understanding, we can assume that a throw of height x will land x beats after the throw. The amount of time between a throw of height x and the next throw of that same object is equal to x+1 and is independent of the dwell ratio.

The Countdown

For this validation method, each throw has to be counted backwards. Let's take a look at a countdown for a particular throw and see what it tells us. Here we have the siteswap sequence 534. For the first throw I have counted down from 5 to 0 since 5 is the height of the throw. At beat 5, countdown1 reaches 1 and object is caught. At the same time that this catch is occurring, the other hand is throwing an object at height 3. On the next beat (beat 6), countdown1 reaches 0 and the object is once again tossed into the air, this time with a height of 4. Countdown2 & 3 are for the second and third throws respectively.
Beats:      123456789
Siteswap:   534534534
Countdown1: 543210
Countdown2:  3210
Countdown3:   43210
Spotting an Invalid Siteswap

Siteswap 534 is a valid sequence. What happens if we look at an invalid siteswap? Let's take a look at 6054. You can see that countdown3 and countdown4 show that both throws are landing at the same time and are supposed to be thrown again at the same time on beat 8. Of course, the siteswap shows that only one object is to be thrown at that beat, thus the '5' from beat 3 is colliding with the '4' from beat 4.
Beats:      123456789
Siteswap:   605460546
Countdown1: 6543210
Countdown2:  0
Countdown3:   543210
Countdown4:    43210
We can recognize this collision problem without even looking at countdown4. If we just look at countdown3 and the siteswap, we can see that the '4' from the countdown matches up with the '4' in the siteswap on beat 4. Any time that a siteswap number matches up with a countdown number, you can be sure that the siteswap is invalid, and you can tell which two throws are colliding.

What happens if we collide with a zero?

Now lets look at another example: 3560. We can see here that throw '3' from beat 1 is colliding with throw '0' from beat 4. Of course, technically this is not a collision. Basically, the countdown says that the throw '3' from beat 1 is supposed to be thrown again at beat 4, but the siteswap says that there is no ball at beat 4. This is obviously a contradiction and the siteswap is invalid.
Beats:      1234
Siteswap:   3560
Countdown1: 3210
(countdown2,3&4 omitted)

Are countdowns sufficient to insure validity?

If countdown is performed for every throw in the siteswap sequence and no collisions were found, then the siteswap is most certainly valid. A countdown will only check for collisions between the throw being counted down, and all throws smaller than it. Since the larger throws are already checked against the smaller throws, the smaller ones don't need to be checked against the larger ones. So basically this method of checking all throws against all other throws without being redundant.

Refining the Process

So now you should have an idea of how to use this method to validate a siteswap sequence. There are some shortcuts that can be taken. Most notably, you do not need to countdown all the way to zero if your siteswap does not contain any zeros. You only need to count down until you reach the number that is equal to the smallest number in the siteswap sequence. After time, you should be able to notice some of these collisions automatically even before you begin any countdowns. Let's look at 3651 for example. Before you even begin your countdown on '3', you should notice right away that 6 and 5 collide with each other. You should never have two numbers next to each other in decreasing order that differ by one.


Step 1) Take note of the smallest throw in the siteswap sequence.
Step 2) For each throw, countdown from the throw height to the number from step 1 and check to see if any of the countdown numbers match up with the siteswap numbers on the same beat. If not, the siteswap is valid. Otherwise it is invalid.

That's it! It's that simple :-)

© Nathan Peterson 2002