所有排列的列表

List of all permutations

动词 C. A. 与排列有关。
他们有非常复杂的文档。
我只想得到所有可能的排列 (n!)
例如对于元素 1 2 3

1 2 3
1 3 2 
2 1 3 
2 3 1 
3 1 2 
3 2 1

A. 的左参数是一个 list 排列索引。

A. 的右参数是要置换的列表。

初始(未置换)列表的索引为 0,它从那里开始按字典顺序 [*]。

例如:

(0) A. 'a';'b';'c'
┌─┬─┬─┐
│a│b│c│
└─┴─┴─┘

 (1 0) A. 1 2 3
1 3 2
1 2 3

(0 1 2) A. 5 1 2
5 1 2
5 2 1
1 5 2

要获得列表的 all 排列,您请求它们的所有 (! #y)(要排列的列表 y 的元素数量的阶乘) , 通过请求所有索引 0 ... (n-1): i. (! # y):

(i.!#y) A. y

[*]: 按隐含列表 i. # y 的字典顺序。也就是说,A. 总是排列简单列表 0 ... n,然后将此排列应用于您的初始列表:permutation { initial_list.