编程拼图和代码高尔夫

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

30
n到b的下一个幂有多远?
设n和b为大于的正整数1。 输出n到的下一个幂的距离b。 对于n=5和b=3,3from 的下一个幂5是9(3^2 = 9),所以输出是9 - 5 = 4。 对于n=8和b=2,2from 的下一个幂8是16(2^4 = 16),所以输出是16 - 8 = 8。请注意,在此示例n中2,这是的幂。 测试用例: n b output 212 2 44 563 5 62 491 5 134 424 3 305 469 8 43 343 7 2058 592 7 1809 289 5 336 694 3 35 324 …

25
我在想一个数字(警察线)
强盗的线程在这里 在这个警察强盗挑战中,警察会想到一个正整数。然后,他们将编写一个程序或函数,当提供数字作为输入时输出一个值,而对于所有其他正整数输入则输出另一个值。然后,警察会在答案中显示该程序,并将数字保密。强盗可以通过找到数字来破解答案。 要注意的是:这不是 代码高尔夫,而是您的分数将是秘密数字,分数越低越好。显然,在强盗仍在尝试寻找分数时,您无法透露分数。发布一周后仍未破解的答案可能会显示其分数并标记为安全。安全答案无法破解。 可能不言而喻,但您应该能够为答案打分。那就是您应该确切知道决策机器接受什么值。仅仅知道有一个是不够的。 密码功能的使用 与大多数警察和强盗要求您不要使用加密功能的挑战不同,此挑战不仅完全允许他们使用,而且鼓励他们使用。只要您想赢,就可以以任何方式自由创建答案。话虽如此,这里也欢迎使用其他方法的答案。挑战的目标是获胜,只要您不作弊,就不会有什么失败。

13
大码…为您服务!
在《黑暗骑士》崛起的开幕式上,中央情报局特工与小人贝恩之间进行了相当尴尬的对话。 中央情报局特工: “如果我把那个[面具]拉下来,你会死吗?” 贝恩: “这将非常痛苦……” 中央情报局特工: “你是个大个子。” 贝恩: “……给你。” 不确定贝恩是否打算说“为您感到痛苦”或“为您大佬”。让我们通过代码高尔夫彻底解决这个问题! 挑战 您的任务是编写一个程序,该程序根据输入的整数重新排列上述对话框的顺序。 CIA特工对话的话是: If I pull that off will you die? You're a big guy. 贝恩的对话词是: It would be extremely painful... for you! 请注意die?,You’re,painful...并且you!被认为是单个单词。 给定整数n作为输入,将其转换为二进制 从左到右读取二进制数字,如果是1,则从CIA代理对话框中输出下一个单词,如果是,则从Bane对话框中输出下一个单词0。单词应以空格分隔。扬声器更改时,添加换行符。另外,在每个对话行前加上演讲者姓名(BANE:或CIA:)。 您可以假设输入始终以二进制形式的1开头,并具有12个1和7个0。 例 522300 转换为二进制: 1111111100000111100 数字以8个开头,因此我们从CIA的座席对话中输出前8个字,并在它们前面加上CIA: CIA: If I pull that off will you …
32 code-golf 

3
OOP:面向对象的编程
似乎不太适合代码打高尔夫球的鲜为人知的编程范例之一是面向重叠编程(OOP) *。当编写部分相同的代码时,只需将相同的部分重叠并以某种方式记住两条原始代码行的开头,就可以节省许多字节。您的任务是编写两个重叠的程序或函数compress,decompress并遵循以下规范: *请不要在生产代码中使用。 compress compress以任何方便的格式获取两个字符串,并尽可能地将它们重叠。即s返回的字符串的长度最小,这样两个输入字符串都是的子字符串s。此外,返回一些标识两个字符串的开始和结束索引的输出。 示例:(具体的IO格式由您决定) compress("abcd", "deab") -> "deabcd" ((2,5),(0,3)) compress("abcd", "bc") -> "abcd" ((0,3),(1,2)) compress("abc", "def") -> "abcdef" ((0,2),(3,5)) or "defabc" ((3,5),(0,2)) decompress decompress计算的反函数compress,给定一个字符串和两个开始和结束索引(以您的返回格式compress),返回两个原始字符串。您只需要处理有效的输入。以下等式适用于所有字符串s1,s2: (s1, s2) == decompress (compress (s1, s2)) 示例:(compress示例的反向) decompress "deabcd" ((2,5),(0,3)) -> "abcd" "deab" decompress "abcd" ((0,3),(1,2)) -> "abcd" "bc" decompress "abcdef" ((0,2),(3,5)) -> …

1
生成金字塔方案代码
金字塔计划是@ ConorO'Brien开发的一种语言。在金字塔计划中,您编写的代码如下所示: ^ ^ / \ /3\ / \ --- / + \ ^-------^ /9\ /3\ /123\ --- ----- 现在,该代码具有两个明显的特性:很难解析,也很难编写。Conor解决了第一个问题,但是解决第二个问题将是您的工作。 上面的代码由PyramidScheme解释器处理为嵌套的字符串数组,如下所示: [["+", ["9123", "3"]], "3"] 您的任务是编写一个给定嵌套字符串数组的程序或函数,输出或返回重新创建的PyramidScheme代码。您可以假设输入数组将始终有效。 金字塔是等腰三角形。顶部是^,侧面与/和对角倾斜\,底部是-。两个底角为空或包含其他金字塔的起点,它们是自变量。中间充满了金字塔的名称,忽略了换行符。 解析器将代码转换为可用格式的方式如下。首先,它会扫描顶级金字塔。如果不带参数,则用单个字符串表示它并继续前进。否则,它表示为数组["name",[arg1,arg2]]或["name",[arg1]]。参数是金字塔左下角和右下角的金字塔,它们可以是字符串,也可以是如上所述的更多数组。您可能会注意到它有点像Lisp,在这种情况下,您可能还注意到了语言名称的双关语。金字塔被完全表示后,解析器将移动到下一个金字塔。 这是代码高尔夫,最短的代码获胜! 测试用例:这些不是唯一有效的输出,它们是有效输出的示例。 [["+", ["9123", "3"]], "3"] ^ ^ / \ /3\ / \ --- / + \ ^-------^ /9\ /3\ /123\ --- …

30
计算整数的二进制值中最长的1序列
目标 给定一个非负整数,创建一个函数,该函数返回该整数的二进制值中最大的连续1的个数的起始位置。 得到输入后0,返回0。 如果数字具有多个等长的条纹,则必须返回最后一个条纹的位置。 输入值 大于或等于 0 的整数。 输出量 整数,如下所述。 规则 这是代码高尔夫球,因此每种语言中以字节为单位的最短代码为准。 禁止出现标准漏洞。 示例和测试用例 例子1 您的函数传递整数142 142等于二进制的10001110 最长条纹是“ 111”(三个条纹) 条纹从2 ^ 1位置开始 您的函数返回1作为结果 例子2 您的函数被传递给整数48 48等于110000的二进制 最长条纹是“ 11”(两个条纹) 条纹从2 ^ 4位置开始 您的函数返回4作为结果 例子3 您的函数被传递给整数750 750等于二进制的1011101110 最长条纹是“ 111”(三个条纹) 由于存在两个等长的条纹,因此我们返回后面的条纹。 以后的条纹开始于2 ^ 5位置 您的函数返回5作为结果

8
Scroll Word的字体大小选择器
Word 和按钮会根据以下规则更改字体大小:A▲ᴀ▼ 起始字体大小为11。 如果在字体大小为1时按,则大小保持为1。ᴀ▼ 字体大小在1 – 12范围内变化1点。 字体大小在12 – 28范围内变化2点。 选择范围为28 – 80的28、36、48、72和80。 字体大小在80到1630范围内以10磅变化。 字体大小在1630 – 1638范围内变化8点。 如果在字体大小为1638时按,则大小保持为1638。A▲ 任务 尽可能以最少的字节为单位,以任何合理的格式给定一组按钮按下时,确定最终的字体大小。 例子 [3,-1,2],意思是:结果是18。A▲A▲A▲ᴀ▼A▲A▲ 一些可能的格式是'^^^v^^',[1 1 1 -1 1 1],[True,True,True,False,True,True],["+","+","+","-","+","+"],"‘‘‘’‘‘","⛄️⛄️⛄️🌴⛄️⛄️",111011,"CaB",等... [2]:14 [-1]:10 [13]:80 [-11,1]:2 [11,-1]:36 [170,-1]:1630 [2000,-2,100]:1638

20
卓越的通过时间
有时候,当我真的很无聊时,我喜欢取一个非负整数数组的总和。我只取长度为2的幂的数组的总和。不幸的是我经常犯错误。幸运的是,我通过以下方式跟踪自己的工作: 我添加成对的相邻数字,直到只剩下一个。例如: 6 + 18 + 9 + 6 + 6 + 3 + 8 + 10 = 24 + 15 + 9 + 18 = 39 + 27 = 66 您的工作是确定我是否在某个地方犯了错误。您既可以将输入传递给函数,也可以从标准输入中读取。可以打印或返回输出。 输入:数组/列表/等。非负整数,如果您的语言需要,还可以包含该数组的长度。该数组将是从左到右然后从上到下读取的所有数字。例如,上面的数组将变为: [[6, 18, 9, 6, 6, 3, 8, 10], [24, 15, 9, 18], [39, 27], [66]] 或者, [6, …

30
将标准中的数字相加
考虑每行一个整数的流/文件。例如: 123 5 99 您的代码应输出这些数字的总和,即227。 输入格式严格为每行一个整数。例如,您不能假定输入作为整数数组在一行上。 您可以从STDIN中以文件名或具有您选择的名称的文件形式进行输入。您可以选择哪一个。不允许有其他获取输入的方法。 输入将包含至少一个整数。您可以假设所有整数均为非负数,并且它们的总和小于。232

30
是真的吗 问果冻!
背景 受到Octave(以及扩展为MATL)对真/伪矩阵的非常方便的解释的启发,Jelly得到了Ȧ(所有八度音阶)原子。 Ȧ将数组作为输入,如果数组为非空并且在树结构中的任何位置都不包含数字0(整数,浮点数或复数),则返回1;否则,返回0。 例如,数组[[]]是真实的,因为它是非空的并且不包含零。而[[0]]是虚假的,因为它在最内层包含0。 任务 用您选择的编程语言编写一个完整的程序或函数,该函数或函数将可能为空的,可能是锯齿状的整数数组作为输入,并打印或返回一个真值或伪值,该值指示a 分别返回1还是0。 您的提交必须遵守以下规则。 真值和伪值对于所有输入必须一致,即,Ȧ返回1的所有数组必须映射到相同的真值,而Ȧ返回0的所有数组必须映射到相同的伪值。 由于完整程序只能将数组的字符串表示形式作为输入,因此允许这样做。但是,您必须使用语言的规范表示形式,由repr或类似形式返回。 特别是,您不能假定数组的第一个元素前面将带有空格。 如果(且仅当)您的语言不能本地表示锯齿状数组,则可以使用任何现有编程语言的规范语法对输入进行字符串表示。 如果您的语言有几种表示锯齿数组的方式(例如,列表和元组),则只需支持其中一种。 如果您的语言具有内置语言,并且本身就是对此挑战的有效提交,那么您可以不在答案中使用它。允许所有其他内置插件。 鼓励您使用数组和字符串操作发布答案,即使其中一个比另一个短得多。 所有标准代码高尔夫球规则均适用。 可能以字节为单位的最短代码获胜! 真实的测试案例 [1] [10] [[]] [[[[1]]]] [[], [1], [1, 2]] [[1], [1, [2]], [1, [2, [3]]]] [[8], [8, [9]], [8, [9, [10]]]] 虚假的测试用例 [] [0] [0, -1] [-1, 0] [[[[0]]]] [[0], [1, 2], [3, …

6
评分Tarzan的奥林匹克葡萄摇摆常规
奥运会的葡萄树摆动者在标准的树上执行常规活动。特别是,“标准树” n具有0向上穿过的顶点n-1以及将每个非零顶点连接a到其n % a下面的顶点的边。因此,例如,标准树5如下所示: 3 | 2 4 \ / 1 | 0 因为5除以3时的余数为2,所以5除以2或4时的余数为1,而5除以1时的余数为0。 今年,泰山将捍卫他的金新套路,每个始于顶点n - 1,秋千到顶点n - 2,继续顶点n - 3,等等,直到最后他卸除到顶点0。 例行程序的分数是每个挥杆(包括拆卸)的分数之和,挥杆的分数是树内起点和终点之间的距离。因此,Tarzan在标准树5上的例程得分为6: 从摇摆4到3得分3分(向下,向上,向上), 从摇摆3到2得分(下降)一分, 从摆动2到1得分1分(向下),并且 从下来1,0得分为1分(下降)。 编写一个程序或函数,给定一个正整数n,该程序或函数将计算Tarzan例程在Standard Tree上的得分n。样本输入和输出: 1 -> 0 2 -> 1 3 -> 2 4 -> 6 5 -> 6 6 -> 12 7 -> 12 8 …
32 code-golf  math  number  number-theory  code-golf  code-golf  restricted-source  programming-puzzle  css  code-golf  parsing  code-golf  random  encryption  code-golf  ascii-art  fractal  code-golf  math  code-golf  sorting  graph-theory  path-finding  permutations  code-golf  tetris  code-golf  card-games  code-golf  math  sequence  rational-numbers  code-golf  chess  code-golf  string  geometry  grid  code-golf  ascii-art  grid  code-golf  sequence  integer  code-golf  math  number-theory  packing  polyomino  code-golf  math  code-golf  string  quine  permutations  code-golf  math  code-golf  image-processing  optical-char-recognition  code-golf  string  kolmogorov-complexity  sequence  integer  code-golf  number  permutations  palindrome  code-golf  kolmogorov-complexity  code-golf  number  sequence  string  fewest-operations  code-golf  string  kolmogorov-complexity  sequence  primes  code-golf  string  ascii-art  code-golf  string  number  alphabet  code-golf  counting  code-golf  number  sequence  number-theory  primes  code-golf  subsequence  word-search 

30
计算中位数
挑战 给定一个非空的实数列表,请计算其中位数。 定义 中位数计算如下:首先对列表进行排序, 如果条目数为奇数,则中位数为排序列表中心的值, 否则,中位数是最接近排序列表中心的两个值的算术平均值。 例子 [1,2,3,4,5,6,7,8,9] -> 5 [1,4,3,2] -> 2.5 [1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,-5,100000,1.3,1.4] -> 1.5 [1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,-5,100000,1.3,1.4] -> 1.5

16
谁最高?
N个孩子按一定顺序排列,没有两个孩子分享他们的确切大小。每个人只能将身高与其近邻比较。当老师大喊“如果你最高,举手”时,如果他们比两个邻居都高,他们就会高声喊叫,并且他们会同时举高声。如果只有一个人举手,他将获胜。如果不止一个举手,则将他们全部从该行中淘汰(保留其余孩子的顺序),然​​后重复该过程。 编写一个程序,该程序采用一组不同的整数(可以假定它们严格为正),并输出此游戏的获胜者。这是代码高尔夫球,因此最短的代码获胜。 示例(显示了中间阶段): 5 3 9 8 7→3 8 7→8 1 2 9 4→9 9 3 8 7 4 12 5→3 7 4 5 →3 4 →4 现任领导人: 果冻:17个字节[作者:Dennis♦] MATL:20个字节[作者:Luis Mendo] APL:28个字节[voidhawk] k:40个字节[Paul Kerrigan撰写] 还有一场Python之战。仍在等待更多的高尔夫语言出现。 我目前接受Dennis♦的回答-如果有新的获奖者,我将更新选择。

2
在Wireworld中建立数字时钟
受到“人生游戏”问题的启发。 Wireworld模拟流经“电线”的“电子”,其简单排列会产生典型的逻辑门行为。 我挑战您在Wireworld蜂窝自动机中构建数字时钟。您的时钟必须以通常的方式从00:00向上计数,或者使用AM / PM指示器从11:59向上计数,然后重设。 您的输入应明显分为两部分。A部分应包含所有非显示逻辑,所有涉及数字递增和循环的部分。B部分将是显示器及其驱动逻辑。这两个部分之间的唯一连接应该是代表BCD中时间的四位数字的16根电线(如果信号不连续,则AM / PM指示器的一根可选电线,信号时钟线的一根可选电线)。(编辑:总为零的导线可以省略) 时钟行为的时序应保持一致。对于状态之间的1440个过渡中的每个过渡,模拟应采用相同的滴答数。16条导线上的任何电子都应同时从A部分发出,并开始平行跳闸。 这是一场代码高尔夫比赛。您的分数是围绕零件A的轴对齐边界框的面积。 类似地,如果这是文本语言,则您的得分将是产生四个4位输出的时钟管理功能的大小,该输出包含一个循环和4个计数器的逻辑,而不是解码和打印该输出的功能。 B部分的大小可以根据需要选择。这样做只是为了使提交的输出可以被运行它的人看到,因为没有简单的方法可以简单地“调试” wireworld电路的输出。在线有多个BCD-> 7段电路。随意使用任意一个,如果需要时钟信号线,则可以自己制作,并以类似于数字的比例显示AM / PM指示器。 编辑:B部分现在是可选的。如果您只有A部分的BCD输出,请随时提交。确认时钟正常工作将更加繁琐,但是我可以在暂停的模拟中读取一行位。

16
这是字节的挑战
我需要别再想笨拙的名字了 您的任务是创建尽可能多的代码片段(内置输入和输出的程序),函数或完整程序,以对您所用语言的整数数组版本进行升序排序,但是对于每个程序,只允许使用使用以前的程序中未使用过的ASCII字符(如果直接将其指定为非ASCII,则使用您的语言的代码页)。 这是一个示例答案(用换行符分隔的单独程序): Derp ASdFGHJKLAAA qwEEERtyRty 在这种(虚构的语言),我的第一个答案是Derp,它使用了D,e,r和p。在第二个程序中,不允许再次使用这些字符,但是我可以重用任意多个字符。与第三个程序相同,依此类推。 每个程序必须采用整数数组,因此类似以下内容(有关有效的输入/输出样式,请参见输入/输出示例): [3 4 -2 5 7 196 -44 -2] 并且它必须以升序将数组中的项目输出为数组: [-44 -2 -2 3 4 5 7 196] 您的分数将是提交的总数。如果有平局,则最低字节数(代码中字节数最少)获胜! 程序规则: 所有提交必须以一种语言版本(so Python 2 != Python 3)正确运行。 您的提交可以是摘要,功能或完整程序。您甚至可以混合和匹配它们-但是,您必须说出哪个是哪个,并提供工作提交的链接。 如果可能,请提供所有解决方案的在线链接。 所有提交都必须以数组(或用任何字符分隔的字符串)作为输入,并输出排序后的数组(以您语言的数组形式或- {any character}分隔的字符串)。 您不得使用ASCII(或您的语言的代码页)以外的任何字符。 例如,这些是有效的输入/输出: [1 2 3 4] (Clojure style arrays) [1, 2, 3, …

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.