>>  <<  Usr  Pri  JfC  LJ  Phr  Dic  Voc  !:  Help  Dictionary

24. Permutations

Anagrams are familiar examples of the important notion of permutations:
   w=: 'STOP'
   3 2 0 1 { w
POST

   2 3 1 0 { w
OPTS

   3 0 2 1 { w
PSOT
The left arguments of { above are themselves permutations of the list i.4 ; examples of permutation vectors, used to represent permutation functions in the form p&{ .

If p is a permutation vector, the phrase p&C. also represents the permutation p&{ . However, other cases of the cycle function C. are distinct from the from function { . In particular, C. p yields the cycle representation of the permutation p . For example:
   ]c=: C. p=: 2 4 0 1 3
+---+-----+
|2 0|4 3 1|
+---+-----+

   c C. 'ABCDE'                   C. c
CEABD                          2 4 0 1 3
Each of the boxed elements of a cycle specify a list of positions that cycle among themselves; in the example above, the element from position 3 moves to position 4 , element 1 moves to 3 , and element 4 to 1 .

A permutation can be identified by its index in the table of all !n permutations of order n listed in increasing order. This index is the anagram index of the permutation; the corresponding permutation is effected by the function A. as illustrated below:
   1 A. 'ABCDE'                   A. 0 1 2 4 3
ABCED                          1

   (i.!3) A. i.3                  (i.!3) A. 'ABC'
0 1 2                          ABC
0 2 1                          ACB
1 0 2                          BAC
1 2 0                          BCA
2 0 1                          CAB
2 1 0                          CBA

Exercises
24.1   Use the following as exercises in reading and writing (try on a=:'abcdef' and b=: i. 6 and c=: i. 6 6):
f=: 1&A.                       Interchange last two items
g=: 3&A.                       Rotate last three items
h=: 5&A.                       Reverse last three items
i=: <:@!@[ A. ]                k i a reverses last k items
24.2   Experiment with the following expressions and others like them to determine the rules for using abbreviated arguments to C. and compare your conclusions with the dictionary definitions:
2 1 4 C. b=:i.6
(<2 1 4) C. b
(3 1;5 0) C. b
24.3   Make a program ac that produces a table of the cycle representations of all permutations of the order of its argument, as in ac 3 .

Answer: ac=: C.@(i.@! A. i.)




>>  <<  Usr  Pri  JfC  LJ  Phr  Dic  Voc  !:  Help  Dictionary