permutation generator
Created by Panaiotis
© 2001 by Panaiotis. All rights reserved.
perms uses interval class transformations to generate unique permutations of unordered sets with 1 to 8 members.
| bang | in leftmost inlet: output most recent member index. | |
| int | in leftmost inlet: set index value. Triggers output of corresponding universal set member. | |
| int in1 | values 1 to 8 are used to indicate the universal set size. | |
| int in2 | interval class index. Range is 0 to MAXindex where MAXindex is determined by the universe and class size. | |
| int in3 | octave restrain. When set to 0, perms will generate index values beyond the range of a single set membership. Turning it on (1) will restrict output to modulo universe size. | |
| int in4 | bass member value. Determines which set member index the permutation class starts from. | |
| int in5 | mode or rotation. Range is 0 to maxRotations where maxRotations is determined by the universe size, class size, and array index. | |
| int in6 | normal/inverted form of the array. Has no effect if the array is non-invertible. Values are 0 (normal) and 1 (inverted). | |
| int in7 | normal/retrograde form of the array. Has no effect if the array is symmetrical. Values are 0 (normal) and 1 (retrograde). | |
| U arg1 | in left inlet. arg is the universe size. Range is 1 to 8. | |
| list | spray-type list. Like sending values to the inlets. | |
| analyze arg | In analysis mode (analyze 1), perms outputs descriptive information about the permutation each time a transformation value or set is changed (see output for details). In Performance mode (analyze 0), this information is suppressed to speed up performance. |
none
From left to right:
| perm out | generated when perms receives an integer in left inlet. Set member index | |
| interval | generated when perms receives an integer in left inlet. Interval between previous output and current. | |
| maxNdx | one less than the number of classes for a given class size. Used to set a max limit on class index input. | |
| rotations | one less than the number of unique modes or cyclic rotations for the interval array. Used to set a max limit on mode input. | |
| invertible | 0 if interval array inversion is non-unique, 1 if unique. < 1 1 1 :1 > is invertible since < -1 -1 -1 :-1 > (which is equivalent to <3 3 3 :3>) yields a unique set of permutations. | |
| symmetrical |
0 if interval array is symmetrical, 1 if asymmetrical. The first asymmetrical permutation class array is 6-2: <1 1 2 1 4 :3>. Its retrograde form <1 1 3 4 1 :2> yields a unique set of permutations. |
|
| elemAnal |
Analysis output: member value of the subset. |
|
| intrvlAnal |
Analysis output: interval between previous member and current member. |
|
| analNdx | Analysis output: member index position of the subset. |
The unordered set {$, &, ¥, %} has 24 permutations. They can be represented by 2 permutation patterns using index interval arrays:
{$, &, ¥, %} set
{0, 1, 2, 3} indexed set
4-0 < 1 1 1 :1 > yields 8 permutations
| < 1 1 1 :1 > |
< 3 3 3 :3 > |
||
| bass | 0 | 0 0, 1, 2, 3 | 0, 3, 2, 1 |
| $, &, ¥, % | $, %, ¥, & | ||
| 1 | 1 1, 2, 3, 0 |
1, 0, 3, 2 |
|
| 2 | 2 2, 3, 0, 1 |
2, 1, 0, 3 |
|
| 3 | 3 3, 0, 1, 2 |
3, 2, 1, 0 |
4-1 < 1 2 3 :2 > yields 16 permutations
| mode 0 | mode 1 | mode 2 | mode 3 | |
| <1 2 3 :2 > | <2 3 2 :1> | <3 2 1 :2> | <2 1 2 :3> | |
| bass 0 | 0, 1, 3, 2 | 0, 2, 1, 3 | 0, 3, 1, 2 | 0, 2, 3, 1 |
| bass 1 | 1, 2, 0, 3 | 1, 3, 2, 0 | 1, 0, 2, 3 | 1, 3, 0, 2 |
| * * * etc. |
Each member of the permutation set can be accessed by its index position:
A permutation of 4-1 with bass 2 in mode 1 will generate the permutation set:
{2, 0, 3, 1}, which references the objects: {¥, $, %, &}.
Input to perms:
| input | output | |
|---|---|---|
| 0 | 2 | ¥ |
| 1 | 0 | $ |
| 2 | 3 | % |
| 3 | 1 | & |
sets, perms.help, and publication Handbook of set and permutation classes by Panaiotis, which lists all permutation classes of 1 to 8 members with characterizations of each one.
Send requests to panaiotis@aol.com or Panatorium Press, 448 Banyon Tree Cir #206, Maitland FL 32751