给定一组n唯一元素和一组多个正数的l,它们相加成n,找出将这些唯一元素划分为不相交集的所有方法,这些集合的大小由l元素给定。
(多集是允许重复元素的集合)
这里的要点是,我们将输出中的所有内容作为集合,所以顺序在任何地方都不重要。
如果您检查下面的一些测试用例,这可能更容易理解。
加为l的正整数的多集n。注意,l中的元素可能会重复出现。这可能是
l = [1, 1, 2, 2, 3]f(1, 1, 2, 2, 3)的参数您可以假定l的表示是有序的。
您还可以使用n不同整数的列表/集/集合,或者根据l中的元素之和生成它。如果生成它,则可以对要分区的集合使用任何n不同的整数,但其余的代码应该适用于任何一组n整数。您使用的集合必须在您的回答中指定。建议包括:
0:[0, 1, ..., n-1]开头的范围1:[1, 2, ..., n]开头的范围集合可以在给定大小的集合中拆分的不同方式。您的输出应该是明确的。
您可以找到一个这里的vanilla python参考实现或你可以在网上试一试。
当列表加到n时,我使用的是set D45。在TIO链接中,该列表显式地给出了我的函数。
在->之后,每一行表示一种分割集合的可能方法。
[1, 1, 1, 1, 1, 1, 1, 1] -> [
[[0], [1], [2], [3], [4], [5], [6], [7]]
]
[3] -> [
[[0, 1, 2]]
]
[1, 2] -> [
[[0], [1, 2]]
[[1], [0, 2]]
[[2], [0, 1]]
]
[2, 2] -> [
[[0, 1], [2, 3]]
[[0, 2], [1, 3]]
[[0, 3], [1, 2]]
]
[1, 1, 2] -> [
[[0], [1], [2, 3]]
[[0], [2], [1, 3]]
[[0], [3], [1, 2]]
[[1], [2], [0, 3]]
[[1], [3], [0, 2]]
[[2], [3], [0, 1]]
]
[1, 2, 2] -> [
[[0], [1, 2], [3, 4]]
[[0], [1, 3], [2, 4]]
[[0], [1, 4], [2, 3]]
[[1], [0, 2], [3, 4]]
[[1], [0, 3], [2, 4]]
[[1], [0, 4], [2, 3]]
[[2], [0, 1], [3, 4]]
[[2], [0, 3], [1, 4]]
[[2], [0, 4], [1, 3]]
[[3], [0, 1], [2, 4]]
[[3], [0, 2], [1, 4]]
[[3], [0, 4], [1, 2]]
[[4], [0, 1], [2, 3]]
[[4], [0, 2], [1, 3]]
[[4], [0, 3], [1, 2]]
]
[2, 2, 2] -> [
[[0, 1], [2, 3], [4, 5]]
[[0, 1], [2, 4], [3, 5]]
[[0, 1], [2, 5], [3, 4]]
[[0, 2], [1, 3], [4, 5]]
[[0, 2], [1, 4], [3, 5]]
[[0, 2], [1, 5], [3, 4]]
[[0, 3], [1, 2], [4, 5]]
[[0, 3], [1, 4], [2, 5]]
[[0, 3], [1, 5], [2, 4]]
[[0, 4], [1, 2], [3, 5]]
[[0, 4], [1, 3], [2, 5]]
[[0, 4], [1, 5], [2, 3]]
[[0, 5], [1, 2], [3, 4]]
[[0, 5], [1, 3], [2, 4]]
[[0, 5], [1, 4], [2, 3]]
]
[1, 2, 3] -> [
[[0], [1, 2], [3, 4, 5]]
[[0], [1, 3], [2, 4, 5]]
[[0], [1, 4], [2, 3, 5]]
[[0], [1, 5], [2, 3, 4]]
[[0], [2, 3], [1, 4, 5]]
[[0], [2, 4], [1, 3, 5]]
[[0], [2, 5], [1, 3, 4]]
[[0], [3, 4], [1, 2, 5]]
[[0], [3, 5], [1, 2, 4]]
[[0], [4, 5], [1, 2, 3]]
[[1], [0, 2], [3, 4, 5]]
[[1], [0, 3], [2, 4, 5]]
[[1], [0, 4], [2, 3, 5]]
[[1], [0, 5], [2, 3, 4]]
[[1], [2, 3], [0, 4, 5]]
[[1], [2, 4], [0, 3, 5]]
[[1], [2, 5], [0, 3, 4]]
[[1], [3, 4], [0, 2, 5]]
[[1], [3, 5], [0, 2, 4]]
[[1], [4, 5], [0, 2, 3]]
[[2], [0, 1], [3, 4, 5]]
[[2], [0, 3], [1, 4, 5]]
[[2], [0, 4], [1, 3, 5]]
[[2], [0, 5], [1, 3, 4]]
[[2], [1, 3], [0, 4, 5]]
[[2], [1, 4], [0, 3, 5]]
[[2], [1, 5], [0, 3, 4]]
[[2], [3, 4], [0, 1, 5]]
[[2], [3, 5], [0, 1, 4]]
[[2], [4, 5], [0, 1, 3]]
[[3], [0, 1], [2, 4, 5]]
[[3], [0, 2], [1, 4, 5]]
[[3], [0, 4], [1, 2, 5]]
[[3], [0, 5], [1, 2, 4]]
[[3], [1, 2], [0, 4, 5]]
[[3], [1, 4], [0, 2, 5]]
[[3], [1, 5], [0, 2, 4]]
[[3], [2, 4], [0, 1, 5]]
[[3], [2, 5], [0, 1, 4]]
[[3], [4, 5], [0, 1, 2]]
[[4], [0, 1], [2, 3, 5]]
[[4], [0, 2], [1, 3, 5]]
[[4], [0, 3], [1, 2, 5]]
[[4], [0, 5], [1, 2, 3]]
[[4], [1, 2], [0, 3, 5]]
[[4], [1, 3], [0, 2, 5]]
[[4], [1, 5], [0, 2, 3]]
[[4], [2, 3], [0, 1, 5]]
[[4], [2, 5], [0, 1, 3]]
[[4], [3, 5], [0, 1, 2]]
[[5], [0, 1], [2, 3, 4]]
[[5], [0, 2], [1, 3, 4]]
[[5], [0, 3], [1, 2, 4]]
[[5], [0, 4], [1, 2, 3]]
[[5], [1, 2], [0, 3, 4]]
[[5], [1, 3], [0, 2, 4]]
[[5], [1, 4], [0, 2, 3]]
[[5], [2, 3], [0, 1, 4]]
[[5], [2, 4], [0, 1, 3]]
[[5], [3, 4], [0, 1, 2]]
]
[1, 1, 4] -> [
[[0], [1], [2, 3, 4, 5]]
[[0], [2], [1, 3, 4, 5]]
[[0], [3], [1, 2, 4, 5]]
[[0], [4], [1, 2, 3, 5]]
[[0], [5], [1, 2, 3, 4]]
[[1], [2], [0, 3, 4, 5]]
[[1], [3], [0, 2, 4, 5]]
[[1], [4], [0, 2, 3, 5]]
[[1], [5], [0, 2, 3, 4]]
[[2], [3], [0, 1, 4, 5]]
[[2], [4], [0, 1, 3, 5]]
[[2], [5], [0, 1, 3, 4]]
[[3], [4], [0, 1, 2, 5]]
[[3], [5], [0, 1, 2, 4]]
[[4], [5], [0, 1, 2, 3]]
]这是RGS高尔夫表演的第五个也是最后的挑战。如果你想参加比赛,你有96个小时的时间提交你的合格答案。记住,在奖品中还有300个声誉!(见规则6)
此外,根据链接元员额规则第4节,第三项挑战的“受限语言”只有大锤、J和数学,因此以这些语言提交的作品没有资格获得最终奖。但他们仍然可以被张贴!!
如果你想被认为是最终的奖品,在你对这个挑战的答案的末尾,请添加一个链接到你想要被考虑为你的最终分数的合格的提交,以及那些答案得到的分数!这样,我就能更容易地了解所有的事情了。谢谢!
这仍然是一个常规的密码-高尔夫挑战,所以享受吧!
发布于 2020-03-11 13:56:35
发布于 2020-03-11 12:24:21
https://codegolf.stackexchange.com/questions/200861
复制相似问题