gpt4 book ai didi

function - Scala 函数获取所有大小为 k 的排序子集

转载 作者:行者123 更新时间:2023-12-04 21:54:00 25 4
gpt4 key购买 nike

我得到一组大小为 L 的集合,并希望生成大小为 k 的每个排序子集。
如果您的解决方案在 Scala 中会很棒,但也许我可以自己翻译。

L = 6 和 k = 3 的示例运行应该会产生。

1、2、3
1、2、4
1、2、5
1、2、6
1、3、4
1、3、5
1、3、6
1、4、5
1、4、6
1、5、6
2、3、4
2、3、5
2、3、6
2、4、5
2、4、6
2、5、6
3、4、5
3、4、6
3、5、6
4、5、6

我的 Scala 尝试是这样的:

object Util {
def main(args : Array[String]) : Unit = {
starts(6,3,1)
}

def starts(L: Int, num: Int, level: Int) : List[List[Int]] = {
if( num == 0 ) {
return List()
}else{
(level to (L-num+1)).map( o => o :: starts(L,num-1,level+1))
}
}
}

我希望你能帮助我。

最佳答案

所有你需要的是

def subsets(L: Int, k: Int) =  
1 to L combinations k

结果:
scala> subsets(6, 3) foreach println
Vector(1, 2, 3)
Vector(1, 2, 4)
Vector(1, 2, 5)
Vector(1, 2, 6)
Vector(1, 3, 4)
Vector(1, 3, 5)
Vector(1, 3, 6)
Vector(1, 4, 5)
Vector(1, 4, 6)
Vector(1, 5, 6)
Vector(2, 3, 4)
Vector(2, 3, 5)
Vector(2, 3, 6)
Vector(2, 4, 5)
Vector(2, 4, 6)
Vector(2, 5, 6)
Vector(3, 4, 5)
Vector(3, 4, 6)
Vector(3, 5, 6)
Vector(4, 5, 6)

按要求。

关于function - Scala 函数获取所有大小为 k 的排序子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8137082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com