Questions tagged «code-golf»

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

7
检测近乎完美的车牌
注意:这是由@Willbeing这个问题启发的,该任务的任务是计算一定长度的完美板的数量,但略有不同。 我们称其为满足以下条件的完美车牌: 它由字符组成,可以是大写字母([A-Z])或数字([0-9]) 用1索引(即A=1,B=2,...,Z=26)将英文字母的字母位置相加得出整数n 获取每个数字块,将它们求和,然后将所有结果相乘得到相同的结果,n n是一个完美的正方形(例如:49 (7 2),16 (4 2)) 一个近乎完美的车牌符合完美牌照的条件,除了ñ是不是一个完美的广场。 输入值 代表车牌文本的字符串,以任何标准格式输入,硬编码除外。 输出量 如果给定的字符串表示接近完美的车牌,则返回真实值(例如:True/ 1),否则返回虚假值(例如:False/ 0)。请注意,严禁使用任何标准形式的输出,但请注意,此漏洞是绝对禁止的。 例子 licence plate -> output A1B2C3 -> 1 A + B + C = 1 + 2 + 3 = 6 1 * 2 * 3 = 6 6 is not a perfect …

12
二元分支
给定一个二进制数字,您的任务是创建一个深度为2的该数字的“分支”。 例如,0作为输入,您应该完全输出以下内容: /000 /00 / \001 0 \ /010 \01 \011 这应该是分支机构如何创建的完全自我解释。深度2表示我们计算最多2个数字的分支。我们还按顺序计算分支,顶部为零,底部为零。 更多测试用例: 0 /000 /00 / \001 0 \ /010 \01 \011 1 /100 /10 / \101 1 \ /110 \11 \111 00 /0000 /000 / \0001 00 \ /0010 \001 \0011 01 /0100 /010 / \0101 01 \ …

2
用最少的火柴进行数学
元背景 这是关于Puzzling的一个问题,即时反应是“嗯,有人会用计算机解决这个问题”。对于要解决这个问题的程序到底有多复杂,存在争议。好吧,“这个程序必须有多复杂”几乎就是代码高尔夫的定义,所以也许PPCG可以解决这个问题? 背景 甲火柴方程基本上是一个正常的数学方程,但是其中数字和运营商通过将火柴到表物理构造。(这里的火柴棒的主要相关特征是它们相当坚固并且具有恒定的长度;有时人们会改用其他物体,例如棉签。) 对于这个挑战,我们不需要为火柴的排列方式定义特定的规则(就像链接的挑战一样)。相反,我们只关心表示一个计算为给定数字的表达式所需的火柴棍数量。 任务 这是您可以使用的数字字母和数学运算符,每个运算符的成本都包含在火柴棒中: 0,花费6条火柴 1,花费2个火柴棍 2,花费5条火柴 3,花费5条火柴 4,花费4个火柴棍 5,花费5条火柴 6,花费6条火柴 7,花费3个火柴棍 8,花费7根火柴 9,花费6条火柴 +,花费2个火柴棍 -,花费1个火柴棍 ×,花费2个火柴棍 (为了避免使用非ASCII字符,可以×根据需要*在程序的输出中表示为。在大多数编码中,×字节占用的字节数大于*,因此我想大多数程序都希望利用此余地) 您需要编写一个程序,该程序将非负整数作为输入(通过任何合理的方法),并生成一个计算结果为该整数作为输出的表达式(同样通过任何合理的方法)。此外,该表达式必须是平凡的:它必须包含至少一个运营商+,-或×。最后,就所有火柴棍成本而言,您输出的表达式在所有符合规范的输出中必须是最便宜的(或与最便宜的捆绑)。 澄清说明 您可以通过在一行中输出多个数字来形成多个数字(例如,11-1要产生的有效输出10)。完全准确地说,所得数字将以十进制表示。这种级联不是对中间结果起作用的操作;仅针对原始表达式中出现的文字数字。 为了这个挑战的目的。+,-和×是中缀运算符;他们需要左右左右有一个论点。不允许在前缀位置(例如+5或)中使用它们-8。 您没有可用的括号(或任何其他控制优先级的方法)。该表达式根据典型的默认优先级规则进行求值(首先进行乘法运算,然后从左至右对加法和减法求值)。 除上面列出的数学运算符或常量外,您无权访问任何数学运算符或常量;Puzzling经常接受“横向思考”解决方案,但是要求计算机自己提出这些解决方案是没有意义的,在PPCG上,我们希望客观地找到解决方案是否正确。 通常的整数溢出规则适用:您的解决方案必须能够在语言的假设(或实际)版本中使用任意大整数,默认情况下所有整数都是无界的,但是如果您的程序由于实现而在实践中失败不支持那么大的整数,这不会使解决方案无效。 如果您多次使用相同的数字或运算符,则每次使用时都要支付其火柴成本(因为,显然,您无法在桌子上的两个不同位置重复使用相同的物理火柴)。 没有时间限制;蛮力解决方案是可以接受的。(尽管您拥有比暴力破解还要快的解决方案,但即使更长,也可以随意发布;查看其他方法的比较总是很有趣的。) 尽管从不需要编写代码说明,但这可能是个好主意。代码高尔夫球解决方案通常很难阅读(尤其是对于不熟悉其编写语言的人),并且除非您了解其工作原理,否则很难评估(并对其投票)。 胜利条件 作为代码高尔夫球挑战,认为字节数更少的答案更好。但是,像往常一样,即使它们比某些其他语言更冗长,也可以用不同的方法或特定的语言发布答案。高尔夫的目标实际上是看您可以优化某个特定程序的程度,以这种方式进行操作可以为我们提供许多潜在的程序来优化。因此,如果有人使用完全不同的方法或完全不同的语言提交解决方案并获得更短的答案,不要气disc。很可能是您的答案得到了更好的优化,并且显示了更多的技巧,PPCG的投票者经常对此表示赞赏。

16
从不奇数或偶数
您是否注意到这是回文? 输入 非负整数或表示它的字符串 输出 4个可能的输出,代表数字的两个属性: 回文是否 棘手的#2 棘手的2号属性 如果数字不是回文,则此属性回答以下问题:“第一位和最后一位是否具有相同的奇偶性?” 如果数字是回文,则此属性回答问题“第一和中间数字是否具有相同的奇偶性?”。对于偶数长度,中间数字是中心两位数字之一。 例子 12345678-> False False 这不是回文,第一位和最后一位具有不同的奇偶校验 12345679->假 是不是回文,第一位和最后一位具有相同的奇偶性 12344321-> 是错是回文,第一个数字1和中间的数字4具有不同的奇偶校验 123454321-> True True 这是回文,第一个数字1和中间的数字5具有相同的奇偶校验 PS: 您可以决定输出类型和格式。它可以是任意4个不同的值。只需在您的答案中提及即可。

2
SchläfliConvex常规多面体解释器
背景 所述施莱夫利符号的形式为{P,Q,R,...}限定规则多面体和镶嵌的表示法。 Schläfli符号是递归描述,以p边的常规多边形为{p}开始。例如,{3}是等边三角形,{4}是正方形,依此类推。 {p,q}表示在每个顶点周围具有q个规则的p侧多边形面的规则多面体。例如,立方体在每个顶点周围有3个正方形,并用{4,3}表示。 {p,q,r}表示一个规则的4维多面体,每个边缘周围有r个{p,q}个规则多面体单元。例如,tesseract {4,3,3}在边缘周围有3个立方体,{4,3}。 通常,规则多面体{p,q,r,...,y,z}在每个峰周围都有z {p,q,r,...,y}个小面,其中一个峰是多面体中的一个顶点, 4多面体中的边,5多面体中的面,6多面体中的单元格和n多面体中的(n-3)面。 规则的多边形具有规则的顶点图形。正则多边形{p,q,r,... y,z}的顶点图为{q,r,... y,z}。 规则多面体可以具有五角星形的星形多边形元素,其符号为{5/2},由五边形的顶点表示,但交替连接。 根据构造的角度缺陷,Schläfli符号可以表示有限凸多面体,欧氏空间的无限细分或双曲空间的无限细分。正角缺陷使顶点图形可以折叠成更高的维度,并以多面体的形式循环回到自身。零角度缺陷会细分与小平面相同尺寸的空间。负角缺陷不能在普通空间中存在,而可以在双曲空间中构造。 竞争 您的目标是创建一个程序,该程序在通过SchläfliSymbol时将返回凸多面体的完整描述。这只是Schläfli符号的一个子集,但它是最简单的符号,我相信即使没有其他可能性,这也将是一项非常困难的任务,而多面体是镶嵌的起点。设计该问题的规则时要以将结果作为API的想法进行设计,而我无法在Internet上找到任何此类程序。 您的程序必须完成以下所有操作。 该程序必须能够生成任何有限尺寸的规则凸多面体。在2维中,这包括n个角。在3维中是柏拉图式固体,在4维中包括tesseract,orthoplex和其他一些实体) 程序必须(a)在原点上放置一个点,或(b)确保所有点的平均值是原点。方向无关紧要。整体大小无关紧要。 程序必须提供完整的描述,这意味着对于4维对象,程序将返回/打印顶点,边,面和多面体。这些报告的顺序无关紧要。对于多面体,这是渲染对象所需的信息。 你不会需要处理: 镶嵌 双曲几何 分数Schläfli符号(非凸) 嵌入式Schläfli符号(非均匀平铺) 如果要求您执行任何上述操作,则可能返回错误。 示例:多维数据集 输入: 4 3 输出: Vertices 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 …

15
索引一个数字
给定一个数字字符串或一个整数作为输入,您将不得不对其进行索引。 这是修改输入的方式。我们将以30043376111一个示例为例: 首先,找到各个数字每次出现的索引总和: 0: 1 + 2 = 3 1: 8 + 9 + 10 = 27 3: 0 + 4 + 5 = 9 4: 3 6: 7 7: 6 然后,构造一个新的整数或字符串,其中上面的数字按其索引的总和顺序排列。如果多个数字产生相同的总和,则较小的数字位于较大的数字之前: 047631 最后,删除所有前导零,然后返回或打印结果: 47631 您必须编写一个程序或函数来返回或打印索引的输入。 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 如果需要,可以添加更多的测试用例。

5
模拟即时径流选举
这是选举!我们所在的区域实施称为即时径流的投票系统(有时称为替代投票或优先投票)。每个投票者从最喜欢的到最不喜欢的顺序对每个候选人进行排序,为他们的最喜欢的候选人标记一个“ 1”,为他们的第二个候选人标记一个“ 2”,依此类推,直到为每个候选人编号。我让这个友好的考拉解释其余的事情: (图像从改性原始通过帕特里克亚历山大,所述下使用CC BY-NC-SA 3.0 AU许可)。 如果您更喜欢文本形式的即时径流解释,也可以参考Wikipedia文章。 (注意:虽然可能不大,但也有可能有两个或两个以上投票最少的候选人。在这种情况下,请以相等的概率随机选择其中之一,并消除他们。) 在此挑战中,输入的第一行是字符串列表,这些字符串是选举候选人的名称。在这些示例中,尽管可以随意调整输入格式以适合您的语言,但我使用了管道分隔值。 The Omitted Anti-neutrino|Placazoa|Alexander the Awesome|Tau Not Two|Semolina Sorcerer 接下来是n输入行,也是行列表,每行代表一个表决。第一个条目表示投票#1优先,第二个投票#2,依此类推。例如: Alexander the Awesome|Semolina Sorcerer|Tau Not Two|Placazoa|The Omitted Anti-neutrino 这意味着该特定投票将亚历山大作为第一优先级,将Semolina Sorcerer作为其第二优先级,将Tau Not Two作为其第三优先级,依此类推。您可以假设每个投票都将包含每个候选人,并且不会有空白或不完整的投票。 给定选票作为输入,您的程序或功能应随后输出选举的获胜者。您可以在此处找到Python 3中未引用的参考实现。 输入和输出示例 输入值 Dionysius|Portal Butter|Alexander the Awesome|Red Trainmen Portal Butter|Alexander the Awesome|Dionysius|Red Trainmen Dionysius|Portal Butter|Alexander the Awesome|Red Trainmen …
15 code-golf 

20
将输入转换为方向
挑战 以<n1>, <n2>number可以为-1、0或1 的形式给定输入,返回相应的基本方向。正数在x轴上向东移动,y轴上向南移动,负数在x轴上向西移动,y轴上向北移动。 输出必须在形式South East,North East,North。区分大小写。 如果输入为0,0,则程序必须返回That goes nowhere, silly!。 样本输入/输出: 1, 1 -> South East 0, 1 -> South 1, -1 -> North East 0, 0 -> That goes nowhere, silly! 这是代码高尔夫球,最短的答案以字节为单位。

5
翻译迷失
如果您不熟悉这种格式,这是一个警察和强盗,请单击标记以转到Wiki。这个问题不会有强盗的线索。 警察 作为警察的任务是从“ 整数序列在线百科”中选择两个序列,并编写一个程序以一个序列的第n个元素为输入并输出第二个序列的第n个元素。然后,您将做出包含代码的答案,并省略所选的序列。强盗将尝试找到您选择的序列,如果一个人设法找到了您要记住的序列或您的程序必须将其他序列标记为“ 破解”。如果强盗通过裂缝告知您您认为无效,则可以出示不是裂缝的证据。否则,您必须对其进行标记。 根据7天内未破解的常见答案,可以标记为安全。一名警察可能会通过揭示他们想出的顺序来将其答案标记为安全。一旦安全,答案将不再被破解。 目的是使程序的字节数最小化,同时保持其完整性。 例 以下Python代码将A000290的第n个元素(平方数)转换为A000217(三角形数): lambda x:sum(range(0,int(x**.5+1))) 规定和要求 如果选择的序列尚未被证明是有限的,则必须输出所有可能存在的术语,而不仅仅是OEIS页面上列出的术语 作为以前的规则的例外,没有无限精度整数的语言不必输出或输入超出其范围的数字。 输入序列的大小一定不能证明小于输出序列的大小。 您的输入序列不得包含任何重复元素(否则该任务几乎是不可能的) OEIS默认情况下在其页面上包含一个索引(“ OFFSET”标头之后的第一个数字),如果您选择另一个索引,则这是您对n的偏移量(n等于序列中第一个元素的索引)。你的答案。 如果您选择的偏移量不同于OEIS上列出的偏移量,则仍必须将输入序列中的所有元素映射到输出序列中的相应元素。 如果您的程序收到的输入不在输入序列中,则它可能会做任何希望的事情(未定义的行为)。但是,仍然输出整数可能符合您的最大利益。 故意使您的代码难以运行,这很不精打细算,无论是通过花费大量时间来执行代码还是通过非自由语言选择。虽然我将强制执行后者,但我不能客观地强制执行前者。但是,为了好玩,我恳请您不要尝试使用前者,因为对于那些计算机较弱的人来说,挑战尤其困难。 强盗 作为强盗,您的任务是选择完整,不安全的答案,并找到它们之间的对应顺序。如果找到解决方案,则可以使用有效的解决方案(不一定是警察的预期解决方案),在适当的答案上注释序列。 强盗不必担心验证两个特定的序列是否为解决方案,如果匹配OEIS上的所有条目,则应发布解决方案。如果这不是警察考虑的顺序,则警察可能会提供证明它是不正确的证据,或者如果找不到他们,则将其标记为破裂。

20
可视化嵌套数组
您将获得一个嵌套数组。您的程序必须可视化数组。 但是..如何? 例如,假设我们有一个嵌套数组,例如 [["1","2"],[["1","2"],"3"],"4",[[[["5"]]]],"6"]。 此嵌套数组可以显示为: ->1 ->2 -->1 -->2 ->3 >4 ---->5 >6 例子 Input 1: ["Atom",["Proton",["Up Quark", "Up Quark", "Down Quark"], "Neutron", ["Up Quark", "Down Quark", "Down Quark"], "Electron"]] Output 1: >Atom ->Proton -->Up Quark -->Up Quark -->Down Quark ->Neutron -->Up Quark -->Down Quark -->Down Quark ->Electron Input 2: …

13
更改代码,更改顺序:强盗
这是警察和强盗的挑战。有关警察的信息,请转到此处。 这个挑战涉及警察选择的两个OEIS序列-S 1, S 2-以及对这些序列进行打高尔夫球和模糊处理的程度。 警察正在构建产生S 1的代码A,并给出一个数字X,他们声称这是创建产生S的B的最佳Levenshtein距离(以字符为单位) 2。 强盗的挑战 要破解特定警察的提交内容,强盗必须提供与该答案产生S 2(n)且Y字符从A变为(带有)的相同语言(和版本)的程序C。强盗不一定需要找到完全相同的东西Y <= X与警察(秘密地)产生 B代码。强盗的陈述必须遵循与警察的陈述相同的0索引或1索引。 如果您能解决此问题,请在解决方案中发布答案,并链接到警察的答案,然后在警察的答案上留下评论(链接回您的答案)。 每个警察的答案只能破解一次,当然,您也不能破解自己的答案。如果警察的答案在被破解之前或之后被证明是无效的,则不计入强盗的分数。 获胜和得分 抢劫犯会(X - Y)*5 + 5根据他们的每个得分进行得分,总分最高的抢劫犯会获胜。 进一步规则 您不得使用任何内置函数进行散列,加密或随机数生成(即使您将随机数生成器植入固定值)。 允许使用任何程序或函数,但代码不得为摘要,并且不得假定为REPL环境。 您可以采用任何方便的格式输入并提供输出。两个序列的输入/输出方法必须相同。 Levenshtein距离这一挑战的权威计算器就是这个 Planet Calc上的计算器。 除了作为一个CNR的挑战,这是代码高尔夫球因此所有往常一样打高尔夫球规则。

10
Windows错误框更上一层楼
您知道那些Windows盒子只能做一件事吗? 让我们将其带入一个新的高度! 挑战 创建一个带有按钮的对话框,该按钮可随您的光标移动到任何地方! 眼镜 不可输入。可能输出到STDOUT或STDERR。您必须使用一个按钮打开一个窗口(不需要文本,但是文本可能包含在窗口标题,对话框或按钮中)。该按钮必须是可单击的,并且必须始终位于光标下方,以便您只能单击它。单击后,它可以做任何您想做的事,但是请不要使它崩溃,因为我将对此进行测试...只要不按下按钮,对话框就必须保持打开状态,但是它不需要关闭按钮时关闭。 你可以做的假设 您可以假定光标将停留在绘图画布中。 您可以假定窗口将保持焦点,但是只要不按下按钮,就不能使窗口失去焦点。 伪代码示例 这是一些示例伪代码: Open Dialog Box Add Button to Dialog Box at position X, Y WHILE True: SET Dialog Box to CursorX - X, CursorY - Y 无法为该挑战提供测试用例 这是一个代码高尔夫球挑战赛,因此3月14日(Pi Day)最短的有效提交将获胜!
15 code-golf 

5
查找具有最小均值2.0的子矩阵
您会得到一个n×m的整数矩阵,其中n,m> 3。您的任务是找到平均值最低的3×3子矩阵,然后输出该值。 规则和说明: 整数将为非负数 可选的输入和输出格式 输出必须精确到至少2个十进制小数点(如果不是整数) 子矩阵可以由任意列和行组成 测试用例: 1 0 4 0 1 0 1 0 4 0 1 0 4 3 4 3 4 3 1 0 4 0 1 0 Minimum mean: 0 (We have chosen columns 2,4,6 and rows 1,2,4 (1-indexed) ----------------------------- 4 8 9 7 5 …
15 code-golf  math  matrix 

6
你有一天连胜!
编写一个程序,跟踪其运行的连续天数。 白天在午夜(运行该程序的计算机的本地时间)重置。 如果一天中没有运行该程序,则将计数器重置为零。 每次运行该程序时,如果这是该天第一次运行该程序,则计数器应增加一天。这意味着程序第一次运行时,应该说:“您有1天的连胜!” 程序的输出格式为: You have a [streak_length] day streak! 您可以选择在外部存储数据或修改源代码。 这是代码高尔夫球,因此以字节为单位的最短代码胜出!
15 code-golf  date 

10
找到战争游戏的结果
找到战争游戏的结果 当我上小学时,有一场“石头剪刀布”式的游戏,我们在集会期间,等我们的老师,在课间休息时会玩。我们称之为“战争”。然而,经过一些搜索,事实证明这是“ Shotgun Game”(根据WikiHow)的简单得多的变体。由于规则略有不同,因此我将其称为“战争”: 2个人坐在彼此对面。游戏的目的是“杀死”另一位玩家。每回合,您可以玩以下3个动作之一: 重新装填:您有一杆枪可以一次射击。必须先重新加载它,然后才能每次射击。在已经拥有弹药的情况下重新加载是合法的,但不会执行任何操作。用两只手轻敲您的太阳穴即可象征重新装填。每个玩家从0弹药开始。 警卫:唯一安全的举动。如果您在守卫时被枪杀,则不会死。双臂交叉在胸前象征着警卫。 火:开枪。要成功射击,您必须自上次射击以来已重新加载。如果您的对手正在加注,您将获胜。如果他们也开火,而且你们俩都有弹药,那就平局了。如果他们在守卫,您就浪费了弹药。虽然没有弹药射击是合法的举动,但它却无能为力,使您像重新装弹一样容易受伤。指向其他玩家象征着射击。 玩法与RPS相似,在于每个玩家同时放弃选择(我们在回合之间两次敲击双腿以保持节奏,但这对挑战并不重要)。 挑战: 您的任务是找到战争游戏的结局。它可以是功能或完整程序。 输入值 每个玩家选择的回合选项将由一个字符/字符串表示: r:重新加载 g:守卫 f:着火 输入将是成对列表,带分隔符/不带分隔符的字符串或沿这些行的其他任何内容。 Python中的示例输入可以为[("r", "g"), ("f", "r")],这意味着在第一回合中第一位玩家重新装弹,第二位玩家守卫。在第二个回合中,第一个玩家射击,而第二个玩家重新加载。玩家一赢得这场比赛。同样的输入可以选择性地为代表"r g f r","rgfr","rg fr" "rg-fr"... 您可以假设以下内容: 输入内容将与您选择的格式匹配,并且仅包含有效字符。 有人会在100转内死亡。 但是,您不能假设某人死亡时转弯结束。 输出量 一个值,指示谁(或谁先赢*)。您可以选择每种方案的输出内容,但必须考虑以下因素: 玩家1获胜 玩家2获胜 他们互相残杀(平局) 每个结果必须具有地区值,并且对于每种情况都必须始终相同。 例如:您可以1在玩家1获胜2时,玩家2获胜时以及0平局时输出。然后,您必须在玩家1获胜时,玩家2获胜时以及平局时始终输出。120 它可以返回或打印到标准输出。尾随空格很好。 显然,导致平局的唯一情况是两名球员都开火,并且双方都有弹药。 *由于在此挑战中,某人死亡后回合可能会继续,因此最终可能会有1个以上的玩家获胜。您需要根据输入查找谁先赢。 测试用例(假设1P1获胜,2P2获胜以及0平局): "rg fr" => 1 (P1 shot P2 while they …
15 code-golf  game 

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.