Questions tagged «code-golf»

Code-golf是在最小的源代码字节中解决特定问题的竞赛。

7
找到一组最大匹配边
考虑一个连接的无向图。甲边缘的匹配组在此图被定义为一组边,使得在该组共享的任何两个边缘公共顶点的。例如,左图表示绿色的匹配集,而右图表示红色的不匹配集。 匹配集称为maximally matching,maximal matching如果不可能将图的另一条边添加到匹配集,则为。因此,以上两个示例都不是最大匹配集,但是下面两个蓝色的集合都是最大匹配。请注意,最大匹配不一定是唯一的。此外,不要求图形的每个可能最大匹配的大小都应等于另一个匹配。 挑战的目标是编写程序/函数以找到图形的最大匹配。 输入值 假设输入图的所有顶点都有一些连续的整数编号,这些编号从您选择的任何起始整数值开始。一条边由表示该边连接的顶点的无序整数对来描述。例如,上面显示的图形可以使用以下无序边集来描述(假设顶点的编号从0开始): [(0,1), (0,2), (1,3), (1,4), (2,3), (3,4), (3,5), (5,6)] 描述图的另一种方法是通过邻接表。这是上图的邻接表示例: [0:(1,2), 1:(0,3,4), 2:(0,3), 3:(1,2,4,5), 4:(1,3), 5:(3,6), 6:(5)] 您的程序/函数必须从任何来源(stdio,函数参数等)获取图形作为输入。只要没有其他无关紧要的信息传达给您的程序,您就可以使用所需的任何符号。例如,一个额外的参数表示输入边的数量是完全可以接受的。类似地,传入无序的边,邻接表或邻接矩阵的多集也可以。 您可以假设: 图形已连接(例如,可以在给定任何起始顶点的情况下到达任何顶点)。 至少有一条边缘。 边永远不会将顶点直接连接到自身(例如,边(1,1)不会作为输入提供)。请注意,循环仍然可能(例如:上图)。 您可能需要输入顶点从任何索引处开始(例如,第一个顶点可以是0、1,-1等)。 顶点编号从您选择的起始索引开始按顺序增加(例如:1,2,3,4,...或0,1,2,3,...)。 输出量 您的程序/函数应输出表示最大匹配集的边列表。一条边由该边连接的两个顶点定义。例如 左蓝色组的输出(使用示例输入顶点顺序): [(1,4), (2,3), (5,6)] 注意,顶点的顺序并不重要。因此,以下输出描述了相同的匹配集: [(4,1), (2,3), (6,5)] 输出可能是到stdout,文件,函数返回值等。 例子 这是一些示例输入(使用邻接表格式)。这些示例碰巧开始在处计算顶点0。 请注意,没有给出示例输出,而是提供了Python 3验证代码。 [0:(1), 1:(0)] [0:(1,2), 1:(0,3,4), 2:(0,3), …

1
帮助哥德尔实现β函数[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 2年前关闭。 哥德尔的β函数采用三个自然数作为参数。 定义为 β(x,y,z) = rem(x, 1 + (z + 1) · y) = rem(x, (z · y + y + 1) ) 其中rem(a,b)表示a除以b的整数后的余数。 β引理现在指出: 对于任何自然数序列(k_0,k_1,…,k_n),都有自然数b和c使得对于每个i≤n,β(b,c,i)= k_i。 哥德尔需要帮助找到b并c对于任何给定的输入(k_0, k_1, … , k_n), k_i ∈ ℕ。 编写一个函数,该函数接受一个长度为length的数组n,并用自然数填充,并给出b,c满足该数组的引理的可能输出。 不要用蛮力获得解决方案! (根据我完全不专业的观点,当您首先获得一个数字然后进行计算时,这是蛮力的。这是在猜测数字,然后看猜测是否正确。我想在这里编码的是一种解决方案数,并且不必检查它们是否满足引理,因为它们是故意这样做的。) 用给出的方程式和信息构造它们。最短的代码获胜,如果您这样做,将获得加分,Javascript因为我只是参与其中:) 例: [5, 19, 7, 8] -> (1344595, 19) 1344505 …

18
SE何时会下跌?
SE将在今天 2017-05-04 00:00 UTC直到00:20 UTC 关闭/只读。 您的挑战是,如果SE为Down /只读状态,则输出真实值,而如果SE为非只读,则输出错误值。您可能没有任何输入,并且必须使用日期内置函数来确定SE是否为down /只读(实际上不查询SE api!)示例输出: 12:34 UTC 03 May 2017 -> false 00:00 UTC 04 May 2017 -> true 00:20 UTC 20 May 2017 -> undefined, see below 这是未定义的行为,因为它离时间窗口太远了。明确地说,您可以假设您的程序将从8:00今天(5/3/17)的UTC 运行到1:00明天(5/4/17)的UTC 。 00:21 UTC 04 May 2017 -> false 00:20 UTC 04 May 2017 -> true …

6
评估一个简单的电子表格
规则 没有单元格范围参考(A2:B3)。 最多9行9列。 没有循环引用或公式错误。 空单元格的计算结果为0。 数据仅是数字,但可以视为字符串。 公式是字符串。 实施选择 您必须在以下事项中陈述您的选择: 要求公式以任何单个字符为前缀,例如=–或不带。 根据Excel等人使用的两种约定,第二行的最左侧单元格为A2或R2C1。 在单元格引用中要求任何单字符前置或后缀,例如$-或不要求。 空,空字符串,空列表等(但不是0)之一,代表空单元格。 您提交的语言(不允许使用电子表格管理器)。 公式的语言(可能与上述语言有所不同)。* 布朗尼点或cookie,用于解释您的解决方案。 例子 选择:7 :=;8 :A2;9:没有 10 :"";12:Excel公式语言 在: [[ 2, 3], ["=A1+B1",""]] 出: [[2,3], [5,0]] 在: [[ 2,"=A1+B2"], ["=A1+B1", ""]] 出: [[2,2], [4,0]] 在: [[ 3, 4,"=A1*B1"], [ 2, 5,"=A2*B2"], ["","","=C1+C2"]] 出: [[3,4,12], [2,5,10], [0,0,22]] …

13
顽强的泰国日历
在泰国日历中,2017年对应于2560年。泰国日历始终比公历提前543年。 细心的编码人员会注意到2560等于2^9 * 5,也就是说它有10个素数。这将不会再发生896年!如果说有十个主要因素,我们就称其为顽强的一年。 编写一个程序,如果根据系统时钟使用泰国日历的当年是顽强的,则输出一个真值,否则输出假值。 测试用例: 如果该程序在2017年运行, true 如果该程序在2018年至2912年的任何一年中运行, false 如果程序在2913年期间运行,true(2913 + 543 = 2^7 * 3^3)

3
计算最有效的二进制函数
今天,我们将计算最有效的二进制函数。更具体地说,我们将计算该函数,当通过将函数应用于常量输入0或它自己的输出创建表达式时,该表达式可以表示具有尽可能短表达式的所有正整数,将较高的优先级放在较小的整数上。 该功能的构建如下: 对于每个从1开始并向上的整数,选择我们尚未为其分配输出的最短表达式,然后将该整数作为该表达式的输出。表达式长度中的纽带将由较小的左参数断开,然后由较小的右参数断开。运作方式如下: 最初,未分配1。最短的未分配表达式是f(0, 0),因此我们将其设置为1。 现在,未分配2。最短的未分配表达式是f(f(0, 0), 0)= f(1, 0)和f(0, f(0, 0))= f(0, 1)。关系朝着较小的左派论断,所以f(0, 1) = 2。 剩余的最短未分配表达式是f(f(0, 0), 0)= f(1, 0),所以f(1, 0) = 3。 现在,我们只剩下2 fs和3 0s 的表达式,因此我们必须再添加一个。从左争论开始,然后由右争论打破关系,我们得到f(0, 2) = 4,因为f(0, f(0, f(0, 0))) = f(0, f(0, 1)) = f(0, 2)。 继续,我们有f(0, 3) = 5,f(1, 1) = 6,f(2, 0) …

28
给我煮一条热狗![关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 2年前关闭。 有时我发现自己想要一只热狗(不是所有人),所以我做了一个。现在制作热狗,非常简单。 1)将热狗放入沸水中 2)等待一定的时间(详细信息如下) 3)时间一到,就吃热狗。 您可能已经注意到我说过 特定时间(详细信息如下) 所以我会详细说明。 许多不同的品牌对热狗煮多久有不同的建议,但是我发现最好将它们煮4分27秒(不要问)。我尝试了许多不同的计时器,但是发现连续输出的程序是吸引我注意力的最佳方法。 你的任务 您必须制作一个程序,该程序将在Not ready yet4分钟27秒内正确输出消息。在这段时间过去之后,您应该输出Eat your hot dog直到时间结束。请不要输入任何信息。 如何取胜 您必须以字节为单位编写最短的代码才能获胜,因为这是一个代码问题
13 code-golf  date 

26
从无序列表中找到两个整数以求和
这是Google的面试问题,请参阅此处的youtube链接。 任务: 从无序列表中找到2个整数,这些整数相加得出给定的整数。 给定一个无序的整数列表,找到2个总和为给定值的整数,打印这2个整数,并指示成功(退出0)。它们不需要是任何特定的数字(即,前2个整数加起来为正确的数字),任何与该值加起来的对都可以使用。 整数为正且大于零。 整数列表可以采用任何数据结构,包括整数文件-每行一个整数。 如果找不到整数,则指示失败(出口1)。 必须返回列表中不同位置的两个整数。(即,您不能从同一位置两次返回相同的数字) (注意:在视频中,这些不完全是要求。“采访者”多次更改了他的位置。) 例如。 sum2 8 <<EOF 1 7 4 6 5 3 8 2 EOF 打印3和5退出状态为0。请注意,在此状态下1,7,2,6还将允许结果。 sum2 8 <<EOF 1 2 3 4 由于没有可能的组合,因此返回退出状态1。4,4根据规则5,不允许。

20
反斐波那契数列
给定三个数字m,n和p,您的任务是打印一个以m和n开头的长度为p的列表/数组,并且p后面的每个元素代表其前两个数字的差mn(反斐波那契数列) 对于此挑战,您可以使用函数来返回或打印结果或完整程序。 输入值 无论您的语言支持什么,三个整数m,n和p都由换行符/空格/逗号分隔,但是您应该指定输入格式。不允许插入代码。 输出量 反斐波那契数列包含的数字,采用以下任何一种格式(此示例:)m = 50, n = 40, p = 6: 50,40,10,30,-20,50 (或逗号后有空格) [50,40,10,30,-20,50] (或逗号后有空格) 50 40 10 30 -20 50(或使用\n(换行符)代替空格) {50,40,10,30,-20,50} (或用空格而不是逗号) 例子 Input => Output 50,40,10 => 50,40,10,30,-20,50,-70,120,-190,310 -100,-90,7 => -100,-90,-10,-80,70,-150,220 250,10,8 => 250,10,240,-230,470,-700,1170,-1870 规则 您可以确保p大于1 如果可能,您应该提供一种测试程序的方法 请注意,如上所述,此漏洞是禁止的,并且不允许插入代码 得分与排行榜 您的代码必须尽可能短,因为这是code-golf。没有答案将被接受,因为此挑战旨在通过语言找到最短的答案,从而避免了对高尔夫语言的不公平优势。 显示代码段 var QUESTION_ID=113051,OVERRIDE_USER=59487;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function …

9
Pali-n-Drome此列表
面临的挑战是,将以下内容作为输入,以扩展回文法的实施: n > 1和清单l。 您的程序必须在水平和垂直方向上对列表进行回文,也就是说,它必须首先对列表本身进行回文处理,然后再对列表中的每个元素进行回文处理。或相反。在回钯化之前,请确保所有元素的长度均等。然后将按n顺序执行回文动作,直到达到所需的输出为止。显示预期输出的最简单方法是通过几个示例进行操作: 在上执行了一次迭代[123,456,789]: 首先,您将列表palindromize到[123,456,789,456,123]。 如果这不是一个回文,如果结合在一起,就列表而言,它是一个回文。 [a,b,c]成为[a,b,c,b,a],因此LIST进行了Palindromized。 然后,您对每个list元素进行Palindromize [12321,45654,78987,45654,12321]。 这就是每次迭代的执行方式,它本质上是全向回文。 鉴于n=1 and l=[123,456,789]: 12321 45654 78987 45654 12321 给定 n=2 and l=[123,456,789] 123212321 456545654 789878987 456545654 123212321 456545654 789878987 456545654 123212321 鉴于n=1 and l=[3,2,1]: 3 2 1 2 3 鉴于n=2 and l=["hat","mad"," a "]: hatahatah madamadam a a …
13 code-golf 

3
TikZ打高尔夫球的秘诀
TikZ是Latex软件包,用于在Latex文档中绘制精确的图像。它具有庞大的规范和大量功能,这些功能可能对图形输出样式问题有用。 人们在TikZ打高尔夫球有哪些技巧?与往常一样,提示应特定于TikZ(例如,“删除评论”不是答案),并坚持每个答案一个提示。
13 code-golf  tips 

1
单位n维超立方体中两点的平均距离
理解单位n维超立方体的一种简单方法是考虑每个坐标分量都位于[0,1]中时可以得到的n维空间区域。因此,对于一维,它是从0到1的线段;对于二维,它是具有角(0,0)和(1,1)等的正方形。 编写一个程序或函数,给定n返回从单位n维超立方体中均匀随机选择的两点的平均欧几里得距离。您的答案必须在实际值的10 -6以内。如果答案对大n来说溢出了语言的本机浮点类型,那是可以的。 随机选择“大量”的点并计算平均值不能保证这种准确性。 例子: 1→0.3333333333 ... 2→0.5214054331 ... 3→0.6617071822 ... 4→0.7776656535 ... 5→0.8785309152 ... 6→0.9689420830 ... 7→1.0515838734 ... 8→1.1281653402 ... 从MathWorld获得的数据。 这是代码高尔夫球,最低字节数获胜。

16
属于回文的字符串排列数
您的输入将是由小英文字母组成的字符串。 您的任务是确定作为回文的原始字符串的不同排列的数量。 输入字符串最多包含100个字母。在较长的字符串的情况下,结果可能会很大,因此输出应为模数666013的排列数。 例如, cababaa -> 3 可能的排列是: aabcbaa abacaba baacaab 这是代码高尔夫球,所以最短的答案会成功!

3
邻居数的最高素数
我认为以顺序的方式解释这一挑战是最简单的。以输入数字N开头: 找到其最高素数 检查的上方和下方的数字Ñ,看看是否最高素因子较高(即,最高的素因子N-1和/或N + 1比的因数更高Ñ。 继续检查更高和/或较低的数字相邻Ñ在方向其中最高因素正在增加((N-2,N-3 ...)和/或(N + 2,N + 3,...)等上) 一旦在任一方向上没有任何高于我们已经发现的素数的素数,我们就会停止并输出遇到的最高素数。 让我们看一个例子: 245有主要因素5, 7, 7。它的邻居是: 244 -> 2, 2, 61 245 -> 5, 7, 7 246 -> 2, 3, 41 最高质数因子在两个方向上都在增加,因此我们必须查看下一个邻居: 243 -> 3, 3, 3, 3, 3 244 -> 2, 2, 2, 61 245 -> 5, 7, 7 …
13 code-golf  math  primes 

4
负空间图
任务 您将得到一个正整数,并且必须输出具有这么多节点的“ 自补图 ”。如果您不知道什么是自助图,那么维基百科的文章将无济于事,因此以下是两种解释,一种是技术性的解释,另一种是非技术性的解释。 非技术 图是一组由线连接的节点。每对点可以通过一条线连接或不连接。图的“补码”是获取图并连接所有未连接的节点并断开所有已连接的节点的结果。 自补图是可以将补码重新排列为原始形状的图。下面是一个自补图的示例以及如何进行演示。 这是一个有5个节点的图形: 我们将用红色虚线突出显示可以进行连接的所有地方: 现在,我们将通过交换红色和黑色边缘来找到图形的补码: 这看起来不像原始图,但是如果我们像这样移动节点(每个步骤交换两个节点): 我们得到原始图!该图及其补图是同一图 技术 自补图是与其补图同构的图。 技术指标 通过最适合您的方法,您将收到一个正整数。然后,您将以您认为合适的任何方法输出图形,包括但不限于邻接矩阵表单,邻接列表表单,当然还有图片!输出的图必须是其自己的补码,并且具有与整数输入一样多的节点。如果不存在这样的图形,则必须输出一个伪造的值。 这是代码高尔夫球,您应努力减少字节数。 测试用例 以下是几个n的可能输出的图片 4 5 9

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.