首页 > 解决方案 > Scala:如何以所有可能的方式将列表拆分为元组

问题描述

我们有一个存放每个产品的地方。每个订单都包含一组产品。仓储工人有一辆手推车,可以容纳 N 个订单。对于订单列表,找到解决该列表的所有可能解决方案。

(我正在寻找一种算法,可以创建将列表拆分为元组的所有可能性,其中元组或元素的顺序无关紧要。)

这里以手推车最多 2 个订单 (N=2) 为例。

val orders = List(1,2,3,4)
findAllSolutions(orders, 2)
List(
    Solution(Trolley(1,2),Trolley(3,4)), 
    Solution(Trolley(1,3),Trolley(2,4)), 
    Solution(Trolley(1,4),Trolley(2,3))
)

我可以试试

def tuplelize(lst: List[Int], tplLen) = List(1,2,3,4).permutations.map(l => l.grouped(tplLen).toList)

但这会多次产生相同的结果。例如

List((1,2),(3,4))

List((2,1),(4,3))

是一样的。

一种可能是:

List(1,2,3,4).combinations(2).combinations(2).filter(_.flatten.toSet.size == 4)

但这似乎非常低效......另一个澄清事情的例子:给定的是一个List(1,2,3,4,5),我想将它拆分为最大长度为3的子列表。给出所有可能的解决方案最小数量的子列表,因此每个元素只能在解决方案中找到一次

Solution1: List(List(1,2,3),List(4,5))
Solution2: List(List(1,2,4),List(3,5))
Solution2: List(List(1,2,5),List(3,4))
...

现在一个不需要的解决方案是:

DoubleSolution: List(List(3,2,1),List(5,4))

标签: algorithmscalalisttuplescombinations

解决方案


枚举具有最小子集数量的分区,使得除了最多一个子集之外的所有子集的大小最多为M.

下面的代码执行以下操作:

给定一个不同元素的列表和一些 size M,它枚举所有类型的分区,List[List[Int]]使得:

  • 分区的每个子集(由 表示List[Int])最多包含M元素
  • 子集的数量最少
  • 最多有一个子集少于M元素

也就是说,(几乎)所有子集都有 size M,最多有一个例外。然后异常具有 size N % M,其中N是原始列表中的元素数。


解决方案

事实证明,这并不完全是微不足道的。特别是子集的大小不必除以元素的数量这一事实令人讨厌,因为它以另一种方式破坏了对称性。

这是一个由三个阶段组成的解决方案:

  1. 解决分区大小除以列表大小的情况(sameSizePartitions
  2. 解决生成任意规定大小的分区的更一般问题 ( prescribedSizePartition)
  3. maxSizePartitions预先添加一个计算规定大小并调用的瘦包装器prescribedSizePartition

所以,就是:先泛化,解决不同的特殊情况,用不同的特殊情况解决一般情况,用一般情况来实现想要的功能。

这是它的样子:

type Partition = List[List[Int]]

def sameSizePartitions(elems: List[Int], partSize: Int): List[Partition] = {
  def recHelper(unused: List[Int]): List[Partition] = {
    if (unused.size <= partSize) {
      List(List(unused))
    } else {
      val h :: t = unused
      (for {
        combination <- t.combinations(partSize - 1)
        tail <- recHelper(t filterNot combination.contains)
      } yield (h :: combination) :: tail).toList
    }
  }
  recHelper(elems)
}

/**
 * @param elems list with unique elements
 * @param sizes map (size -> numberOfPartitionsWithThisSize)
 */
def prescribedSizePartitions(elems: List[Int], sizes: Map[Int, Int]): List[Partition] = {
  if (sizes.isEmpty) {
    if (elems.isEmpty) List(Nil) 
    else throw new IllegalArgumentException("sizes empty, but elems = " + elems)
  } else {
    val (size, numberOfPartitions) = sizes.head
    val numElementsNeededForPartitionsOfThisSize = size * numberOfPartitions
    for {
      elemSelection <- elems.combinations(numElementsNeededForPartitionsOfThisSize).toList
      tailPartition <- prescribedSizePartitions(elems.filterNot(elemSelection.contains), sizes - size)
      currSizePart <- sameSizePartitions(elemSelection, size)
    } yield currSizePart ++ tailPartition
  }
}

def maxSizePartitions(elems: List[Int], maxSize: Int): List[Partition] = {
  val n = elems.size
  val ofMaxSize = n / maxSize
  val restSize = n % maxSize
  if (restSize == 0) {
    sameSizePartitions(elems, maxSize)
  } else {
    prescribedSizePartitions(elems, Map(maxSize -> ofMaxSize, restSize -> 1))
  }
}

例子:

maxSizePartitions((1 to 4).toList, 2) foreach println
maxSizePartitions((1 to 5).toList, 3) foreach println
maxSizePartitions((1 to 8).toList, 3) foreach println

输出:

List(List(1, 2), List(3, 4))
List(List(1, 3), List(2, 4))
List(List(1, 4), List(2, 3))

List(List(1, 2, 3), List(4, 5))
List(List(1, 2, 4), List(3, 5))
List(List(1, 2, 5), List(3, 4))
List(List(1, 3, 4), List(2, 5))
List(List(1, 3, 5), List(2, 4))
List(List(1, 4, 5), List(2, 3))
List(List(2, 3, 4), List(1, 5))
List(List(2, 3, 5), List(1, 4))
List(List(2, 4, 5), List(1, 3))
List(List(3, 4, 5), List(1, 2))

List(List(1, 2, 3), List(4, 5, 6), List(7, 8))
List(List(1, 2, 4), List(3, 5, 6), List(7, 8))
List(List(1, 2, 5), List(3, 4, 6), List(7, 8))
List(List(1, 2, 6), List(3, 4, 5), List(7, 8))
List(List(1, 3, 4), List(2, 5, 6), List(7, 8))
List(List(1, 3, 5), List(2, 4, 6), List(7, 8))
List(List(1, 3, 6), List(2, 4, 5), List(7, 8))
List(List(1, 4, 5), List(2, 3, 6), List(7, 8))
List(List(1, 4, 6), List(2, 3, 5), List(7, 8))
List(List(1, 5, 6), List(2, 3, 4), List(7, 8))
List(List(1, 2, 3), List(4, 5, 7), List(6, 8))
List(List(1, 2, 4), List(3, 5, 7), List(6, 8))
List(List(1, 2, 5), List(3, 4, 7), List(6, 8))
List(List(1, 2, 7), List(3, 4, 5), List(6, 8))
List(List(1, 3, 4), List(2, 5, 7), List(6, 8))
List(List(1, 3, 5), List(2, 4, 7), List(6, 8))
List(List(1, 3, 7), List(2, 4, 5), List(6, 8))
List(List(1, 4, 5), List(2, 3, 7), List(6, 8))
List(List(1, 4, 7), List(2, 3, 5), List(6, 8))
List(List(1, 5, 7), List(2, 3, 4), List(6, 8))
List(List(1, 2, 3), List(4, 5, 8), List(6, 7))
List(List(1, 2, 4), List(3, 5, 8), List(6, 7))
List(List(1, 2, 5), List(3, 4, 8), List(6, 7))
List(List(1, 2, 8), List(3, 4, 5), List(6, 7))
List(List(1, 3, 4), List(2, 5, 8), List(6, 7))
List(List(1, 3, 5), List(2, 4, 8), List(6, 7))
List(List(1, 3, 8), List(2, 4, 5), List(6, 7))
List(List(1, 4, 5), List(2, 3, 8), List(6, 7))
List(List(1, 4, 8), List(2, 3, 5), List(6, 7))
List(List(1, 5, 8), List(2, 3, 4), List(6, 7))
List(List(1, 2, 3), List(4, 6, 7), List(5, 8))
List(List(1, 2, 4), List(3, 6, 7), List(5, 8))
List(List(1, 2, 6), List(3, 4, 7), List(5, 8))
List(List(1, 2, 7), List(3, 4, 6), List(5, 8))
List(List(1, 3, 4), List(2, 6, 7), List(5, 8))
List(List(1, 3, 6), List(2, 4, 7), List(5, 8))
List(List(1, 3, 7), List(2, 4, 6), List(5, 8))
List(List(1, 4, 6), List(2, 3, 7), List(5, 8))
List(List(1, 4, 7), List(2, 3, 6), List(5, 8))
List(List(1, 6, 7), List(2, 3, 4), List(5, 8))
List(List(1, 2, 3), List(4, 6, 8), List(5, 7))
List(List(1, 2, 4), List(3, 6, 8), List(5, 7))
List(List(1, 2, 6), List(3, 4, 8), List(5, 7))
List(List(1, 2, 8), List(3, 4, 6), List(5, 7))
List(List(1, 3, 4), List(2, 6, 8), List(5, 7))
List(List(1, 3, 6), List(2, 4, 8), List(5, 7))
List(List(1, 3, 8), List(2, 4, 6), List(5, 7))
List(List(1, 4, 6), List(2, 3, 8), List(5, 7))
List(List(1, 4, 8), List(2, 3, 6), List(5, 7))
List(List(1, 6, 8), List(2, 3, 4), List(5, 7))
List(List(1, 2, 3), List(4, 7, 8), List(5, 6))
List(List(1, 2, 4), List(3, 7, 8), List(5, 6))
List(List(1, 2, 7), List(3, 4, 8), List(5, 6))
List(List(1, 2, 8), List(3, 4, 7), List(5, 6))
List(List(1, 3, 4), List(2, 7, 8), List(5, 6))
List(List(1, 3, 7), List(2, 4, 8), List(5, 6))
List(List(1, 3, 8), List(2, 4, 7), List(5, 6))
List(List(1, 4, 7), List(2, 3, 8), List(5, 6))
List(List(1, 4, 8), List(2, 3, 7), List(5, 6))
List(List(1, 7, 8), List(2, 3, 4), List(5, 6))
List(List(1, 2, 3), List(5, 6, 7), List(4, 8))
List(List(1, 2, 5), List(3, 6, 7), List(4, 8))
List(List(1, 2, 6), List(3, 5, 7), List(4, 8))
List(List(1, 2, 7), List(3, 5, 6), List(4, 8))
List(List(1, 3, 5), List(2, 6, 7), List(4, 8))
List(List(1, 3, 6), List(2, 5, 7), List(4, 8))
List(List(1, 3, 7), List(2, 5, 6), List(4, 8))
List(List(1, 5, 6), List(2, 3, 7), List(4, 8))
List(List(1, 5, 7), List(2, 3, 6), List(4, 8))
List(List(1, 6, 7), List(2, 3, 5), List(4, 8))
List(List(1, 2, 3), List(5, 6, 8), List(4, 7))
List(List(1, 2, 5), List(3, 6, 8), List(4, 7))
List(List(1, 2, 6), List(3, 5, 8), List(4, 7))
List(List(1, 2, 8), List(3, 5, 6), List(4, 7))
List(List(1, 3, 5), List(2, 6, 8), List(4, 7))
List(List(1, 3, 6), List(2, 5, 8), List(4, 7))
List(List(1, 3, 8), List(2, 5, 6), List(4, 7))
List(List(1, 5, 6), List(2, 3, 8), List(4, 7))
List(List(1, 5, 8), List(2, 3, 6), List(4, 7))
List(List(1, 6, 8), List(2, 3, 5), List(4, 7))
List(List(1, 2, 3), List(5, 7, 8), List(4, 6))
List(List(1, 2, 5), List(3, 7, 8), List(4, 6))
List(List(1, 2, 7), List(3, 5, 8), List(4, 6))
List(List(1, 2, 8), List(3, 5, 7), List(4, 6))
List(List(1, 3, 5), List(2, 7, 8), List(4, 6))
List(List(1, 3, 7), List(2, 5, 8), List(4, 6))
List(List(1, 3, 8), List(2, 5, 7), List(4, 6))
List(List(1, 5, 7), List(2, 3, 8), List(4, 6))
List(List(1, 5, 8), List(2, 3, 7), List(4, 6))
List(List(1, 7, 8), List(2, 3, 5), List(4, 6))
List(List(1, 2, 3), List(6, 7, 8), List(4, 5))
List(List(1, 2, 6), List(3, 7, 8), List(4, 5))
List(List(1, 2, 7), List(3, 6, 8), List(4, 5))
List(List(1, 2, 8), List(3, 6, 7), List(4, 5))
List(List(1, 3, 6), List(2, 7, 8), List(4, 5))
List(List(1, 3, 7), List(2, 6, 8), List(4, 5))
List(List(1, 3, 8), List(2, 6, 7), List(4, 5))
List(List(1, 6, 7), List(2, 3, 8), List(4, 5))
List(List(1, 6, 8), List(2, 3, 7), List(4, 5))
List(List(1, 7, 8), List(2, 3, 6), List(4, 5))
List(List(1, 2, 4), List(5, 6, 7), List(3, 8))
List(List(1, 2, 5), List(4, 6, 7), List(3, 8))
List(List(1, 2, 6), List(4, 5, 7), List(3, 8))
List(List(1, 2, 7), List(4, 5, 6), List(3, 8))
List(List(1, 4, 5), List(2, 6, 7), List(3, 8))
List(List(1, 4, 6), List(2, 5, 7), List(3, 8))
List(List(1, 4, 7), List(2, 5, 6), List(3, 8))
List(List(1, 5, 6), List(2, 4, 7), List(3, 8))
List(List(1, 5, 7), List(2, 4, 6), List(3, 8))
List(List(1, 6, 7), List(2, 4, 5), List(3, 8))
List(List(1, 2, 4), List(5, 6, 8), List(3, 7))
List(List(1, 2, 5), List(4, 6, 8), List(3, 7))
List(List(1, 2, 6), List(4, 5, 8), List(3, 7))
List(List(1, 2, 8), List(4, 5, 6), List(3, 7))
List(List(1, 4, 5), List(2, 6, 8), List(3, 7))
List(List(1, 4, 6), List(2, 5, 8), List(3, 7))
List(List(1, 4, 8), List(2, 5, 6), List(3, 7))
List(List(1, 5, 6), List(2, 4, 8), List(3, 7))
List(List(1, 5, 8), List(2, 4, 6), List(3, 7))
List(List(1, 6, 8), List(2, 4, 5), List(3, 7))
List(List(1, 2, 4), List(5, 7, 8), List(3, 6))
List(List(1, 2, 5), List(4, 7, 8), List(3, 6))
List(List(1, 2, 7), List(4, 5, 8), List(3, 6))
List(List(1, 2, 8), List(4, 5, 7), List(3, 6))
List(List(1, 4, 5), List(2, 7, 8), List(3, 6))
List(List(1, 4, 7), List(2, 5, 8), List(3, 6))
List(List(1, 4, 8), List(2, 5, 7), List(3, 6))
List(List(1, 5, 7), List(2, 4, 8), List(3, 6))
List(List(1, 5, 8), List(2, 4, 7), List(3, 6))
List(List(1, 7, 8), List(2, 4, 5), List(3, 6))
List(List(1, 2, 4), List(6, 7, 8), List(3, 5))
List(List(1, 2, 6), List(4, 7, 8), List(3, 5))
List(List(1, 2, 7), List(4, 6, 8), List(3, 5))
List(List(1, 2, 8), List(4, 6, 7), List(3, 5))
List(List(1, 4, 6), List(2, 7, 8), List(3, 5))
List(List(1, 4, 7), List(2, 6, 8), List(3, 5))
List(List(1, 4, 8), List(2, 6, 7), List(3, 5))
List(List(1, 6, 7), List(2, 4, 8), List(3, 5))
List(List(1, 6, 8), List(2, 4, 7), List(3, 5))
List(List(1, 7, 8), List(2, 4, 6), List(3, 5))
List(List(1, 2, 5), List(6, 7, 8), List(3, 4))
List(List(1, 2, 6), List(5, 7, 8), List(3, 4))
List(List(1, 2, 7), List(5, 6, 8), List(3, 4))
List(List(1, 2, 8), List(5, 6, 7), List(3, 4))
List(List(1, 5, 6), List(2, 7, 8), List(3, 4))
List(List(1, 5, 7), List(2, 6, 8), List(3, 4))
List(List(1, 5, 8), List(2, 6, 7), List(3, 4))
List(List(1, 6, 7), List(2, 5, 8), List(3, 4))
List(List(1, 6, 8), List(2, 5, 7), List(3, 4))
List(List(1, 7, 8), List(2, 5, 6), List(3, 4))
List(List(1, 3, 4), List(5, 6, 7), List(2, 8))
List(List(1, 3, 5), List(4, 6, 7), List(2, 8))
List(List(1, 3, 6), List(4, 5, 7), List(2, 8))
List(List(1, 3, 7), List(4, 5, 6), List(2, 8))
List(List(1, 4, 5), List(3, 6, 7), List(2, 8))
List(List(1, 4, 6), List(3, 5, 7), List(2, 8))
List(List(1, 4, 7), List(3, 5, 6), List(2, 8))
List(List(1, 5, 6), List(3, 4, 7), List(2, 8))
List(List(1, 5, 7), List(3, 4, 6), List(2, 8))
List(List(1, 6, 7), List(3, 4, 5), List(2, 8))
List(List(1, 3, 4), List(5, 6, 8), List(2, 7))
List(List(1, 3, 5), List(4, 6, 8), List(2, 7))
List(List(1, 3, 6), List(4, 5, 8), List(2, 7))
List(List(1, 3, 8), List(4, 5, 6), List(2, 7))
List(List(1, 4, 5), List(3, 6, 8), List(2, 7))
List(List(1, 4, 6), List(3, 5, 8), List(2, 7))
List(List(1, 4, 8), List(3, 5, 6), List(2, 7))
List(List(1, 5, 6), List(3, 4, 8), List(2, 7))
List(List(1, 5, 8), List(3, 4, 6), List(2, 7))
List(List(1, 6, 8), List(3, 4, 5), List(2, 7))
List(List(1, 3, 4), List(5, 7, 8), List(2, 6))
List(List(1, 3, 5), List(4, 7, 8), List(2, 6))
List(List(1, 3, 7), List(4, 5, 8), List(2, 6))
List(List(1, 3, 8), List(4, 5, 7), List(2, 6))
List(List(1, 4, 5), List(3, 7, 8), List(2, 6))
List(List(1, 4, 7), List(3, 5, 8), List(2, 6))
List(List(1, 4, 8), List(3, 5, 7), List(2, 6))
List(List(1, 5, 7), List(3, 4, 8), List(2, 6))
List(List(1, 5, 8), List(3, 4, 7), List(2, 6))
List(List(1, 7, 8), List(3, 4, 5), List(2, 6))
List(List(1, 3, 4), List(6, 7, 8), List(2, 5))
List(List(1, 3, 6), List(4, 7, 8), List(2, 5))
List(List(1, 3, 7), List(4, 6, 8), List(2, 5))
List(List(1, 3, 8), List(4, 6, 7), List(2, 5))
List(List(1, 4, 6), List(3, 7, 8), List(2, 5))
List(List(1, 4, 7), List(3, 6, 8), List(2, 5))
List(List(1, 4, 8), List(3, 6, 7), List(2, 5))
List(List(1, 6, 7), List(3, 4, 8), List(2, 5))
List(List(1, 6, 8), List(3, 4, 7), List(2, 5))
List(List(1, 7, 8), List(3, 4, 6), List(2, 5))
List(List(1, 3, 5), List(6, 7, 8), List(2, 4))
List(List(1, 3, 6), List(5, 7, 8), List(2, 4))
List(List(1, 3, 7), List(5, 6, 8), List(2, 4))
List(List(1, 3, 8), List(5, 6, 7), List(2, 4))
List(List(1, 5, 6), List(3, 7, 8), List(2, 4))
List(List(1, 5, 7), List(3, 6, 8), List(2, 4))
List(List(1, 5, 8), List(3, 6, 7), List(2, 4))
List(List(1, 6, 7), List(3, 5, 8), List(2, 4))
List(List(1, 6, 8), List(3, 5, 7), List(2, 4))
List(List(1, 7, 8), List(3, 5, 6), List(2, 4))
List(List(1, 4, 5), List(6, 7, 8), List(2, 3))
List(List(1, 4, 6), List(5, 7, 8), List(2, 3))
List(List(1, 4, 7), List(5, 6, 8), List(2, 3))
List(List(1, 4, 8), List(5, 6, 7), List(2, 3))
List(List(1, 5, 6), List(4, 7, 8), List(2, 3))
List(List(1, 5, 7), List(4, 6, 8), List(2, 3))
List(List(1, 5, 8), List(4, 6, 7), List(2, 3))
List(List(1, 6, 7), List(4, 5, 8), List(2, 3))
List(List(1, 6, 8), List(4, 5, 7), List(2, 3))
List(List(1, 7, 8), List(4, 5, 6), List(2, 3))
List(List(2, 3, 4), List(5, 6, 7), List(1, 8))
List(List(2, 3, 5), List(4, 6, 7), List(1, 8))
List(List(2, 3, 6), List(4, 5, 7), List(1, 8))
List(List(2, 3, 7), List(4, 5, 6), List(1, 8))
List(List(2, 4, 5), List(3, 6, 7), List(1, 8))
List(List(2, 4, 6), List(3, 5, 7), List(1, 8))
List(List(2, 4, 7), List(3, 5, 6), List(1, 8))
List(List(2, 5, 6), List(3, 4, 7), List(1, 8))
List(List(2, 5, 7), List(3, 4, 6), List(1, 8))
List(List(2, 6, 7), List(3, 4, 5), List(1, 8))
List(List(2, 3, 4), List(5, 6, 8), List(1, 7))
List(List(2, 3, 5), List(4, 6, 8), List(1, 7))
List(List(2, 3, 6), List(4, 5, 8), List(1, 7))
List(List(2, 3, 8), List(4, 5, 6), List(1, 7))
List(List(2, 4, 5), List(3, 6, 8), List(1, 7))
List(List(2, 4, 6), List(3, 5, 8), List(1, 7))
List(List(2, 4, 8), List(3, 5, 6), List(1, 7))
List(List(2, 5, 6), List(3, 4, 8), List(1, 7))
List(List(2, 5, 8), List(3, 4, 6), List(1, 7))
List(List(2, 6, 8), List(3, 4, 5), List(1, 7))
List(List(2, 3, 4), List(5, 7, 8), List(1, 6))
List(List(2, 3, 5), List(4, 7, 8), List(1, 6))
List(List(2, 3, 7), List(4, 5, 8), List(1, 6))
List(List(2, 3, 8), List(4, 5, 7), List(1, 6))
List(List(2, 4, 5), List(3, 7, 8), List(1, 6))
List(List(2, 4, 7), List(3, 5, 8), List(1, 6))
List(List(2, 4, 8), List(3, 5, 7), List(1, 6))
List(List(2, 5, 7), List(3, 4, 8), List(1, 6))
List(List(2, 5, 8), List(3, 4, 7), List(1, 6))
List(List(2, 7, 8), List(3, 4, 5), List(1, 6))
List(List(2, 3, 4), List(6, 7, 8), List(1, 5))
List(List(2, 3, 6), List(4, 7, 8), List(1, 5))
List(List(2, 3, 7), List(4, 6, 8), List(1, 5))
List(List(2, 3, 8), List(4, 6, 7), List(1, 5))
List(List(2, 4, 6), List(3, 7, 8), List(1, 5))
List(List(2, 4, 7), List(3, 6, 8), List(1, 5))
List(List(2, 4, 8), List(3, 6, 7), List(1, 5))
List(List(2, 6, 7), List(3, 4, 8), List(1, 5))
List(List(2, 6, 8), List(3, 4, 7), List(1, 5))
List(List(2, 7, 8), List(3, 4, 6), List(1, 5))
List(List(2, 3, 5), List(6, 7, 8), List(1, 4))
List(List(2, 3, 6), List(5, 7, 8), List(1, 4))
List(List(2, 3, 7), List(5, 6, 8), List(1, 4))
List(List(2, 3, 8), List(5, 6, 7), List(1, 4))
List(List(2, 5, 6), List(3, 7, 8), List(1, 4))
List(List(2, 5, 7), List(3, 6, 8), List(1, 4))
List(List(2, 5, 8), List(3, 6, 7), List(1, 4))
List(List(2, 6, 7), List(3, 5, 8), List(1, 4))
List(List(2, 6, 8), List(3, 5, 7), List(1, 4))
List(List(2, 7, 8), List(3, 5, 6), List(1, 4))
List(List(2, 4, 5), List(6, 7, 8), List(1, 3))
List(List(2, 4, 6), List(5, 7, 8), List(1, 3))
List(List(2, 4, 7), List(5, 6, 8), List(1, 3))
List(List(2, 4, 8), List(5, 6, 7), List(1, 3))
List(List(2, 5, 6), List(4, 7, 8), List(1, 3))
List(List(2, 5, 7), List(4, 6, 8), List(1, 3))
List(List(2, 5, 8), List(4, 6, 7), List(1, 3))
List(List(2, 6, 7), List(4, 5, 8), List(1, 3))
List(List(2, 6, 8), List(4, 5, 7), List(1, 3))
List(List(2, 7, 8), List(4, 5, 6), List(1, 3))
List(List(3, 4, 5), List(6, 7, 8), List(1, 2))
List(List(3, 4, 6), List(5, 7, 8), List(1, 2))
List(List(3, 4, 7), List(5, 6, 8), List(1, 2))
List(List(3, 4, 8), List(5, 6, 7), List(1, 2))
List(List(3, 5, 6), List(4, 7, 8), List(1, 2))
List(List(3, 5, 7), List(4, 6, 8), List(1, 2))
List(List(3, 5, 8), List(4, 6, 7), List(1, 2))
List(List(3, 6, 7), List(4, 5, 8), List(1, 2))
List(List(3, 6, 8), List(4, 5, 7), List(1, 2))
List(List(3, 7, 8), List(4, 5, 6), List(1, 2))

我希望这次我解决了正确的问题?


推荐阅读