【发布时间】:2011-09-19 17:15:04
【问题描述】:
我正在寻找一种 scala 方式来给出所有排列而不重复。我知道这个网站上已经有一些帖子,但他们似乎有一个稍微不同的问题。
我正在寻找所有重复的排列。 例如:
combine(List('A','C','G'))
应该让步:
List(List('A'.'A','A'),List('A'.'A','C'),List('A'.'A','G'),List('A'.'C','A'),
List('A'.'C',''C), ... List('G'.'G','G')
如果我的问题已经解决但我找不到它,我很抱歉。
提前致谢。
编辑:
我自己的方法(不编译):
def combine(size: Int = sym.length) : List[List[T]] = {
size match {
case 0 => List()
case 1 => sym.toList.map(List(_))
case _ => for (el <- sym) yield el :: combine(size-1)
}
}
sym 是一个类的数组成员,其中包含要组合的所有符号。
【问题讨论】:
-
这描述了输入列表的所有组合的所有排列的列表
-
不,它描述了所有重复排列。
标签: scala combinations combinatorics repeat