【发布时间】:2013-11-15 02:53:07
【问题描述】:
在 Scala 中生成已知数量列表的组合非常简单。您可以使用理解:
for {
elem1 <- list1
elem2 <- list2 } yield List(elem1, elem2)
或者你可以使用脱糖版:
list1.flatMap( elem1 => list2.map(elem2 => List(elem1,elem2)))
以下套件,我想从 N 个列表中创建元素组合(N 在运行时已知)。按照组合器示例,3 个列表将是:
list1.flatMap( elem1 => list2.flatMap(elem2 => list3.map(elem3 => List(elem1,elem2,elem3)))
所以我看到了这个模式,我知道那里有一个递归,但我一直在努力确定它。
def combinations[T](lists:List[List[T]]): List[List[T]] = ???
有什么想法吗?
【问题讨论】:
-
如果你允许自己
scalaz,似乎你可以list1.replicateM[List](n)其中n是你想要的值的数量。
标签: list scala recursion combinatorics combinators