编程拼图和代码高尔夫

编程益智爱好者和代码高尔夫球手的问答

18
站在长长的奎因线旁
或:建立垂直的麦片 受到启发站在长排线上。 您的任务是构建一个垂直的quine,并使其线长度尽可能短。 计分 最短的行长(不包括换行符)获胜,同时使用代码高尔夫标准作为决胜局。 行长确定为程序中最长的行,不包括换行符。 例如: $_= Q. P 行长为3,字节数为8,而: Q $ _ P 行长为1,字节数为7(假设没有尾随换行符)。 规则 提篮必须符合提篮的社区定义。 禁止出现标准漏洞。

15
帮助pannenkoek数A印刷机
pannenkoek2012的目标是通过尽可能少地按A按钮来完成Super Mario 64,这会使Mario跳跃。每个“印刷机”都由三个部分组成: 按下按钮 持有任何时间 发布 请观看此视频(1:15-3:23),以获取包含上述图片的精彩说明。(但是,此挑战将不使用半按A术语,并且会提出需要释放A的障碍。) 任务: 给定一系列需要按下(P),按住(H)或释放(R)A按钮的障碍物,请按给定的顺序输出克服这些障碍物所需的最少按下次数。最初不按住A按钮。 正式表示:给定一个字符串S,将包含S PHR的形式的字符串(PH*R)*视为子序列,并P在这样的字符串中输出尽可能少的。或者,找到P?H*R?可以拆分为S 的形式的最小块数。 例 让我们看一下input RHRPHHHR。A按钮开始时没有保持R住,因此要克服初始障碍,需要先按下按钮,然后再松开(按#1)。接下来,我们需要按住按钮H,这又需要首先将其按下(按#2)。然后,可以随后将其释放以满足R其需求。最后,PHHHR只需按一下(按#3键),然后按住HHH并松开,即可满足其余条件R。因此,输出计数为3。 另一种查看方式是,我们可以将输入字符串分成3个形式的部分,PHH..HHR其中字母可以省略。 R HR PHHHR 输入格式 输入将是表示按下,按住和释放的元素的列表或字符串,以供您选择: P, H, R p, h, r 1, 2, 3 0, 1, 2 按照给定的顺序进行匹配。输入将不为空。 测试用例: P 1 H 1 R 1 HP 2 RHP 3 HHR 1 PHRH 2 RHRPHHHR …

23
二进制数字魔术
挑战很简单;输出以下六个2D整数数组: [[ 1, 11, 21, 31, 41, 51], [ 3, 13, 23, 33, 43, 53], [ 5, 15, 25, 35, 45, 55], [ 7, 17, 27, 37, 47, 57], [ 9, 19, 29, 39, 49, 59]] [[ 2, 11, 22, 31, 42, 51], [ 3, 14, 23, 34, 43, 54], …

18
对警察和强盗进行硬编码(警察)
这是警察和强盗的挑战。强盗的线索在这里。 需要考虑的一个有趣问题是: 如果我有一个数字序列,那么在清楚我在说什么序列之前,我必须提供几个数字? 例如,如果我想谈的正整数,以便从开始111,我可以说,1,2,3,…1,2,3,…1,2,3, \dots,但事实是否真的足够了吗? 我有一个回答这个问题的方法,而作为代码窃贼,它涉及代码高尔夫球。如果产生这些术语的最短代码产生了序列的所有术语,则您已提供了足够的序列术语。如果我们从代码高尔夫的角度来考虑这一点,那意味着您已经提供了足够的测试用例,从而使通过测试用例的最短代码可以完成所需的任务。 挑战 这个挑战是警察和强盗的挑战。警察将在其中展示测试用例,而强盗将不得不寻找一种比预期序列更短的欺骗测试用例的方法。警察将提出以下内容: 一段代码,将非负整数作为输入,并产生一个整数作为输出。此代码将定义您的顺序。您的代码不需要支持0作为输入,而是选择将1作为最小输入。如果您的答案是这种情况,则应该很清楚。 任何可能影响输出的相关平台或语言要求,例如longint的大小。 一个数字nnn,以及该代码计算出的序列的前nnn项。这些将充当“测试用例”。 鼓励您解释序列的作用并链接OEIS(如果存在),但是定义序列的是您的代码,而不是描述。 强盗将使用比所介绍的语言短的语言来找到一个程序,并通过所有测试用例(对于前nnn输入产生与警察代码相同的输出)。强盗的代码在输出上还必须与警察的程序有所不同,即大于某个数字nnn。 警察在提交之前必须能够破解自己的答案。 一周后,警察可能会发现他们的裂缝并将答案标记为“安全”。标记为这样的答案将不再被破解。 计分 警察的答案将根据字节数进行评分,而字节数越少越好。破解答案的得分是无限的。

8
高尔夫球场
在这个挑战中,您的任务是摄取阴离子和阳离子,并输出化合物的化学式。输入遵循以下规则: 取在2个字符串(以任何顺序)表示的阴离子和阳离子,例如F,NH_4,或Al。 要接受每个离子的电荷,可以将其作为插入符号(例如F^-1)分隔的字符串的一部分,也可以接受其他数字参数。 注意:只要您的数字输入类型是带符号的,阴离子的电荷就会作为负数传递。 这些符号将始终是真实的,并且收费准确。 输出应遵循以下规则: 使用_了标:铁2 Ø 3会Fe_2O_3。 阳离子优先:NaCl,而不是ClNa。 中性分子:李2 O,不是LIO或LIO - 。 可能的最低系数:Fe 2 O 3,而不是Fe 4 O 6。 没有下标的:NaCl,不是Na 1 Cl 1。 没有移位:NH 4 OH,NH未5 O. 条件括号: 不要在单原子离子上使用括号:MgCl 2,而不是Mg(Cl)2。 如果每个分子中只有一个离子:KClO 3,而不是K(ClO 3),请不要使用括号。 如果有两个或多个多原子离子,请使用括号:Be 3(PO 4)2,不是Be 3 PO 4 2或Be 3 P 2 O 8。 以下是一些其他示例输入和输出: Input Output …

30
归一化向量
为了正常化的载体是将它扩展到1的长度(单位矢量),同时保持方向一致。 例如,如果我们想正常化的矢量3个组件,ü,我们会先找到它的长度: | u | = sqrt(u x 2 + u y 2 + u z 2) ...然后按此值缩放每个分量,以获得长度为1的向量。 û= u÷| u | 挑战 您的任务是编写一个程序或函数,给定一个带符号的整数的非空列表,将其解释为向量并将其标准化。例如,这应该适用于任意数量的维度(测试用例四舍五入到小数点后两位): [20] -> [1] [-5] -> [-1] [-3, 0] -> [-1, 0] [5.5, 6, -3.5] -> [0.62, 0.68, -0.40] [3, 4, -5, -6] -> [0.32, 0.43, -0.54, …

29
最常见的倍数
不要与最小公倍数相混淆。 给定具有多个元素的正整数列表,则返回数组中两个元素的最常见乘积。 例如,列表的MCM [2,3,4,5,6]为12,产品表为: 2 3 4 5 6 --------------- 2 | # 6 8 10 12 3 | # # 12 15 18 4 | # # # 20 24 5 | # # # # 30 6 | # # # # # 感谢DJMcMayhem的桌子 由于12出现的次数最多(两倍2*6和3*4)。请注意,我们不包括的元素,本身的产品,所以2*2还是4*4不不会出现在这个列表中。但是,相同的元素仍将相乘,因此该表[2,3,3]如下所示: 2 3 3 …

8
最小的看不见的,但没有共享数字!
挑战 在PPCG,我们确实喜欢我们的序列,所以这里又很有趣。 让我们定义a(n)为最小的非负整数,X这不等于任何a(k)(0 < k < n),并a(n-1)和X不共享任何十进制数字。a(0) = 0 给定一个输入n > 0,输出这样a(n)。 例如,对于input n = 13,我们有a(13) = 20,因为a(12) = 11和20是最小的非负整数,但我们尚未看到它与不共享任何十进制数字11。 序列 这是让您入门的前20个学期。这是OEIS上的序列A067581。 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 22, 11, 20, 13, 24, 15, 23, 14, 25 规则 可以假定输入和输出适合您语言的本机整数类型。 输入和输出可以任何方便的格式给出。 您可以选择0索引(例如我在此处的示例),也可以选择1索引进行提交。请说明您在做什么。 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。 如果可能,请提供一个在线测试环境的链接,以便其他人可以尝试您的代码! 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常用的高尔夫规则都适用,并且最短的代码(以字节为单位)获胜。

11
通过针孔照相机的日食
此挑战是受2017年8月21 日日食启发的简单ASCII艺术挑战。给定input 0 <= n <= 4,输出下面描述的日食的相应阶段: n=0: ***** ** ** * * * * ** ** ******* n=1: ***** ** ***** * ******* * ******* ** ****** ******* n=2: ***** ********* *********** *********** *********** ******* n=3: ***** ***** ** ******* * ******* * ****** ** ******* n=4: ***** ** …

6
救命!我的计算器出现故障!
介绍 我的计算器很奇怪。有时,当我输入时8会显示2。有时,当我输入a 6时会显示+。一些按钮混在一起! 谁能帮我确定哪个? 挑战: 输入:错误方程式列表,结果正确。 输出:交换的两个按钮。 例如: 输入可以是: 123 = 3 8423 = 252 4+4 = 8 4*7-10 = 417 9/3 = 3 42-9 = -36 其预期的输出是:2和*。 为什么?因为如果我们交换2和*,则所有等式都是正确的: 1*3 = 3 84*3 = 252 4+4 = 8 427-10 = 417 9/3 = 3 4*-9 = -36 挑战规则: 输入可以采用任何合理的格式。可以是一个以空格分隔的字符串;字符串列表或-array; 一个包含方程式的列表和另一个包含正确结果的列表。你的来电。请说明您使用的输入格式! …
28 code-golf  number  arithmetic  integer  code-golf  math  number  geometry  code-golf  grid  code-golf  math  number  sequence  primes  code-golf  sequence  kolmogorov-complexity  code-golf  string  ascii-art  alphabet  code-golf  math  sequence  integer  code-golf  number-theory  integer  natural-language  code-golf  date  code-golf  function  code-golf  ascii-art  code-golf  math  number-theory  primes  classification  code-golf  array-manipulation  decision-problem  matrix  code-golf  number  code-golf  code-golf  ascii-art  matrix  code-golf  string  code-golf  sequence  base-conversion  code-golf  code-golf  math  number-theory  combinatorics  integer-partitions  code-golf  integer  binary  base-conversion  code-golf  integer  base-conversion  palindrome  code-golf  code-golf  integer-partitions  code-golf  math  ascii-art  matrix  code-golf  number  sequence  number-theory  matrix  code-golf  interpreter  code-golf  graph-theory  code-golf  ascii-art  decision-problem  code-golf  division  code-golf  array-manipulation  primes  code-golf  string  ascii-art  code-golf  primes  counting  code-golf  matrix  unicode  code-golf  source-layout  code-golf  grammars  code-golf  string  cops-and-robbers  regular-expression  obfuscation  string  code-challenge  cops-and-robbers  regular-expression  code-golf  kolmogorov-complexity  game  card-games  code-golf  kolmogorov-complexity  code-golf  array-manipulation  matrix  code-challenge  cops-and-robbers  code-challenge  decision-problem  cops-and-robbers  code-golf  permutations 

29
输出一个字谜!不,不是那个!
给定一个彼此为字谜的唯一字符串的列表,请输出与列表中每个单词都不同的那些单词的字谜。 字符串将为字母数字,并且保证有一个有效的字谜。 程序或函数可以但不一定是不确定的,这意味着在给定相同输入的情况下,只要每个可能的输出都是有效的,多次运行该代码即可产生不同的输出。 测试用例 [Input] -> Possible output ----------------- [ab] -> ba [aba, aab] -> baa [123, 132, 231, 312, 321] -> 213 [hq999, 9h9q9, 9qh99] -> 999hq [abcde123, ab3e1cd2, 321edbac, bcda1e23] -> ba213ecd

10
警报优化
我的闹钟 我是美国人,我的(数字)闹钟也是如此。要设置警报,它从先前的时间开始。按下小时按钮将其向上移动一小时,而按下分钟按钮将其向上移动一分钟。同时按下两个按钮会将其重置为午夜(上午12:00),并计为两次按下按钮。 当小时数超过上限(12)时,它将重置为1并切换AM / PM指示灯。当分钟数超过上限(59)时,它们将重置为0,而不会影响小时数。 任务 给定开始时间和目标时间,您的任务是输出将我的闹钟设置为目标时间所需的最佳按钮按下次数。 您可以采用最适合您的格式输入。对于这两个输入,程序唯一需要的数据是小时和分钟。举例来说,这意味着您可能会以大纪元以来的毫秒数为单位来提取数据,并提取小时和分钟,但是您可能无法在年,月,秒等中进行任何编码。请注意,尽管您可能会使用“军事时间”(或世界上大部分时间的常规时间),但这不会改变我的时钟的工作方式。 例子 1:15 pm -> 2:30 am 您可以同时按下两个按钮以将其重置为12:00 am,然后增加至2:30 am,即2+2+30 = 34按下按钮。您也可以增加到凌晨2:30,这就是13+15 = 28按下按钮。因此,您的输出为28。 3:58 am -> 4:02 am 您可以重置和递增,这将是2+4+2 = 8按下按钮。您也可以增加1+4 = 5按钮的数量。因此,您的输出为5。 10:55 pm -> 1:00 am 您可以重置和递增,这将是2+1 = 3按下按钮。您也可以增加3+5=8按钮的数量。因此,您的输出为3。 1:00 am -> 1:59 pm 您可以重设和递增,但不仅仅是递增,还要多按三下。因此,您的输出为12+59 = 71。 测试用例 Current Target …

6
六角邻接
上图显示了六边形的六边形网格。网格中的每个单元都分配了一个索引,从中心开始,如图所示逆时针旋转。请注意,网格将无限期继续-上面的图片只是第一部分。下一个六边形将与60和37相邻。 您的任务是确定此网格上的两个给定单元格是否相邻。 编写一个程序或函数,给定两个单元格索引,如果两个单元格相邻,则打印/返回真实值;如果不相邻,则打印/返回真实值。 如果不受实际原因的限制,则您的代码理论上应适用于任何大小的输入。 真实的测试案例: 0, 1 7, 18 8, 22 24, 45 40, 64 64, 65 虚假测试用例: 6, 57 29, 90 21, 38 38, 60 40, 63 41, 39 40, 40 这是代码高尔夫球,因此最短的答案以字节为单位。鼓励即使是非深奥的语言也要进行解释。

23
基本排序,带有令人讨厌的错误
您的输入是一个包含5-255个正整数的列表/序列/向量/数组,不一定是唯一的。您可以假设最适合的输入格式是什么,并且每个整数(以及整数的数量)都是从5-255范围内随机选择的。 目标是以相同(或等效)格式输出相同列表,但按升序(不降序)排序。学习语言的常见早期练习。提交的内容包括: 正确起作用并达到目标的答案;和 第二个答案包含一个令人讨厌的错误。在1%到10%的时间之间,输出需要是一个格式正确且包含正确元素的列表,但是顺序错误(除了正确排序以外的任何顺序)。其余时间,程序必须正确运行并达到目标。 这两个答案必须具有Levenshtein距离 1;也就是说,我们可以通过删除一个字节,添加一个字节或更改一个字节来获得另一个。 在代码高尔夫球中照常计分(基于两个答案中的较短者),并禁止通常的漏洞。 如果烦人的错误是与输入无关的,则10%的奖金(降低得分),即再次使用相同的输入不会重现该错误(除了1%到10%的时间)。

25
最小零基数
给定一个正整数n,输出最小的底数b >= 2,其中n底数b中没有前导零的表示不包含0。您可能会假设b <= 256所有输入都是这样。 测试用例 1 -> 2 (1) 2 -> 3 (2) 3 -> 2 (11) 4 -> 3 (11) 5 -> 3 (12) 6 -> 4 (12) 7 -> 2 (111) 10 -> 4 (22) 17 -> 3 (122) 20 -> 6 (32) 50 -> 3 (1212) …

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.