如何在没有重复scala的情况下找到元组之间的所有可能组合

how to find all possible combinations between tuples without duplicates scala

假设我有元组列表:

val a = ListBuffer((1, 5), (6, 7))

更新: a中的元素假定在每个元组2中是不同的,换句话说,它可以是例如(1,4) (1,5)但不是(1,1) (2,2).

我想生成这两个元组之间 ListBuffer a 所有组合的结果,但不重复。结果将如下所示:

ListBuffer[(1,5,6), (1,5,7), (6,7,1), (6,7,5)]

更新: 结果元组 3 中的元素也是不同的。元组本身也是不同的,意味着只要 (6,7,1) 存在,那么 (1,7,6) 就不应该出现在结果元组 3 中。

如果,例如 val a = ListBuffer((1, 4), (1, 5)) 那么结果输出应该是 ListBuffer[(1,4,5)] 其中 (1,4,1) and (1,5,1) 被丢弃

我如何在 Scala 中做到这一点?

注:我只是举了个例子。通常 val a 有几十个 scala.Tuple2

如果单个元素是唯一的,正如您所评论的那样,那么您应该能够展平所有内容(非元组),获得所需的 combinations(),然后重新元组。

已更新

val a = collection.mutable.ListBuffer((1, 4), (1, 5))
a.flatMap(t => Seq(t._1, t._2))     //un-tuple
  .distinct                         //no duplicates
  .combinations(3)                  //unique sets of 3
  .map{case Seq(x,y,z) => (x,y,z)}  //re-tuple
  .toList                           //if you don't want an iterator