既知の数のリストの組み合わせを生成することは、Scala では非常に簡単です。for-comprehension を使用できます。
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]] = ???
何か案は?