Questions tagged «code-golf»

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

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 

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 如果您的程序具有较高的内存效率,则表示荣誉,但这不是必需的。

6
正整数的部分分解
正整数的集合是正整数d_1 d_2 ... d_k的因式分解,n如果 d_1 * d_2 * ... * d_k = n 每个正整数都有一个唯一的素因式分解,但通常它们也具有其中某些项是复合的分解。例如 12 = 6 * 2 = 4 * 3 = 3 * 2 * 2 编写一个程序,函数,动词或类似物,将单个正整数作为输入并返回或打印其不同因式分解的完整列表。分解可以以任何顺序生成,并且它们的项可以以任何顺序生成,但是彼此之间不应有两个置换。1除两个例外,分解可能不包括:对于输入,n您可以给出分解n*1而不是n; 对于输入,1您可以给出因式分解1而不是空白列表。 您可以假定输入将在带符号的32位整数范围内。如果输出为字符串,则分解中的数字定界与分解中的定界之间应该有明显的区别,但是(例如)没有必要将因子与连在一起*。 您的代码应能够在合理的台式机上在10分钟内处理任何有效输入。 例子 1 [[]] or [[1]] or [[1 1]] 7 [[7]] or [[7 1]] or [[1 7]] 12 …

12
排列的循环数
考虑整数... ... 的置换,例如1nn = 6: [5,2,4,3,6,1] 如果将置换视为从[1,2,3,4,5,6]到的映射[5,2,4,3,6,1],则置换可以分解为不相交的周期。循环是相互映射的元素的子集。例如,1被映射到5,被映射到6,被映射回1。所以一个周期是[1,5,6]。其他周期是[2]和[3,4]。因此,此置换的周期数为3。 通常,排列的周期是唯一的(按顺序排列),大小排列的周期数n从1到变化n。 挑战 给定非空排列,输出其循环数。 输入是由形成的阵列n的整数1,2,..., n,其中n > 0。每个整数仅出现一次。如上例所示,它们出现的顺序定义了排列。 可以使用列表,在数字之间使用分隔符的字符串,每个数字的单独输入或任何合理的方法来代替数组。 对于大小的排列n,而不是基于1的整数集1,......,n你可以一直使用基于0套0,... n-1。如果是这样,请在您的答案中指出。 该代码应努力n达到20在合理的时间,说不到一分钟。 代码高尔夫。允许所有内置。 测试用例 假定基于1的数组输入。 [1] -> 1 [3,2,1] -> 2 [2,3,4,5,1] -> 1 [5,2,4,3,6,1] -> 3 [8,6,4,5,2,1,7,3] -> 2 [4,5,11,12,7,1,3,9,10,6,8,2] -> 1 [4,2,5,11,12,7,1,3,9,10,6,8] -> 5 [5,8,6,18,16,9,14,10,11,12,4,20,15,19,2,17,1,13,7,3] -> 3 [14,5,17,15,10,18,1,3,4,13,11,16,2,12,9,7,20,6,19,8] -> 7 有关 这个相关的挑战要求排列的实际周期,而不是数量。仅要求周期数可以导致产生实际周期的较短算法。

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.