在列表中§
有关例程排列,请参阅上下文中的主要文档
multi permutations(Int() --> Seq)multi permutations(Iterable --> Seq)multi method permutations(List: --> Seq)
将列表的所有可能排列作为列表的Seq
返回
.say for <a b c>.permutations;# OUTPUT:# (a b c)# (a c b)# (b a c)# (b c a)# (c a b)# (c b a)
permutations
将所有元素视为唯一,因此(1, 1, 2).permutations
返回一个包含 6 个元素的列表,即使只有三个不同的排列,因为前两个元素相同。
子例程形式的行为与方法形式相同,从其第一个参数$from
计算排列。如果$from
不是Iterable
,则将$from
强制转换为Int
,并从使用0..^$from
构建的Range
中进行选择
.say for permutations 3;# OUTPUT:# (0 1 2)# (0 2 1)# (1 0 2)# (1 2 0)# (2 0 1)# (2 1 0)
在任何§
有关方法排列,请参阅上下文中的主要文档
method permutations(|c)
通过应用其.list
方法将调用者强制转换为list
,并在其上使用List.permutations
。
say <a b c>.permutations;# OUTPUT: «((a b c) (a c b) (b a c) (b c a) (c a b) (c b a))»say set(1,2).permutations;# OUTPUT: «((2 => True 1 => True) (1 => True 2 => True))»
具有单个元素或没有元素的数据结构的排列将返回一个包含空列表或包含单个元素的列表。
say 1.permutations; # OUTPUT: «((1))»