编程拼图和代码高尔夫

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

9
旅行南瓜问题
背景: 杰克(Jack)是一个南瓜,每个万圣节都喜欢在南瓜地附近惊吓村庄的居民。但是,每年有人点燃蜡烛后,在蜡烛熄灭之前,他都有有限的时间惊吓所有人,因此无法惊吓更多的村民,因为没人能看到他。在过去的几年中,由于决策不力,他只能吓到少量村庄,但现在有了您的帮助,他将能够吓到尽可能多的村庄! 任务: 给定村庄位置列表和蜡烛寿命,输出杰克可访问的最大村庄数。您不必打印路径本身。 输入: 蜡烛的寿命和笛卡尔坐标系中的村庄位置列表。Jack起源的南瓜补丁始终为0,0。您可以按照自己的意愿格式化输入。为了简化Jack的动作,他只能水平,垂直或对角移动,这意味着他的蜡烛每移动一次将失去1或1.5(对角线需要更长的时间)生命单位。寿命小于或等于0时,蜡烛会烧坏。 输出: 一个整数,它等于蜡烛熄灭前Jack可以访问的最大村庄数。 规则: 这是代码高尔夫球,因此以字节为单位的最短代码获胜。不允许出现标准漏洞。 测试用例: // Format [lifespan] [list of village coordinates] -> [maximum visit-able villages] 4 -1,0 1,0 2,0 3,0 4,0 5,0 -> 3 4 1,1 2,2 3,3 -> 2 5 1,1 2,1 3,1 4,1 5,0 5,1 -> 4

14
找到超级回文!
考虑数字99999999。该数字显然是回文。99999999的最大素数是137。如果用99999999除以137,则得到729927。该数字也是回文。 729927的最大素数是101。729927/101 = 7227也是回文。 7227的最大素数是73。7227/73 = 99也是回文。 通过进一步除以最大素数,您得到9、3和最后1,它们是一位数字,也是回文。由于1没有素数,该过程到此结束。 现在将这个观察结果概括起来,我将超级回文定义为一个回文,该回文要么为1,要么除以它的最大素数便得到另一个超级回文。 学分:https://math.stackexchange.com/questions/200835/are-there-inre-infinitely-many-super-palindromes 给定数字N,确定它是否是超级回文,并相应地打印真或假值。 您的程序应为这些输入打印真实值: 1 101 121 282 313 353 373 393 474 737 919 959 1331 1441 2882 6446 7887 8668 9559 9779 您的程序应为这些输入打印一个false值: 323 432 555 583 585 646 642 696 777 969 989 2112 3553 4554 5242 5225 5445 …

1
以ASCII渲染臀部屋顶的俯视图
首先,一些术语(来源): 一个坡屋顶的(引自维基百科)“一个类型的屋顶,所有边向下倾斜的墙壁,通常有一个相当缓坡” 斜坡是作为屋顶一部分的平面 脊是两个相对的屋顶坡相交的边缘 臀部是凸边,属于垂直壁的两个坡度相交 山谷是凹边,属于垂直壁的两个坡面汇合 臀部和山谷统称为对角线边缘。 可能的输入: ** * *** ******** ** * ** 对应的输出: +-------+ +---+ +-----------+ |\ /| |\ /| |\ /| | \ / | | V | | \ ^---< | | \ / | | | | | \ / \ \| +---+ V …

14
牧羊人这样说
我很累,但似乎无法入睡。帮我数羊。 给定输入N(正整数),使N只羊跳过ascii栅栏,如以下示例所示。一次只能显示一帧: o |-| ──|-|── 0 o|-| ──|-|── 0 o |-| ──|-|── 0 |-|o ──|-|── 0 |-| o ──|-|── 0 o |-| ──|-|── 1 o|-| ──|-|── 1 o |-| ──|-|── 1 计数应保持在“地面”的右下角。允许尾随和前导空格以及换行符。如果您选择的语言难以清除每一帧的屏幕,则可以添加足够的换行符来清除屏幕-请在回答中说明为此添加的行数。该程序应在第N只羊位于第五层时终止。 我明天需要早起,所以以字节为单位的最短代码会获胜。请提交功能或完整程序。有标准漏洞。

2
带有炸药的鼠标
你是老鼠 您的鼠标朋友全部被捕获,失去知觉,被困在只有一个入口/出口的迷宫中。您恰好有一张完美的迷宫图,因此您可以制定一种解决方案,以赶紧进入并安全携带。但是,迷宫装有安全系统,1000一旦达到阈值,就会触发警报,导致您被抓获并无法执行救援任务。 根据您先前对迷宫的调查,您走过的每个正方形(即,每个水平或垂直移动- 鼠标都不能对角移动)会增加1安全系统的计数器。但是,如果您要负重(一块炸药或一个昏迷的老鼠朋友),它会增加重量,2因为它会检测到额外的压力。入口/出口广场没有此安全系统,因此也不会添加到柜台上。 您带到入口的炸药数量无限制,因此您只需炸毁所有墙壁即可释放朋友。但是您必须谨慎,因为每次爆炸都会增加50震荡压力。此外,您一次只能携带一件东西,无论是一只鼠标还是一块炸药。由于炸药块只能爆炸一个墙面空间,因此,如果连续有多堵墙面,则需要空手返回入口以获取更多空间。 通例 假设我们的迷宫如下所示: ###### #M# E# ###### 我将c用于柜台。我们从E入口开始,一边携带炸药一边向左移动一格c=2。我们引爆炸药炸毁墙壁c=52。我们空手向左移动两个正方形以得到c=54,现在我们站在鼠标的正方形上。我们接起朋友,将3个正方形移回Exit,但是最后一个正方形不计数,因为它没有任何传感器,所以只有2个正方形,背面有东西。这意味着,当我们使用最后一个鼠标c=58(小于)到达出口时1000,因此任务成功。 挑战 在输入迷宫的情况下,无论您是鼠标英雄,还是可以在上述限制范围内成功营救所有被困鼠标,或者任务是否失败,都可以输出。 输入项 任何可接受格式(多行字符串,字符串数组等)的2D迷宫。 对于这一挑战,我将同时使用#内墙和外墙,M鼠标朋友和E入口。 入口永远不会紧邻内墙(始终至少有一个空间可以自由移动)。 您可以替换任何希望的可打印ASCII字符,只要它们是一致的即可。只要您保持一致(例如,如果您选择改用内墙,而选择外墙,则每个内墙都必须是,每个外墙都必须),这确实允许您对内墙和外墙使用两个不同的符号)。@#@# 迷宫将始终被墙壁完全包围,但不一定是矩形。如果需要,您可以假定迷宫用空格填充以进行矩形输入(可选)。 迷宫中的部分可能没有炸药就无法到达。 您无法炸开迷宫的外墙。 输出量 甲truthy / falsey值。对于“是,鼠标可以拯救其他所有鼠标”,为True;对于“否,警报系统将被触发”,为Falsey。 规则 完整的程序或功能都是可以接受的。 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常见的高​​尔夫规则都适用,并且最短的代码(以字节为单位)获胜。 例子 真实示例,用空白行分隔。 ##### #M E# ##### ###### #M# E# ###### ######## #E # M# # # # # # # …

11
倾析问题
给定N个卧螺离心机(0 < N <10),可以容纳C 0 ... C N-1升(0 < C <50)升目标G升,请确定是否可以仅使用以下动作: 装满de水器 清空a水器 从一个de水器倒入另一个de水器,直到倒入的水已满或倒空 目标量G必须是最后一个容器中的水量。您不能有“输出倾析器”。 例子 Ñ:2 Ç 0:5 Ç 1:12 ģ:1个 结果:是 Ñ:3 Ç 0:6 Ç 1:9 Ç 2:21 ģ:5 结果:无 提示:要计算是否有可能,请检查G是否可以被容量的GCD整除。另外,请确保将其放入容器中。 请记住,这是code-golf,因此字节数最少的代码将获胜。 排行榜 这是一个堆栈片段,用于按语言生成常规排行榜和获胜者概述。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 # Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,则可以通过打败旧分数来保持标题。例如: # Ruby, <s>104</s> <s>101</s> 96 bytes 如果要在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: …
23 code-golf  math 

25
阵列的反向增量
阵列的反向增量 数组的反增量的延续 您的任务是获取一个带符号的32位整数数组,并以相反的增量重新编译它。 例 列表, 18 19 17 20 16 具有增量: 1 -2 3 -4 反转后得出: -4 3 -2 1 然后在重新编译时,使用yields: 18 14 17 15 16 这应该是您的返回值。 重新编译包括采用C,它是数组的第一个值。在这种情况下,请18按顺序应用增量。所以18 + -4给定14,14 + 3给定17,依此类推。 输入输出 您将得到一个列表/数组/表/元组/堆栈/等。通过任何标准输入法输入的带符号整数的数量。 按照上述增量反转方法,您必须以任何可接受的形式再次输出修改后的数据。 您将收到N个输入,0 < N < 10其中每个数字都在该范围内-1000 < X < 1000 测试用例 1 2 3 4 5 …

3
烧饼问题
这项挑战与翻转薄煎饼有关。 您可能听说过煎饼分类,将一叠煎饼按大小分类,方法是将锅铲插入堆栈中,然后将所有煎饼翻转到锅铲上方,直到煎饼在盘上从最小到最大被分类。煎饼烧焦的问题略有不同。现在,所有薄煎饼的一面都被烧过,一旦分类完成,每个薄煎饼的烧过的一面必须面对盘子。 例如,给定以下堆栈(左侧的煎饼大小。右侧0为糊状,右侧1为糊状): 1 0 3 1 2 1 您可以翻转整个堆栈以获取20 30 11,翻转前两个31 21 11堆栈以获取10 20 30,然后再次翻转整个堆栈以获取,是一叠烧焦的煎饼。翻转3,翻转2,翻转3的移动顺序可以表示为3 2 3。 挑战 给定一组煎饼的大小(不一定是唯一的)和它们的方向,输出任何有效的烧饼分类顺序,即一系列翻转,导致从薄饼到烧饼的面朝下从最小到最大的顺序排列。 输入和输出可以是任何带有分隔符的理智的格式,但是请指定要使用的格式,并指出输入格式的哪一端是堆栈的顶部(TOS)。 允许翻转零煎饼。 允许在输入/输出中混合分隔符。 测试用例 对于以下所有测试用例,输入是一个列表,输出是一个用空格分隔的字符串,TOS在左侧。 [[1, 0], [3, 1], [2, 1]] "3 2 3" [[5, 1], [3, 0], [4, 1], [2, 1], [1, 0]] "5 3 4 1 3 2 …

23
基础组合
输入: 一个整数列表/数组,其每个项目都在的范围内2-36。 输出: 整数的总和(以10为底),其中每个下一个整数均以上一个值的底数(以常规的10开头)。 示例: 假设我们有一个这样的输入:[4, 12, 34, 20, 14, 6, 25, 13, 33] 然后我们有一个这样的总和: 4 (4 in base-10) + 6 (12 in base-4 ) + 40 (34 in base-12) + 68 (20 in base-34) + 24 (14 in base-20) + 6 (6 in base-14) + 17 (25 in base-6 …

20
吉米将这些阵列放倒
我的同事Jimmy是C / C ++的新手。他也是一个学习缓慢的人。现在,公平地说,他的代码总是可以编译,但是他有一些很草率的习惯。例如,每个人都知道您可以定义如下数组: int spam[] = {4, 8, 15, 16, 23, 42}; 除了吉米,每个人都是。他深信制作数组的唯一方法是这样的: int spam[6]; spam[0] = 4; spam[1] = 8; spam[2] = 15; spam[3] = 16; spam[4] = 23; spam[5] = 42; 我在代码审查中一直为他修复此问题,但他不会学习。因此,我需要您编写一个工具,以便在他提交时自动为他完成操作¹。 挑战 我希望您编写一个完整的程序或一个将多行字符串作为输入并输出C数组的更紧凑版本的函数。输入将始终遵循此格式,包括空格: identifier_one identifier_two[some_length]; identifier_two[0] = some_number; identifier_two[1] = some_number; identifier_two[2] = some_number; ... identifier_two[some_length …
23 code-golf  string  parsing  c 

2
猜语言
介绍 这个站点正在迅速建立庞大的代码片段数据集,所以让我们来做点什么吧! 这是一个数据文件。它包含用于113种语言的9,066个唯一的语言+代码段对,所有这些对均来自本网站。格式以制表符分隔(语言TAB片段),摘要中的所有换行符均替换为<LF>,所有制表符均替换为4个空格。每种语言至少有5个摘要。 [更新:我对数据文件做了微小的更改,以合并以前错过的一些Python和RegExp版本-上面的链接已更新] 挑战 编写一个带有代码段并输出其编写语言的程序或函数(有关详细信息,请参见下文)。源+您需要的任何数据的总大小必须为300字节或更小,并且在给定其自己的源代码时,程序必须输出正确的语言。最高的准确性(上述数据集上最正确的答案)获胜。 规则 源代码,资源和任何必需的编译/运行时标志的总大小不得超过300个字节。 您的答案将根据上面的数据集进行测试;系统会根据数据集将“摘要”值之一作为输入,并将其输出与“正确”输出进​​行比较。将对数据集中的所有条目重复此操作,正确答案的最终数量是您的分数。 您可以选择输入编码-我假设使用UTF-8,因此,如果您需要其他编码,请在答案中指定它。 您不需要将<LF>换行符用于换行符;如果您的条目希望接收换行符作为文字换行符(字符10),请在您的答案中指定它。 您的条目必须输出认为输入代码段所用的语言。为避免压缩大量语言字符串,我将允许映射(如果您要为“ Java”输出3,就可以了)。只需记下答案中的映射即可。 每种语言只能有1个输出映射(即,如果3表示“ Java”,则也不能有4表示“ Java”)。 当给出其自己的源代码时,您的程序必须产生正确的答案(必须输出其编写语言)。 您不需要支持数据集中的所有语言,并且可以根据需要支持其他语言(例如,如果您输入的内容不是数据集中的一种语言)。 您的程序必须是确定性的(两次提供相同的输入必须产生相同的输出)。 打破领带 将通过减少数据集直到赢得一项来决定联系。通过删除最流行语言的所有代码片段(例如,由于稀有语言的准确性而导致的联系中断),将减少数据集。例如,如果A和B在整个数据集中的得分为70%,则所有Python代码段都将被删除。如果A和B现在都获得60%的分数,则将删除CJam。如果A现在得分50%,而B得分55%,则B是赢家。 如果达到100%的准确性,则将使用包含相同语言的更多样本的第二个(盲)数据集来确定联系。 例子1 Python脚本: print("python") 如果提供了自己的源代码,此脚本会成功生成“ python”,因此它是有效的。在数据集上,它的得分为1008/9066 = 11.1% 例子2 JavaScript函数: function f(s){return /function/.test(s)?1:2} 使用映射1→javascript,2→python。再次,它成功为其自己的源生成了1(“ javascript”),并且在数据集上的得分为1092/9066 = 12.0% 数据来自哪里? 我创建了SEDE查询,以从此站点的[code-golf]挑战中抽取样本。从得到的10,000个答案中,我使用了一个被黑的python脚本来查找每个脚本的代码和语言名称,然后用少于5个示例过滤掉任何语言。数据不是100%干净的(我知道它提取了一些非代码片段),但应该足够好。 受到今年早些时候的挑战的启发:谁这么说?2016年总统选举 还与什么是语言有关?

19
仿源代码
为源代码的每个字符输出一个随机字符(如下所示)。每个字符的概率就是其在原始源代码中的出现频率。因此,输出将是类似于quine的伪造源代码。 规格 限制条件 适用标准藜麦约束。没有空的程序或函数。也没有阅读自己的资料。 输出量 输出的字符数应与源代码中的字符数完全相同 每个输出字符应随机选择 选择任何字符的概率等于 (occurrences in source) / (length of source) 这意味着即使是一元解决方案也需要“随机”选择1概率1。也就是说,输出不能被硬编码。 获奖 这是代码高尔夫球,所以最少的字节获胜 例 Program Frequency Probability Possible Output ------- --------- ----------- --------------- a@!@ a - 1 a - 25% @@a@ ! - 1 ! - 25% @ - 2 @ - 50% Program Frequency …

16
创建金字塔矩阵
金字塔矩阵是一个正方形矩阵,其中所有数字都从中心点增加或减少,例如下面的两个矩阵: 1 1 1 1 1 1 2 2 2 1 1 2 3 2 1 1 2 2 2 1 1 1 1 1 1 要么: 3 3 3 3 3 3 2 2 2 3 3 2 1 2 3 3 2 2 2 3 3 3 3 …

27
列出n的所有有序分区
挑战是列出给定正整数的所有有序分区(组成(组合))n。这些数字从名单1到n其总和n。例如,给定input n = 4,结果应为: 4 1,3 3,1 2,2 2,1,1 1,2,1 1,1,2 1,1,1,1 结果可以采用任何顺序,但是必须包含每个有序分区一次。这意味着n = 4,[1, 1, 2],[1, 2, 1]而且[2, 1, 1]必须是结果的一部分。 这是我自己的实现此目的的JavaScript代码: function range(n) { for (var range = [], i = 0; i < n; range.push(++i)); return range; } function composition(n) { return n < 1 ? [[]] : …

30
Champernowne的零在哪里?
考虑按顺序串联在一起的所有非负十进制整数的无限字符串(类似于Champernowne的常量): 0123456789101112131415161718192021222324252627282930...979899100101102103... 编写一个程序或函数,该程序或函数采用一个非负整数,该整数将索引(从0开始)到该无限字符串中。输出一个truthy如果数字索引值为0,否则输出一个falsy如果数字为1-9的值。 以字节为单位的最短代码获胜。 前25个产生真实性的输入是: 0 11 31 51 71 91 111 131 151 171 191 192 194 197 200 203 206 209 212 215 218 222 252 282 312 如果您的程序具有较高的内存效率,则表示荣誉,但这不是必需的。

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.