列出Scala中重复的组合
发布时间:2020-12-16 19:19:47 所属栏目:安全 来源:网络整理
导读:试着学习一点 Scala并遇到这个问题.我找到了一个没有重复的所有组合的解决方案 here,我有点理解它背后的想法,但是一些语法让我搞砸了.我也不认为该解决方案适用于重复的情况.我想知道是否有人可以建议我可以使用的一些代码.我有很多关于组合学的材料,并且理
试着学习一点
Scala并遇到这个问题.我找到了一个没有重复的所有组合的解决方案
here,我有点理解它背后的想法,但是一些语法让我搞砸了.我也不认为该解决方案适用于重复的情况.我想知道是否有人可以建议我可以使用的一些代码.我有很多关于组合学的材料,并且理解问题和迭代解决方案,我只是在寻找scala-y的方法.
谢谢 解决方法
我现在明白你的问题.我认为实现您想要的最简单方法是执行以下操作:
def mycomb[T](n: Int,l: List[T]): List[List[T]] = n match { case 0 => List(List()) case _ => for(el <- l; sl <- mycomb(n-1,l dropWhile { _ != el } )) yield el :: sl } def comb[T](n: Int,l: List[T]): List[List[T]] = mycomb(n,l.removeDuplicates) comb方法只是调用mycomb,并从输入列表中删除重复项.删除重复项意味着以后更容易测试两个元素是否“相同”.我对mycomb方法的唯一改变是,当递归调用该方法时,我将删除列表中el之前出现的元素.这是为了阻止输出中出现重复. > comb(3,List(1,2,3)) > List[List[Int]] = List( List(1,1,1),2),3),3,List(2,List(3,3)) > comb(6,2)) > List[List[Int]] = List( List(1,2)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |