我正在尝试创建一系列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))
提前谢谢你。
答案 0 :(得分:1)
这会让你到那儿。
List.fill(4)(0 to 3).flatten.combinations(4).flatMap(_.permutations)
它会返回Iterator
,可以投放到Seq
,List
,Vector
等等。
您需要 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
以获得所有可能的重新排序。