我有两套
val set1 = { "A", "B", "C" }
val Set2 = { "all", "all", "all" }
//I want get this result :
result[0]={"A", "B", "C"}
result[1]={"all", "B", "C"}
result[2]={"a", "all", "C"}
...
result[n]={"all", "all", "all"}
我该怎么做这个功能。 非常感谢
答案 0 :(得分:1)
我不知道这是否是最有效的方法。您首先要压缩两个序列,因为它们的元素应始终对齐。
val seq1 = List("A", "B", "C")
val seq2 = List("all", "all", "all")
val z = seq1 zip seq2 // -> List("A" -> "all", "B" -> "all", "C" -> "all")
然后你必须找到一种方法来排列和组装(flatMap
)所有可能性:
def build[A](in: List[(A, A)]): List[List[A]] = in match {
case Nil => List(Nil)
case (a, b) :: tail =>
val tr = build(tail)
tr.flatMap(xs => List(a :: xs, b :: xs))
}
build(z).foreach(println)
// ->
// List(A, B, C)
// List(all, B, C)
// List(A, all, C)
// List(all, all, C)
// List(A, B, all)
// List(all, B, all)
// List(A, all, all)
// List(all, all, all)