在 Scala 中创建范围有限的列表的所有排列

creating all permutations of a list with a limited range in Scala

我正在尝试创建一个包含给定范围的所有排列的 n 元素列表序列。想要参数化元素的数量和范围。示例:

长度:4,范围:[0, 3]

Seq(List(0, 0, 0, 0), List(0, 0, 0, 1), ..., List(3, 3, 3, 3), ..., List(1, 0, 0, 0))

提前致谢。

这会让你到达那里。

List.fill(4)(0 to 3).flatten.combinations(4).flatMap(_.permutations)

它 returns 一个 Iterator 可以转换为 SeqListVector,随便什么。

您需要范围的 n 个副本,以便 combinations() 允许范围内的每个数字 n 重复。


说明

combinations 都是忽略元素的顺序,所以 (0,1) 被认为和 (1,0) 一样,只会出现其中一个。您还必须告诉它子组的大小。

permutations 就是对给定元素重新排序,所以 (2,2) 只有一个排列,它本身,而 (0,0,1) 有 3 个:(0,0,1) ( 0,1,0) (1,0,0)

combinations 创建了元素的初始分组后,每个元素都被提供给 permutations 以获得所有可能的重新排序。