Questions tagged «code-golf»

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

15
将列表分为大小的块,但不计算不包含谓词的项目
动机:有时候列表中的某些项目不会计入您的总数。例如,按排计数飞机乘客,其中婴儿坐在父母的膝盖上。 挑战:编写一个程序将项目列表拆分为多个块。每个块(除了最后一个块)都具有相同的大小,其中size定义为通过谓词函数的项目数。 规则: 您的程序必须 项目清单 正整数块大小 谓词函数(获取一项,并返回true或false) 您必须返回输入列表,并将其分成多个部分 每个块都是项目列表 总体而言,这些物品必须保持相同的顺序,且没有杂物 每个块(可能是最后一个块除外)中通过谓词的项目数应与输入块大小匹配。 无法通过谓词的项目不应计入此大小 谓词失败的项目是 仍包含在输出块中 分配给最早的块,如果块“满”,但接下来的项是不通过谓词的项 因此,最终块可能不仅仅包含不符合谓词的项目 最终块的大小可能小于块大小,因为所有项目都已考虑在内。 非详尽示例: 最简单的示例是考虑1s和0s,其中谓词函数为x ==> x > 0。在这种情况下,sum每个块的都必须与块大小匹配。 项目:[],大小:2,谓词:x > 0-> []或[[]] 项目:[0, 0, 0, 0, 0, 0],大小:2,谓词:x > 0->[[0, 0, 0, 0, 0, 0]] 项目:[0, 1, 1, 0],大小:2,谓词:x > 0->[[0, 1, 1, 0]] 项目:[0, …

3
死蛙走
介绍 乔尼想扮演Frogger。但是,他不是很好。实际上,只有在平台移动之后,他才会尝试前进。 找出Jonny的青蛙是否设法到达路径的尽头或它是否在途中死亡。 挑战 该程序将接收由0s和1s 组成的Frogger网格作为输入,格式如下: 网格将具有随机的宽度和长度,并且至少为3x3 1 代表平台 0 代表水 F 代表青蛙的起始位置 网格的第一行和最后一行仅由1s 组成,并且不会移动,并且青蛙F将随机放置在最后一行 每个中间层将始终在移动,并且每行的末尾都有一个<或>,指示它是向左还是向右移动 允许将这些符号替换为您自己的符号,只要它们完全不同并且您在答案中指定替换即可。 输入可以采用任何兼容格式(带换行符的字符串,字符串数组,字符数组等)。 挑战规则 每转,所有平台都会根据<或>符号指示的方向移动一个正方形 如果平台被推离“屏幕”,它们会重新出现在网格的另一侧 如果青蛙在移动的平台上,它将随之移动 在那之后,青蛙将跳到顶部一格。青蛙每转都会移动。 如果青蛙跳入水中(0)或与移动平台一起接触网格的一侧,则会死亡。 如果青蛙幸存,您的程序必须输出真实值,否则输出虚假值。 这是代码高尔夫球,因此最短的答案以字节为单位。有标准漏洞。 例子 例子1 输入项 11111 00111> 00101< 1F111 输出量 1 执行 转弯1: 11111 10011 01010 1F111 11111 10011 0F010 11111 转弯2: 11111 11001 F0100 11111 …

30
在文本中搜索前缀并在文本中列出其所有后缀
我在这里宽松地使用“后缀”来表示“前缀之后的任何子字符串”。 “前缀”在此表示单词的开始,其中单词的开始定义为空格或输入文本的第一个字符之后(对于第一个单词)。单词中间的“前缀”将被忽略。 例如,如果您输入的前缀是“ arm”,并且输入文本是“ Dumbledore的军队已为即将发生的世界末日大战充分武装”,则输出列表将包含(y,ed,ageddon)。 测试用例 假定区分大小写,字符串以空格结尾。输入将不会以空格开头。 删除重复项是可选的。 Input prefix: "1" Input text: "He1in aosl 1ll j21j 1lj2j 1lj2 1ll l1j2i" Output: (ll, lj2j, lj2) - in any permutation Input prefix: "frac" Input text: "fracking fractals fracted fractional currency fractionally fractioned into fractious fractostratic fractures causing quite a fracas" Output: …

12
广义Cantor集段长度
问题 让我们定义一个广义的Cantor集,方法是从单个连续间隔开始,从所有尚未删除的间隔的中间迭代删除一些有理长度段。 给定要删除或不删除的段的相对长度,以及要执行的迭代次数,问题在于编写程序或函数,该程序或函数输出n迭代后已删除或未删除的段的相对长度。 示例:迭代删除第四个和第六个第八个 输入: n –迭代次数,从0或1开始索引 l–分段长度的列表,以正整数gcd(l)=1表示,带有奇数个长度和奇数个长度,表示从保持不变的分段开始的,保持不变或被删除的部分的相对长度。由于列表长度是奇数,因此永远不会删除第一个和最后一个段。例如,对于常规的Cantor集合,这将是[1,1,1],其中三分之一将保留,三分之一将被删除,三分之一将被删除。 输出: 整数列表o,第一次迭代gcd(o)=1中相对片段的长度,n当上一迭代中没有删除的片段被列表的缩小副本所取代l。第一次迭代是[1]。您可以使用任何明确的输出方法,甚至是一元的。 例子 n=0, l=[3,1,1,1,2] → [1] n=1, l=[3,1,1,1,2] → [3, 1, 1, 1, 2] n=2, l=[3,1,1,1,2] → [9,3,3,3,6,8,3,1,1,1,2,8,6,2,2,2,4] n=3, l=[5,2,3] → [125,50,75,100,75,30,45,200,75,30,45,60,45,18,27] n=3, l=[1,1,1] → [1,1,1,3,1,1,1,9,1,1,1,3,1,1,1] 您可以假定输入有效。这是代码高尔夫球,因此以字节为单位的最短程序将获胜。

16
矩阵列的进展
考虑无限矩阵: 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 2 3 0 0 2 3 0 0 2 3 0 0 2 3 0 0 0 4 5 6 0 0 0 4 5 6 0 0 0 4 ... …
17 code-golf  matrix 

16
计算时间跨度
受到现实生活场景的启发,我要求在这里给出答案:https : //superuser.com/questions/1312212/writing-a-formula-to-count-how-many-times-each-date-出现在一组日期中 给定一组时间跨度(或开始日期-结束日期对),输出总范围内所有天每天覆盖多少时间跨度的计数。 例如: # Start End 1 2001-01-01 2001-01-01 2 2001-01-01 2001-01-03 3 2001-01-01 2001-01-02 4 2001-01-03 2001-01-03 5 2001-01-05 2001-01-05 根据上述数据,结果应如下所示: 2001-01-01: 3 (Records 1,2,3) 2001-01-02: 2 (Records 2,3) 2001-01-03: 2 (Records 2,4) 2001-01-04: 0 2001-01-05: 1 (Record 5) 您只需要输出每天的计数(按最旧-最新的顺序排序);而不是它们出现在哪些记录中。 您可以假设每个时间跨度仅包含日期,而不是时间;因此,总是代表着整天。 输入输出 输入可以是表示一组时间跨度的任何格式,因此可以是一组时间对,也可以是一组包含开始日期和结束日期的(内置)对象。日期时间限制在1901年到2099年之间,这是PPCG挑战的正常情况。 您可以假设输入是预排序的,但是可以根据自己的喜好进行输入(在答案中指定)。输入日期包括在内(因此范围包括整个开始日期和结束日期)。 您还可以假定在任何给定范围内的两个日期中,第一个日期将早于或等于第二个日期(即,您将没有负数的日期范围)。 输出是一个数组,其中包含按开始日期排序时输入中从最旧到最新的每一天的计数。 因此,以上示例的输出为 …
17 code-golf  date 

7
尼姆乘法
背景 如果您进行大量代码打高尔夫球,则可能会意识到按位XOR操作。给定两个整数,它给出1两个输入不同的位中带有s的另一个整数。因此,例如1010 XOR 0011 = 1001。 事实证明,它在博弈论中非常有用,在游戏理论中,它被称为“零和”。如果你有两场比赛的总和(也就是,你让在一场比赛中同时移动),该值的位置是在每个单独的游戏的位置值的NIM总和。 但是我们可以更进一步。使用nim加法和适当的nim乘法定义,我们可以从非负整数形成一个字段。因此,挑战在于高尔夫nim乘法。 定义 Nim乘法遵循以下规则: Fermat 2次方n =(2 ^(2 ^ k))且任何较小数字的nim乘积为普通乘积。 费马2幂n的尼姆乘积本身为3n / 2。 尼姆乘法分布在尼姆加法上。 Nim乘法是可交换的和关联的(如nim加法)。 乘法身份为1(加性身份为0)。 可以将任何非负整数表示为2的不同幂的nim和,并且可以将2的任意幂作为不同的Fermat数的乘积,因此这足以为所有非负整数定义nim乘法。 例 那都是非常抽象的,所以让我们来看一个例子。我将+用来表示nim加法(XOR)和*nim乘法。 6 * 13 = (4 + 2) * (8 + 4 + 1) = (4 + 2) * ((4 * 2) + 4 + 1) …
17 code-golf  math 

24
获取序列步骤
挑战 给定一个数字序列,创建一个返回序列步骤的函数。 假设一个序列将是 N >= 3 序列将至少重复一次该步骤 序列将仅包含自然数 您的函数或程序应返回最短的步骤顺序 例: 输入: [1, 2, 3, 5, 6, 7, 9, 10, 11, 13, 14, 15, 17] 输出: [1, 1, 2] 说明:初始序列来自1 => 2 (1 step), 2 => 3 (1 step), 3 => 5 (2 steps)。然后重复。输出是[1 step, 1 step, 2 steps] => [1, …

12
功能剪贴板:复制
作为2018年5月每月语言活动的一部分,此挑战与MATL语言的某些功能有关。 相关挑战:功能剪贴板:粘贴。 介绍 MATL有几个剪贴板,您可以在其中存储值(副本)以供以后检索(粘贴)。某些剪贴板是自动的,这意味着某些事件会自动触发复制。这项挑战着眼于自动剪裁工具之一,称为功能输入剪贴板,或简称为功能剪贴板。 该剪贴板将输入存储到最近四个对常规输入函数的调用。普通函数是MATL中最常见的函数类型。输入接受意味着该功能至少接受一个输入(功能剪贴板不考虑不接受任何输入的功能)。 最好使用以下示例解释这些示例,这些示例使用两个常规函数: +,这会从堆栈中弹出两个数字并压入它们的和。 U,它会弹出一个数字并按其平方。 范例1: 3 2 + 6 + 12 4 U + + 产生结果39。该代码解释如下: 数字文字,例如3或被12压入堆栈 诸如此类的功能会+弹出其输入,并将其输出推入堆栈。 按时间顺序排列的函数调用为: 3 2 + 给 5 5 6 + 给 11 4 U 给 16 12 16 + 28 11 28 +给39。 剪贴板可以视为四个列表的列表。每个内部列表都包含函数调用的输入,最近的调用在前。在每个内部列表中,输入均按其原始顺序。 因此,在运行代码之后,剪贴板的内容是(用Python表示法): [[11, 28], [12, 16], …
17 code-golf  number 

19
序数字符串检查
说明: 给定一个字符串作为输入,请检查它是否是英文的有效序数。如果有效,则返回真实值,否则返回虚假值。(由@Arnauld建议。谢谢。也由@JoKing提供) 对于想了解序数的用户,请点击此处: https://www.mathsisfun.com/numbers/cardinal-ordinal-chart.html(建议:qwr) 可能的输入: 21st ---> true 12nd ---> false 1nd ---> false .... 这是一场高尔夫挑战赛代码,因此每种语言中最短的代码将成为赢家。 例子 : console.log('12th' , true) // This evaluates to true console.log('1st' , true) // also evaluates to true console.log('21nd' , false) // returns false console.log('11st' , false) // returns false console.log('111199231923819238198231923213123909808th' , true) // …

26
万能药水句法糖
在药剂,(链接)的列表格式中的[head | tail]其中头可以是任何东西,和尾是列表的其余部分的列表,以及[]-空列表-是唯一的例外。 列表也可以写成[1, 2, 3]等价于[1 | [2 | [3 | []]]] 您的任务是按照说明转换列表。输入将始终是有效列表(在Elixir中),仅包含与regex匹配的数字\[(\d+(, ?\d+)*)?\]。您可以使用带空格的输入(每个逗号后一个空格)或不带空格的输入。输出可以带空格(每个空格前后一个空格|)或不带空格。 对于带前导零的输入,您可以不带零或带零输出。 输入必须与输出一样作为字符串(如果编写函数)。 例子 [] -> [] [5] -> [5 | []] [1, 7] -> [1 | [7 | []]] [4, 4, 4] -> [4 | [4 | [4 | []]]] [10, 333] -> [10 | [333 …

4
跨字母字符
背景 我在维基百科上看到了这个非常有趣的维恩图:https ://simple.wikipedia.org/wiki/Alphabet#/media/File: Venn_diagram_gr_la_ru.svg 它显示了俄语,希腊语和拉丁语字母之间常见的不同字母的字母(物理形状)。 挑战 给定显示的三个脚本中任何一个的输入字符串(即大写的希腊字母,西里尔字母或拉丁字母),请输出与每种语言匹配的字符串百分比。重复的字母每次都会计数。 例如,FFLURS所有字符都是拉丁字符,因此输出为FFLURS is 100% Latin, 0% Cyrillic and 0% Greek。 相反,TOX BEAM PHP完全由所有三种语言中出现的字符组成,因此输出为TOX BEAM PHP is 100% Cyrillic, 100% Greek and 100% Latin。 查找表 维恩图是以下字母的来源: 仅限拉丁文: J,G,S,D,Q,U,V,W,F,L,R 拉丁文和西里尔文: C, С 拉丁文和希腊文: I,Ι, N,Ν, Z,Ζ 希腊文和西里尔文 Φ,Ф, Π,П, Γ,Г, Λ,Л 三个都: A,B,E,O,M,K,T,X,Y,H,P (and equivalents in …

23
排序拼写清楚的序列号
给定两个或两个以上长度相等且大于2的拼写完整序列号的列表,例如 [[ "three" , "one" , "four" ], [ "one" , "five" , "nine" ], [ "two" , "six" , "five" ], [ "three" , "five" , "eight" ]] 按单词代表的数字对列表进行排序: [[ "one" , "five" , "nine" ], [ "two" , "six" , "five" ], [ "three" , "one" , "four" …

7
一维跳跃阵列迷宫
受我们启发,我们跳塔,并且与2D Maze Minus 1D相关 介绍 您的任务是找到遵循指定规则的最短路径,以摆脱阵列迷宫。 挑战 具有n个元素的一维数组a可以看作是由n个点组成的迷宫,其中索引k的点与k + a [ k ]和k - a [ k ]的点以单向方式连接。换句话说,可以向前或向后跳恰好一个 [ ķ从与索引点]步骤ķ。索引超出数组范围的点被视为迷宫之外。 为了说明这一点,请考虑以下数组, [0,8,5,9,4,1,1,1,2,1,2] 如果我们现在位于第5个元素,则由于元素为4,我们可以将第4步向前跳到第9个元素,或者将第4个步向后跳到第一个元素。如果执行后者,我们将以元素0结束,这表明不可能进一步移动。如果执行前者,由于第9个元素为2,因此我们可以选择跳到第11个元素,它又是2,然后我们可以再次跳至“第13个元素”,这超出了阵列,并认为是迷宫的出口。 因此,如果我们从中间的元素开始,一种摆脱迷宫的方法是向后跳1步,向前4步,向前2步,再次向前2步,这可以表示为array [-1,4,2,2]。另外,您也可以使用数组来表示它,该数组[4,8,10,12]记录所有中间点和最终点的从零开始的索引(也可以从1开始的索引),也可以只是符号[-1,1,1,1]。 从低折射率端逃脱迷宫也可以。 使用第一种表示法并从同一元素开始[1,1,1,2,2]也是一种解决方案,但由于不是5步而是4步,所以它不是最佳的。 该任务是找出最短路径以走出阵列迷宫并输出该路径。如果有多个最佳路径,则可以输出其中的任何一个或全部。如果没有解决方案,则应输出从有效路径中可以辨别的,由您选择的虚假值(完全不产生任何输出也是可以的)。 为了简单起见,数组中的元素数始终是奇数,我们总是从中间的元素开始。 测试用例 测试用例说明了各种形式的输出,但是您不限于这些。 Input Output [0,8,5,9,4,1,1,1,2,1,2] [-1,4,2,2] [2,3,7,1,2,0,2,8,9] [2,9] (or [2,-5] or [[2,9],[2,-5]]) [0,1,2,2,3,4,4,4,3,2,2,3,0] [1,-1,1,1] [0,1,2,2,4,4,6,6,6,6,6,4,2,1,2,2,0] [] 眼镜 您可以编写函数或完整程序。 该数组仅包含非负整数。 您可以通过任何标准格式进行输入和输出,但是请在您的答案中指定使用的是哪种格式。 这是代码高尔夫球,赢得的最低字节数。 …

14
我们跳塔
任务 给定一个非负整数数组a,请确定从数组0处“跳出”数组所需的向右跳转的最小次数,从位置0开始,或者如果不可能,则返回零/空值。 从索引的跳转i定义为最多将数组索引增加a[i]。 甲跳跃外面是一个跳转,其中从跳转结果的索引i是外的边界为阵列,所以对于基于1的索引i>length(a),以及用于基于0的索引,i>=length(a)。 例子1 考虑Array = [4,0,2,0,2,0]: Array[0] = 4 -> You can jump 4 field Array[1] = 0 -> You can jump 0 field Array[2] = 2 -> You can jump 2 field Array[3] = 0 -> You can jump 0 field Array[4] = 2 -> You can …

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.