Questions tagged «set-partitions»

对于与将集合细分为较小的不相交集合有关的挑战。这还包括对有序集合(如列表)和非离散集(如间隔)的细分。挑战应仔细定义所使用的分区概念。

3
Dobble / SpotIt卡生成器
介绍 Dobble / Spot这是一种纸牌游戏,人们必须在最短的时间内在一对纸牌上发现相同的符号,并指出并移到下一对。每张卡具有多个符号(普通版为8个),但每对卡之间恰好有一个共同的符号。 来自游戏实体副本的示例: 挑战 编写一个程序,给定一组符号(单个ascii字符)和单个卡上的符号数量,将生成输出列表卡,其中每个卡都有符号。显然有许多等效的组合,您的程序只需要编写任何组合就可以为给定的输入产生最大数量的卡片。 这是一个代码问题,因此代码越短越好。 如果在最复杂的情​​况下,在宇宙热死之前完成计算,那将也很好。 输入值 函数/ stdin的两个参数(您的选择) 首先是符号的集合,例如'ABCDE'或['A','B','C','D','E']-您选择的格式,可以是字符串,集合,列表,流,或所选择语言的惯用语言。字符将从[A-Za-z0-9]的集合中给出,不能重复(因此输入符号集的最大大小为62)。它们不会在(因此您也可以在6个符号的情况下获得“ yX4i9A”)。 第二个参数是整数,表示单张卡上的符号数量。小于符号集的大小。 输出量 打印用换行符分隔的多行,每行包含一张卡的符号。 例子 ABC 2 >>>> AB BC AC 要么 ABCDEFG 3 >>>> ABC BDE CEF BFG AEG CDG ADF 要么 ABCDE 4 >>>> ABCD 提示 所产生的卡片数量不能大于不同符号的数量,并且在许多组合中,它将大大减少 如果您需要数学方面的帮助,则可能需要阅读一些数学背景 这是我第一次挑战高尔夫代码,因此请原谅格式/样式方面的可能问题-如果您在注释中指出错误,则我将尝试更正。

12
多维数据集距离数的稀有度
灵感来自这个 Numberphile进入 背景 整数n的立方距离数在此定义为一组整数,它们是给定x的x³距离。举一个简单的例子,使用和时,立方体距离数为。n=100x=2{92,108} 只需更改x即可将其扩展为更大的集合。使用x ∈ {1,2,3,4}和相同n=100,我们得到结果集{36,73,92,99,101,108,127,164}。 让我们来定义CD(N,X)的所有整数的集合n ± z³带z ∈ {1,2,3,...,x}。 现在我们可以集中讨论这些立方距离数字的一些特殊属性。在数字可以具有的许多特殊属性中,我们在此处感兴趣的两个属性是素数和素数除数。 对于上面的示例CD(100,4),请注意它们73, 101, 127都是素数。如果将它们从集合中删除,则剩下{36,92,99,108,164}。这些数字的所有主除数都是(按顺序){2,2,3,3,2,2,23,3,3,11,2,2,3,3,3,2,2,41},这意味着我们有5个不同的主除数{2,3,23,11,41}。因此,我们可以定义CD(100,4)具有ravenity 1中5。 这里的挑战是以最小的字节编写一个函数或程序,以输出给定输入的泛滥。 输入值 两个正整数n和x,采用任何方便的格式。 输出量 当用CD(n,x)计算时,一个整数,描述两个输入数字的奇异性。 规则 输入/输出可以通过任何合适的方法。 适用标准漏洞限制。 为了便于计算,您可以假设输入数据将使CD(n,x)在集合中仅具有正数(即,没有CD(n,x)会具有负数或零)。 该函数或程序应该能够处理输入数字,以便n + x³适合您语言的本机整数数据类型。例如,对于32位带符号整数类型,所有输入数字n + x³ < 2147483648都可以。 例子 n,x - output 2,1 - 0 (since CD(2,1)={1,3}, distinct prime divisors={}, ravenity=0) 5,1 - 2 100,4 …

3
删除字母同时保持字符串唯一
受启发 这一奇妙的挑战(基于观点和投票的数量)的,以我的拙见,答案太少了。 给定(通过任何方式)字符串列表,返回(通过任何方式)一组字母,当从给定字符串中删除这些字母时,它们(剩余的字符串)的总长度应尽可能小,同时保持每个字母的长度字符串唯一且至少一个字符长。 例子: 给定“日”和“日”;返回“ ay”,因为删除字符“ ay”时给定的字符串将是“ D”和“ d”。 给定“ Hello World!”,“ Hello world。”和“ Hello world”;之所以返回“ Helo Wrd”,是因为删除字符“ Helo Wrd”(带空格)时,字符串将为“!”,“ w。”和“ w”。 给定“世纪”,“十年”,“年”,“月”,“周”,“日”,“小时”,“分钟”和“秒”;返回“ centurdowi”,因为当字符“ centurdowi”给定的单词将是“ y”,“ a”,“ ya”,“ mh”,“ k”,“ ay”,“ h”,“ m”,“ s” ”已删除。 返回集的顺序和格式并不重要。

4
矮胖回文
回文报很有趣,但是其他一些字符串却开始被忽略。通过将这些字符串分成回文的大块数组,可以将它们变成大块的回文。 例如,"abcabca"如果我们逐个字符地读取字符串,那么它就不是回文,但是有三种不同的方式可以使它成为大块的回文: ["abcabca"] ["a" "bcabc" "a"] ["a" "bc" "a" "bc" "a"] 如您所见,矮胖回文是一个非常包容的概念;每个字符串都可以至少以一种方式变成粗大的回文。 任务 编写一个程序或函数,该程序或函数接收字符串作为输入,并返回其回文式块状体,即回文式数组的分区数。 测试用例 OUTPUT | INPUT --------+--------------------------------------------- 1 | "" 1 | "a" 1 | "ab" 2 | "aa" 2 | "aaa" 3 | "abcabca" 4 | "abababab" 28 | "abcabcaabababababcabca" 1 | "bbbbabababbbbababbbaaaaa" 20 | "ababbaaaabababbbaaabbbaa" 5 …

10
分解为素数
给定一个整数n,返回可以将n写入质数列表的方式数。例如,2323可以书面(2,3,23),(23,23)或(2,3,2,3)或者(23,2,3),所以你会输出4。如果无法以这种方式编写,则应输出0。 质数,例如019或是00000037此问题的有效质数。 测试用例: 5 -> 1 55 -> 1 3593 -> 4 (359 and 3, or 3 and 593, or 3 and 59 and 3, or 3593) 3079 -> 2 (3 and 079, or 3079) 119 -> 0 5730000037 -> 7 (5,7,3,000003,7, 5,7,3,0000037, 5,73,000003,7, 5,73,0000037, 5,73000003,7, 5,7,30000037, 5730000037) 0-> undefined …

6
用倍数覆盖一组
让我们一组整数大于1,并称之为X。我们将S(i)定义为X被i整除的所有成员的集合,其中i> 1。想从这些子集中选择一组集合,以便 他们的联合是集合X X的元素不在两个集合中。 例如,我们可以重新组合{3..11}为 {3,4,5,6,7,8,9,10,11} S(3): {3, 6, 9, } S(4): { 4, 8, } S(5): { 5, 10, } S(7): { 7, } S(11):{ 11} 有些集合不能用这种方式表达。例如,如果我们采用{3..12},12则是3和4的倍数,以防止我们的集合相互排斥。 某些集合可以多种方式表达,例如 {4..8}可以表示为 {4,5,6,7,8} S(4): {4, 8} S(5): { 5, } S(6): { 6, } S(7): { 7, } 但也可以表示为 {4,5,6,7,8} S(2): {4, …

2
查找子集因素
假设我们有一组有限的正整数。这个集合可以表示为一点点线,其中集合中存在的每个整数都像扫描仪或打孔卡一样被填充。例如,该集合{1,3,4,6}可以表示为: *.**.* *代表我们集合的成员,并且.代表一个不是集合成员的整数。 这些集合具有“因素”。如果可以从x的副本中构建y,则x是y的因子。更严格地,我们对因子的定义如下: 当且仅当y是许多不交集的并集时,x都是y的因子,所有不交集都是x且具有偏移量。 我们之所以称其*.*为因子,是*.**.*因为它很显然是由两个*.*首尾相连的副本组成的。 *.**.* ------ *.*... ...*.* 因素不一定是端到端的,我们还要说这*.*是*.*.*.* *.*.*.* ------- *.*.... ....*.* 因素也可以重叠。这*.*也意味着**** **** ---- *.*. .*.* 但是,一个数字不能多次覆盖一个因数。例如*.*是不是一个因素*.*.*。 这是一个更复杂的示例: *..*.**..***.*.* 这*..*.*是一个因素。您可以在下面看到我排列的三个实例的地方*..*.*。 *..*.**..***.*.* ---------------- *..*.*.......... ......*..*.*.... ..........*..*.* 任务 给定一个由任何合理表示形式输出的集合,所有集合都是输入的因子。 您可以按任何值编制索引(即,可以选择输入中可以存在的最小数字)。您还可以假设输入集将始终包含该最小值。 这是一个代码问题,因此您应该以尽可能少的字节为目标。 测试用例 这些测试用例是手工完成的,较大的可能有一个或两个错误 * -> * *.*.* -> *, *.*.* *.*.*.* -> *, *.*, *...*, *.*.*.* ****** -> …

3
计算长度为n的莫比乌斯梯子上的受限森林数量
OEIS序列A020872对Möbius梯 M n上的限制林进行计数。 挑战 面临的挑战是编写一个程序,该程序将整数作为输入n > 1并返回A020872(n)Möbius梯子M n上的受限林数。这是代码高尔夫球,因此最短的代码获胜。(别有用心的是也许将此序列的长度延长一点。) 定义 甲受限森林是图的一个分区,使得每个部分可以是一个(无向)路径或分离的顶点。 所述莫比乌斯梯子中号Ñ是可以想到的2n边形与所有相对顶点之间画出的对角线的曲线图。 例 这是M 2(画有对角线的正方形)上的34个受限森林。请注意,第一个图被划分为四个孤立的顶点,第二个图被划分为一个路径和两个孤立的顶点,依此类推。

4
获取吸气剂
任务 我想每个人都喜欢自动代码生成并节省工作时间。您白天必须创建许多类和成员,而又不想getters手动创建所有这些类和成员。 任务是编写一个程序或函数,该程序或函数getters将为您自动为所有类成员生成。 输入 在我们的语言中,对象非常简单。类和成员的名称必须以字符开头,[a-zA-Z]并且只能包含字符[a-zA-Z0-9]。这是一个例子: class Stack { public overflow; protected trace; private errorReport; } 输出 这是基于给定示例的有效输出: class Stack { public overflow; protected trace; private errorReport; public function getOverflow() { return this->overflow; } public function getTrace() { return this->trace; } public function getErrorReport() { return this->errorReport; } } 吸气剂 getter方法的要求是: …
13 code-golf  string  syntax  code-golf  math  primes  rational-numbers  code-golf  graphical-output  image-processing  code-golf  kolmogorov-complexity  music  audio  code-golf  string  code-golf  math  geometry  code-golf  math  sequence  combinatorics  code-golf  game  grid  board-game  code-golf  restricted-source  array-manipulation  source-layout  code-golf  base-conversion  binary  code-golf  math  physics  code-golf  math  number  date  expression-building  code-golf  array-manipulation  graph-theory  decision-problem  popularity-contest  error-correction  code-golf  kolmogorov-complexity  geometry  grid  code-challenge  arithmetic  combinatorics  set-partitions  code-golf  kolmogorov-complexity  sequence  fibonacci  code-golf  restricted-source  pristine-programming  code-golf  code-golf  string  kolmogorov-complexity  code-golf  arithmetic  code-golf  string  parsing  code-golf  code-golf  sorting  counting  permutations  3d  code-golf  code-golf  ascii-art  music  code-golf  string  code-golf  string  ascii-art  code-golf  string  code-golf  quine  polyglot  code-golf  math  string  code-golf  internet 

6
找出有理生成函数的系数
如果我们写一个数字序列作为幂级数的系数,则该幂级数称为该序列的(普通)生成函数(或Gf)。也就是说,如果对于某些函数F(x)和整数系列,a(n)我们有: a(0) + a(1)x + a(2)x^2 + a(3)x^3 + a(4)x^4 + ... = F(x) 然后F(x)是的生成函数a。例如,几何级数告诉我们: 1 + x + x^2 + x^3 + x^4 + ... = 1/(1-x) 因此,的生成函数1, 1, 1, ...为1/(1-x)。如果我们对上面方程的两边求和并乘以x得到以下等式: x + 2x^2 + 3x^3 + 4x^4 + ... = x/(1-x)^2 因此,的生成函数1, 2, 3, ...为x/(1-x)^2。生成函数是一个非常强大的工具,您可以使用它们来做很多有用的事情。在这里可以找到简短的介绍,但是要获得真正彻底的解释,请参见惊人的图书生成功能学。 在此挑战中,您将有理函数(两个具有整数系数的多项式的商)作为两个整数系数数组的输入作为输入,首先是分子,然后是分母。例如,功能f(x) = x …
12 code-golf  math  integer  polynomials  code-golf  math  abstract-algebra  restricted-time  code-golf  math  primes  code-golf  math  number  arithmetic  code-golf  quine  code-golf  number  sequence  code-golf  string  number  code-golf  array-manipulation  code-golf  number  code-golf  string  code-golf  arithmetic  code-golf  string  array-manipulation  rubiks-cube  code-golf  math  number  code-golf  tips  bash  code-golf  ascii-art  music  code-golf  arithmetic  code-golf  math  number  arithmetic  integer  code-golf  number  array-manipulation  code-golf  geometry  grid  set-partitions  code-golf  math  number  code-golf  combinatorics  code-golf  regular-expression  code-golf  permutations  code-golf  ascii-art  code-golf  number  array-manipulation  matrix  code-golf  kolmogorov-complexity  compile-time  cops-and-robbers  polyglot  cops-and-robbers  polyglot  code-golf  string  code-golf  string  ascii-art  matrix  animation  code-golf  ascii-art  code-golf  string  balanced-string  code-golf  integer  integer-partitions  expression-building 

2
配对电容器
电容器因制造公差高而臭名昭著。在许多情况下这是可以接受的,但有时需要具有严格公差的容量。获得具有所需准确值的容量的常见策略是并联使用两个经过仔细测量的电容器,以使它们的容量总计达到所需范围。 在给定(一组)容量的情况下,此挑战的目标是将电容器配对,以使每对电容器的总容量在给定范围内。您还需要找到最佳的配对对,即配对对,以便找到尽可能多的配对。 约束条件 输入包括选择的格式 容量的无序列表,代表您拥有的(多个)电容器组 一对表示的下部和上部的能力结合的的目标范围(包括) 输入中的所有容量均为小于2 30的正整数,单位为pF(无关紧要)。 除了输入电容列表之外,您拥有的电容器组还包含无限数量的0 pF电容器。 输出以选择的格式包括容量对列表,以使每对容量之和在指定的目标范围内。既没有指定线对的顺序,也没有指定线对中的容量顺序。 输出中的任何电容出现的频率都不会比您拥有的一组电容器中出现的频率高。换句话说:输出的对不能重叠。 满足条件4和5的任何可能输出都不应该包含比程序产生的输出更多的容量对。 您的程序应在O(n!)时间终止,其中n是代表您拥有的电容器组的列表的长度 不得滥用漏洞 该目标范围,不得为空 计分 您的分数是解决方案的长度(以八位字节为单位)。如果您的解决方案设法在多项式时间O(n k)中解决了约k个问题,请将您的得分除以10。我不知道这是否实际上可行。 样品输入 范围100到100,输入数组100 100 100,有效输出: 0 100 0 100 0 100 范围100到120,输入数组20 80 100,有效输出: 0 100 20 80 输出20 100无效 范围90到100,输入数组50 20 40 90 80 30 60 70 40,有效输出: 0 90 20 …

19
生成所有子列表分区
给定一个非空的整数列表,输出列表的每个可能分区,其中每个分区都是一个非空子列表。 因此,对于列表[1, 2, 3, 4],结果为: [[1, 2, 3, 4]] [[1, 2, 3], [4]] [[1, 2], [3, 4]] [[1, 2], [3], [4]] [[1], [2, 3, 4]] [[1], [2, 3], [4]] [[1], [2], [3, 4]] [[1], [2], [3], [4]] 列表在输出中的顺序无关紧要,因此[[1, 2, 3, 4]]可以是第一个,最后一个或任何位置。元素的顺序必须保留。 这是代码高尔夫球,所以最短的答案会获胜。 相关:对列表进行分区!

6
最大串联产品
给出了一个整数列表p1,...,pk(不一定是不同的),其中每个值的范围都在1到9之间(含1和9)。仅使用一次每个p1,...,pk,我们就可以形成数字的级联,以获得一个新的数字列表;然后,我们输出此新列表的产品。目的是通过选择最佳的数字级联来最大化此乘积。 例如,我们得到以下列表:2 3 2(用空格分隔)。我们可以形成以下串联: 2 3 2(这些串联的乘积是12) 23 2(商品是46) 32 2(商品是64) 22 3(商品是66) 因为我们可以形成的最大乘积是66,所以我们将其输出。 规则: 必须至少有一个乘法(即,您不能只连接所有数字并输出)。 除乘法或插入括号等外,不能使用任何其他运算符。 假定给定的整数列表由空格分隔,并且所有整数的值都在1到9之间。 最短的代码(以字节为单位)获胜! 测试用例: 输入:1 2 3; 输出:(63即21*3) 输入:2 5 9; 输出:468(52*9) 输入:1 2 3 4; 输出:1312(41*32)

2
分区列表!
在此挑战中,您需要对列表进行分区,其中分区具有最大大小,最小大小和首选大小。我将使用该符号(min,pref,max) 来表示此挑战中的大小。 对于不熟悉分区的人,以下列表已分为三部分: [0..9] -> [[0,1,2],[3,4,5],[6,7,8]] 当列表不能被均等分割时,您需要使分区尽可能地接近首选大小:[0..10], (2,4,5) -> [[0,1,2,3],[4,5,6],[7,8,9]]。[[0,1,2,3],[4,5,6,7],[8,9]]即使该分区具有更多的首选长度,该分区也比首选。正式地,我们需要最小化(partitionLength-preferredSize)^2每个分区的总和。 分区长度的顺序无关紧要:对于[0..5], (2,3,3),[[0,1,2],[3,4]]或者[[0,1],[2,3,4]]有效。如果没有分区,则返回一个空数组:[0..7], (4,4,5) -> []。 您可以假定1<=min<=pref<=max,并且传递给您的数组是一个非空的整数数组。数组将始终是第一个参数。您可以以任何顺序,以元组或单独的参数接受min,max和pref。 您的程序必须在几秒钟内运行。基本上,不允许在边界内遍历所有可能的分区大小。 测试用例: [1], (1,3,4) -> [[1]] [100], (1,2,3) -> [[100]] [1,2], (1,1,2) -> [[1],[2]] [1,2], (1,2,2) -> [[1,2]] [1,2], (1,3,3) -> [[1,2]] [1,2,3], (1,2,3) -> [[1,2],[3]] or [[1,2,3]] [1,2,3,4], (1,3,4) -> [[1,2,3,4]] [1,2,3,4,5], (3,3,4) …

2
心不在a的语言学家
背景 您的朋友是一名语言学家,已记录并分析了各种语言的一些简单对话片段。由于心不在a,他们忘记了每个摘录使用哪种语言。您必须通过创建一个程序来分析句子结构并排除可能出现的情况,来帮助他们。 输入值 您的输入是一个非空字符串SVO,其中包含字符,分别代表subject,verb和object。它代表语言学家分析的对话摘要。 输出量 您的任务是将字符串分成多个句子,并.在每个句子后输入句点。一个句子包含一个动词,或者一个动词和一个主语,或者一个动词,一个主语和一个宾语。但是,您不知道原始语言使用的单词顺序。英语使用subject-verb-object,但是其他语言(例如拉丁语)使用subject-object-verb。实际上,所有六个排列都以自然语言存在,因此您必须检查每个排列。 您的输出应以换行符分隔的字符串包含每个适用的单词顺序,冒号:和根据该顺序分成句子的输入字符串。如果无法按某些单词顺序解析字符串,则应省略相应的行。行的顺序无关紧要,并且保证至少可以解析一个单词顺序。 例 考虑输入 VSVOSV 按VOS顺序,可以将片段的解析为VS.VOS.V.,按SVO顺序,可以将其解析为V.SVO.SV.。该命令OSV也有效,完整的输出为 VOS:VS.VOS.V. SVO:V.SVO.SV. OSV:V.SV.OSV. 规则和计分 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。允许使用正则表达式和所有内置函数。 测试用例 Input: V Output: VSO:V. VOS:V. SVO:V. OVS:V. SOV:V. OSV:V. Input: SVV Output: SVO:SV.V. SOV:SV.V. OSV:SV.V. Input: VSVOV Output: SVO:V.SVO.V. Input: VSOVS Output: VSO:VSO.VS. OVS:VS.OVS. Input: SVOSV Output: SVO:SVO.SV. OSV:SV.OSV. Input: VSVOSV Output: VOS:VS.VOS.V. …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.