// output of ./demo/comb/perm1-prefix-cond-demo.cc: // Description: //% Permutations with restricted prefixes. //% Knuth's "Algorithm X", section 7.2.1.2, p.334 in vol.4A1 of TAOCP. arg 1: 5 == n [Permutations of {1, 2, ..., n}] default=5 arg 2: 4 == c [Condition function: (0: empty), (1: involutions), (2: up-down), (3: indecomposable), (4: derangement), (5: no [x,x+1]) (6: distance condition)] default=4 Derangements: 1: [ 1 0 3 4 2 ] [ 1 . 1 1 ] (0, 1) (2, 3, 4) 2: [ 1 0 4 2 3 ] [ 1 . 2 . ] (0, 1) (2, 4, 3) 3: [ 1 2 0 4 3 ] [ 1 1 . 1 ] (0, 1, 2) (3, 4) 4: [ 1 2 3 4 0 ] [ 1 1 1 1 ] (0, 1, 2, 3, 4) 5: [ 1 2 4 0 3 ] [ 1 1 2 . ] (0, 1, 2, 4, 3) 6: [ 1 3 0 4 2 ] [ 1 2 . 1 ] (0, 1, 3, 4, 2) 7: [ 1 3 4 0 2 ] [ 1 2 2 . ] (0, 1, 3) (2, 4) 8: [ 1 3 4 2 0 ] [ 1 2 2 1 ] (0, 1, 3, 2, 4) 9: [ 1 4 0 2 3 ] [ 1 3 . . ] (0, 1, 4, 3, 2) 10: [ 1 4 3 0 2 ] [ 1 3 2 . ] (0, 1, 4, 2, 3) 11: [ 1 4 3 2 0 ] [ 1 3 2 1 ] (0, 1, 4) (2, 3) 12: [ 2 0 1 4 3 ] [ 2 . . 1 ] (0, 2, 1) (3, 4) 13: [ 2 0 3 4 1 ] [ 2 . 1 1 ] (0, 2, 3, 4, 1) 14: [ 2 0 4 1 3 ] [ 2 . 2 . ] (0, 2, 4, 3, 1) 15: [ 2 3 0 4 1 ] [ 2 2 . 1 ] (0, 2) (1, 3, 4) 16: [ 2 3 1 4 0 ] [ 2 2 1 1 ] (0, 2, 1, 3, 4) 17: [ 2 3 4 0 1 ] [ 2 2 2 . ] (0, 2, 4, 1, 3) 18: [ 2 3 4 1 0 ] [ 2 2 2 1 ] (0, 2, 4) (1, 3) 19: [ 2 4 0 1 3 ] [ 2 3 . . ] (0, 2) (1, 4, 3) 20: [ 2 4 1 0 3 ] [ 2 3 1 . ] (0, 2, 1, 4, 3) 21: [ 2 4 3 0 1 ] [ 2 3 2 . ] (0, 2, 3) (1, 4) 22: [ 2 4 3 1 0 ] [ 2 3 2 1 ] (0, 2, 3, 1, 4) 23: [ 3 0 1 4 2 ] [ 3 . . 1 ] (0, 3, 4, 2, 1) 24: [ 3 0 4 1 2 ] [ 3 . 2 . ] (0, 3, 1) (2, 4) 25: [ 3 0 4 2 1 ] [ 3 . 2 1 ] (0, 3, 2, 4, 1) 26: [ 3 2 0 4 1 ] [ 3 2 . 1 ] (0, 3, 4, 1, 2) 27: [ 3 2 1 4 0 ] [ 3 2 1 1 ] (0, 3, 4) (1, 2) 28: [ 3 2 4 0 1 ] [ 3 2 2 . ] (0, 3) (1, 2, 4) 29: [ 3 2 4 1 0 ] [ 3 2 2 1 ] (0, 3, 1, 2, 4) 30: [ 3 4 0 1 2 ] [ 3 3 . . ] (0, 3, 1, 4, 2) 31: [ 3 4 0 2 1 ] [ 3 3 . 1 ] (0, 3, 2) (1, 4) 32: [ 3 4 1 0 2 ] [ 3 3 1 . ] (0, 3) (1, 4, 2) 33: [ 3 4 1 2 0 ] [ 3 3 1 1 ] (0, 3, 2, 1, 4) 34: [ 4 0 1 2 3 ] [ 4 . . . ] (0, 4, 3, 2, 1) 35: [ 4 0 3 1 2 ] [ 4 . 2 . ] (0, 4, 2, 3, 1) 36: [ 4 0 3 2 1 ] [ 4 . 2 1 ] (0, 4, 1) (2, 3) 37: [ 4 2 0 1 3 ] [ 4 2 . . ] (0, 4, 3, 1, 2) 38: [ 4 2 1 0 3 ] [ 4 2 1 . ] (0, 4, 3) (1, 2) 39: [ 4 2 3 0 1 ] [ 4 2 2 . ] (0, 4, 1, 2, 3) 40: [ 4 2 3 1 0 ] [ 4 2 2 1 ] (0, 4) (1, 2, 3) 41: [ 4 3 0 1 2 ] [ 4 3 . . ] (0, 4, 2) (1, 3) 42: [ 4 3 0 2 1 ] [ 4 3 . 1 ] (0, 4, 1, 3, 2) 43: [ 4 3 1 0 2 ] [ 4 3 1 . ] (0, 4, 2, 1, 3) 44: [ 4 3 1 2 0 ] [ 4 3 1 1 ] (0, 4) (1, 3, 2) ct=44