// output of ./demo/comb/kperm-gray-demo.cc:
// Description:
//% Generate all k-permutations of n elements in minimal-change order
//%   via Gray code for falling factorial numbers, CAT algorithm.
//% Same as: k-prefixes of permutations of n elements.
//% Same as: arrangements of k out of n elements.

arg 1: 5 == n  [Total of n elements.]  default=5
arg 2: 3 == k  [Prefix length: Permutations of k elements (1<=k<=n).]  default=3
   0:    [ . 1 2 ][ 3 4 ]  (4, 3)    [ . . . . ]    [ . 1 2 3 4 ]
   1:    [ 1 . 2 ][ 3 4 ]  (0, 1)    [ 1 . . . ]    [ 1 . 2 3 4 ]
   2:    [ 2 . 1 ][ 3 4 ]  (1, 2)    [ 2 . . . ]    [ 1 2 . 3 4 ]
   3:    [ 3 . 1 ][ 2 4 ]  (2, 3)    [ 3 . . . ]    [ 1 2 3 . 4 ]
   4:    [ 4 . 1 ][ 2 3 ]  (3, 4)    [ 4 . . . ]    [ 1 2 3 4 . ]
   5:    [ 4 1 . ][ 2 3 ]  (0, 1)    [ 4 1 . . ]    [ 2 1 3 4 . ]
   6:    [ 3 1 . ][ 2 4 ]  (4, 3)    [ 3 1 . . ]    [ 2 1 3 . 4 ]
   7:    [ 2 1 . ][ 3 4 ]  (3, 2)    [ 2 1 . . ]    [ 2 1 . 3 4 ]
   8:    [ 1 2 . ][ 3 4 ]  (2, 1)    [ 1 1 . . ]    [ 2 . 1 3 4 ]
   9:    [ . 2 1 ][ 3 4 ]  (1, 0)    [ . 1 . . ]    [ . 2 1 3 4 ]
  10:    [ . 3 1 ][ 2 4 ]  (2, 3)    [ . 2 . . ]    [ . 2 3 1 4 ]
  11:    [ 1 3 . ][ 2 4 ]  (0, 1)    [ 1 2 . . ]    [ 2 . 3 1 4 ]
  12:    [ 2 3 . ][ 1 4 ]  (1, 2)    [ 2 2 . . ]    [ 2 3 . 1 4 ]
  13:    [ 3 2 . ][ 1 4 ]  (2, 3)    [ 3 2 . . ]    [ 2 3 1 . 4 ]
  14:    [ 4 2 . ][ 1 3 ]  (3, 4)    [ 4 2 . . ]    [ 2 3 1 4 . ]
  15:    [ 4 3 . ][ 1 2 ]  (2, 3)    [ 4 3 . . ]    [ 2 3 4 1 . ]
  16:    [ 3 4 . ][ 1 2 ]  (4, 3)    [ 3 3 . . ]    [ 2 3 4 . 1 ]
  17:    [ 2 4 . ][ 1 3 ]  (3, 2)    [ 2 3 . . ]    [ 2 3 . 4 1 ]
  18:    [ 1 4 . ][ 2 3 ]  (2, 1)    [ 1 3 . . ]    [ 2 . 3 4 1 ]
  19:    [ . 4 1 ][ 2 3 ]  (1, 0)    [ . 3 . . ]    [ . 2 3 4 1 ]
  20:    [ . 4 2 ][ 1 3 ]  (1, 2)    [ . 3 1 . ]    [ . 3 2 4 1 ]
  21:    [ 1 4 2 ][ . 3 ]  (0, 1)    [ 1 3 1 . ]    [ 3 . 2 4 1 ]
  22:    [ 2 4 1 ][ . 3 ]  (1, 2)    [ 2 3 1 . ]    [ 3 2 . 4 1 ]
  23:    [ 3 4 1 ][ . 2 ]  (2, 3)    [ 3 3 1 . ]    [ 3 2 4 . 1 ]
  24:    [ 4 3 1 ][ . 2 ]  (3, 4)    [ 4 3 1 . ]    [ 3 2 4 1 . ]
  25:    [ 4 2 1 ][ . 3 ]  (3, 2)    [ 4 2 1 . ]    [ 3 2 1 4 . ]
  26:    [ 3 2 1 ][ . 4 ]  (4, 3)    [ 3 2 1 . ]    [ 3 2 1 . 4 ]
  27:    [ 2 3 1 ][ . 4 ]  (3, 2)    [ 2 2 1 . ]    [ 3 2 . 1 4 ]
  28:    [ 1 3 2 ][ . 4 ]  (2, 1)    [ 1 2 1 . ]    [ 3 . 2 1 4 ]
  29:    [ . 3 2 ][ 1 4 ]  (1, 0)    [ . 2 1 . ]    [ . 3 2 1 4 ]
  30:    [ . 2 3 ][ 1 4 ]  (3, 2)    [ . 1 1 . ]    [ . 3 1 2 4 ]
  31:    [ 1 2 3 ][ . 4 ]  (0, 1)    [ 1 1 1 . ]    [ 3 . 1 2 4 ]
  32:    [ 2 1 3 ][ . 4 ]  (1, 2)    [ 2 1 1 . ]    [ 3 1 . 2 4 ]
  33:    [ 3 1 2 ][ . 4 ]  (2, 3)    [ 3 1 1 . ]    [ 3 1 2 . 4 ]
  34:    [ 4 1 2 ][ . 3 ]  (3, 4)    [ 4 1 1 . ]    [ 3 1 2 4 . ]
  35:    [ 4 . 2 ][ 1 3 ]  (1, 0)    [ 4 . 1 . ]    [ 1 3 2 4 . ]
  36:    [ 3 . 2 ][ 1 4 ]  (4, 3)    [ 3 . 1 . ]    [ 1 3 2 . 4 ]
  37:    [ 2 . 3 ][ 1 4 ]  (3, 2)    [ 2 . 1 . ]    [ 1 3 . 2 4 ]
  38:    [ 1 . 3 ][ 2 4 ]  (2, 1)    [ 1 . 1 . ]    [ 1 . 3 2 4 ]
  39:    [ . 1 3 ][ 2 4 ]  (1, 0)    [ . . 1 . ]    [ . 1 3 2 4 ]
  40:    [ . 1 4 ][ 2 3 ]  (3, 4)    [ . . 2 . ]    [ . 1 3 4 2 ]
  41:    [ 1 . 4 ][ 2 3 ]  (0, 1)    [ 1 . 2 . ]    [ 1 . 3 4 2 ]
  42:    [ 2 . 4 ][ 1 3 ]  (1, 2)    [ 2 . 2 . ]    [ 1 3 . 4 2 ]
  43:    [ 3 . 4 ][ 1 2 ]  (2, 3)    [ 3 . 2 . ]    [ 1 3 4 . 2 ]
  44:    [ 4 . 3 ][ 1 2 ]  (3, 4)    [ 4 . 2 . ]    [ 1 3 4 2 . ]
  45:    [ 4 1 3 ][ . 2 ]  (0, 1)    [ 4 1 2 . ]    [ 3 1 4 2 . ]
  46:    [ 3 1 4 ][ . 2 ]  (4, 3)    [ 3 1 2 . ]    [ 3 1 4 . 2 ]
  47:    [ 2 1 4 ][ . 3 ]  (3, 2)    [ 2 1 2 . ]    [ 3 1 . 4 2 ]
  48:    [ 1 2 4 ][ . 3 ]  (2, 1)    [ 1 1 2 . ]    [ 3 . 1 4 2 ]
  49:    [ . 2 4 ][ 1 3 ]  (1, 0)    [ . 1 2 . ]    [ . 3 1 4 2 ]
  50:    [ . 3 4 ][ 1 2 ]  (2, 3)    [ . 2 2 . ]    [ . 3 4 1 2 ]
  51:    [ 1 3 4 ][ . 2 ]  (0, 1)    [ 1 2 2 . ]    [ 3 . 4 1 2 ]
  52:    [ 2 3 4 ][ . 1 ]  (1, 2)    [ 2 2 2 . ]    [ 3 4 . 1 2 ]
  53:    [ 3 2 4 ][ . 1 ]  (2, 3)    [ 3 2 2 . ]    [ 3 4 1 . 2 ]
  54:    [ 4 2 3 ][ . 1 ]  (3, 4)    [ 4 2 2 . ]    [ 3 4 1 2 . ]
  55:    [ 4 3 2 ][ . 1 ]  (2, 3)    [ 4 3 2 . ]    [ 3 4 2 1 . ]
  56:    [ 3 4 2 ][ . 1 ]  (4, 3)    [ 3 3 2 . ]    [ 3 4 2 . 1 ]
  57:    [ 2 4 3 ][ . 1 ]  (3, 2)    [ 2 3 2 . ]    [ 3 4 . 2 1 ]
  58:    [ 1 4 3 ][ . 2 ]  (2, 1)    [ 1 3 2 . ]    [ 3 . 4 2 1 ]
  59:    [ . 4 3 ][ 1 2 ]  (1, 0)    [ . 3 2 . ]    [ . 3 4 2 1 ]
