// output of ./demo/comb/perm-star-swaps-demo.cc: // Description: //% Permutations in star-transposition order (a Gray code). //% Compute swaps only. //% Algorithm by Gideon Ehrlich, as given by Knuth, //% TAOCP 4A/1, Algorithm E "Ehrlich swaps", p.337. //% Cf. OEIS sequences A123400 and A159880. arg 1: 4 == n [Number of elements to permute] default=4 0: [ . 1 2 3 ] (0, 0) [ . 1 2 3 ] 1: [ 1 . 2 3 ] (0, 1) [ 1 . 2 3 ] 2: [ 2 . 1 3 ] (0, 2) [ 1 2 . 3 ] 3: [ . 2 1 3 ] (0, 1) [ . 2 1 3 ] 4: [ 1 2 . 3 ] (0, 2) [ 2 . 1 3 ] 5: [ 2 1 . 3 ] (0, 1) [ 2 1 . 3 ] 6: [ 3 1 . 2 ] (0, 3) [ 2 1 3 . ] 7: [ . 1 3 2 ] (0, 2) [ . 1 3 2 ] 8: [ 1 . 3 2 ] (0, 1) [ 1 . 3 2 ] 9: [ 3 . 1 2 ] (0, 2) [ 1 2 3 . ] 10: [ . 3 1 2 ] (0, 1) [ . 2 3 1 ] 11: [ 1 3 . 2 ] (0, 2) [ 2 . 3 1 ] 12: [ 2 3 . 1 ] (0, 3) [ 2 3 . 1 ] 13: [ 3 2 . 1 ] (0, 1) [ 2 3 1 . ] 14: [ . 2 3 1 ] (0, 2) [ . 3 1 2 ] 15: [ 2 . 3 1 ] (0, 1) [ 1 3 . 2 ] 16: [ 3 . 2 1 ] (0, 2) [ 1 3 2 . ] 17: [ . 3 2 1 ] (0, 1) [ . 3 2 1 ] 18: [ 1 3 2 . ] (0, 3) [ 3 . 2 1 ] 19: [ 2 3 1 . ] (0, 2) [ 3 2 . 1 ] 20: [ 3 2 1 . ] (0, 1) [ 3 2 1 . ] 21: [ 1 2 3 . ] (0, 2) [ 3 . 1 2 ] 22: [ 2 1 3 . ] (0, 1) [ 3 1 . 2 ] 23: [ 3 1 2 . ] (0, 2) [ 3 1 2 . ] ct=24