yeah the title is click-bait-y, what I really mean is: complements of Euclidean patterns. For example:
euclid 3 8 = [1,0,0,1,0,0,1,0]
euclid 5 8 = [1,0,1,1,0,1,1,0]
Since 3 + 5 = 8, we have eight 1 events in total (over both patterns).
Now: when we shift the second pattern to the left (one step)
euclid 3 8 = [1,0,0,1,0,0,1,0]
euclidOff 5 8 7 = [0,1,1,0,1,1,0,1]
then events are disjoint (and their union is the full set). Can you prove that this always works? E.g., formalized like this:
For each 0 <= k <= n
, there exists an offset s
such that events in
euclid k n
and euclidOff (n-k) n s
are disjoint?
I think one can construct an answer from the facts that 1. Euclidean (that is, evenly spaced) sequences are essentially unique (that is, up to rotation); and 2. that Bjorklund's algorithm does produce the lexicographically smallest such sequence (I assume this is well-known - but I can't access some paywalled papers).
[EDIT] "lex. smallest" - of all rotations that start with 1.
NB - current implementation https://hackage.haskell.org/package/tidal-1.9.4/docs/src/Sound.Tidal.UI.html#_euclid computes the complementary pattern directly. The above exercise (if true) would give an alternate implementation.