Questions tagged «code-golf»

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

5
析因阶乘
今天在我的统计课上,我发现将某些阶乘相乘时可以简化!例如:5! * 3! = 5! *3*2 = 5! *6 = 6! 你的工作: 给定仅包含阿拉伯数字和感叹号的字符串,请将我的阶乘简化为最短的字符串,以最少的字节数表示您的语言,即高尔夫风格。 输入值 仅包含阿拉伯数字和感叹号的字符串。输入的阶乘不大于200!。每个数字的阶乘不得超过一个。输入可以视为整数列表。 输出量 可能是缩短的字符串,其输入值相等。顺序不重要。阶乘符号是必须的,但是您不需要每个数字使用一个以上的阶乘符号。 测试用例 In: 3!2!2! Out: 4! In 2!3!2!0! Out: 4! In: 7!2!2!7!2!2!2!2! Out: 8!8! In: 23!3!2!2! Out: 24! Also: 4!! In: 23!3!2!2!2! Out: 24!2! In: 127!2!2!2!2!2!2!2! Out: 128! In: 32!56!29!128! Out: 29!32!56!128! 祝你好运

8
尽可能邪恶
介绍 这是此挑战的后续活动,在此过程中,您将扮演那个人的邪恶双胞胎角色。邪恶时,您不想最大化自己的份额,而希望尽可能地不公平,并且不会太明显,这就是为什么您提出以下方案的原因: 您将告诉其他人,您希望自己像兄弟姐妹一样公平,因此您将把整数分成相等长度的片段。因此,对于每个整数,您都会想出合适的人数,以使最大和最小的部分之间的差异最大。 例如,如果给定整数6567,则可以将其保留为原样,将其分为两部分65,67或四部分6,5,6,7。这为您带来以下最大差异: 6567 -> max() = 0 65,67 -> max(|65-67|) = 2 6,5,6,7 -> max(|6-5|,|6-5|,|6-6|,|6-7|,|5-6|,|5-7|,|6-7|) = 2 由于您只想做恶人,所以您不喜欢67它7,因此您将输出2或4。 另一个(不太特殊的情况);给定整数,121131您可以像这样拆分它: 121131 -> max() = 0 121,131 -> max(|121-131|) = 10 12,11,31 -> max(|12-11|,|12-31|,|11-31|) = 20 1,2,1,1,3,1 -> max(…) = 2 这次只有一个解决方案-即3-由于三个人的差异最大。 挑战 给定一个整数,确定最大程度地邪恶的任何可能方式,并报告实现此目标所需的人数。 规则 输入将始终≥1 输入可以是整数,数字列表或字符串 您不必处理无效的输入 测试用例 您只需要报告所需的结果人数,可能的分区仅用于说明: …

30
完美无国界广场
给定后n=m^2,返回一个整数列表,该列表与的整数m x m网格没有边界1 to n。 例子 n = 1(m = 1) 网格: [1] 返回: [] n = 4(m = 2) 网格: [1,2] [3,4] 返回: [] n = 9(m = 3) 网格: [1,2,3] [4,5,6] [7,8,9] 返回: [5] n = 16(m = 4) 网格: [ 1, 2, 3, 4] [ 5, 6, …
16 code-golf  matrix 

23
范围取整数的序列
考虑一个三角形,其中Ñ个行(1-索引)是第一阵列Ñ的正整数幂Ñ。这是前几行: N | 三角形 1 | 1个 2 | 2 4 3 | 3 9 27 4 | 4 16 64 256 5 | 5 25 125 625 3125 ... 现在,如果将这些能力合并为一个序列,我们将获得OEIS A075363: 1, 2, 4, 3, 9, 27, 4, 16, 64, 256, 5, 25, 125, 625, 3125, 6, 36, 216, …

15
解析带符号的一元数列表
一元数通常只表示非负整数,但是我们可以如下扩展它们以表示所有整数: 正整数N表示为N 1:5 -> 11111 负整数-N表示为0N,后跟N 1:-5 -> 011111 零表示为 0 如果使用0分隔符,则可以明确表示这些数字的列表: 3,-2,0,1 111,011,0,1 111 0 011 0 0 0 1 11100110001 您的任务:获取一个表示这样的带符号的一进制数字列表的字符串,并将其转换为十进制数字列表。 细节 您可以假定输入是带符号的一进制数字的完整列表。特别是,您的程序将不必处理1)空输入或2)以分隔符结尾的输入。 您可以假设每个数字的大小不超过127。对于具有最大字符串或列表大小的语言,可以假设输入和输出将适合您语言的数据结构,但是从理论上讲,算法应适用于以下列表任何大小。 你的程序或功能可以执行的I / O任何标准的方法。输入可以是字符串或字符列表,单字符字符串,整数或布尔值。您可以使用任何两个字符来表示1和0; 如果您不使用1和0,请指定您正在使用的字符。 输出必须是任何合理列表格式的十进制数字(尤其是数字之间必须有某种分隔符)。负数应以减号表示,尽管如果您的语言对负整数使用不同的格式,我也会接受。零可以在输出中表示为0或-0。 测试用例 1 -> 1 0 -> 0 (or -0, and similarly for the other test cases) 011 -> -2 …

10
三角数
(不,不是那些) 挑战 您将获得两个输入。第一个是正整数n > 0,用于输出n x n数字的直角三角形1, 2, 3, ... n。这个三角形从一个角开始,然后在水平和垂直方向上增加一个,在对角线上增加两个。请参阅以下示例以进行澄清。在各列之间保持一个空格,并使所有数字在其特定的列中正确对齐。(毕竟这是ascii艺术)。 第二个输入,x是您选择的四个不同的单个ASCII字符之一,它确定三角形的起始角(并因此确定方向)。例如,您可以使用1,2,3,4或a,b,c,d或#,*,!,)等。请在答案中指定方向的工作方式。 为了澄清该挑战,我将使用1,2,3,4对应于1左上角,2右上角,依此类推。 例子 例如,对于n = 5,x = 1输出以下内容: 1 2 3 4 5 2 3 4 5 3 4 5 4 5 5 对于input n = 11,x = 1输出以下内容(请注意多余的空格,以便使单个数字右对齐): 1 2 3 4 5 6 7 8 9 10 …

17
绘制Lambda blazon
为庆祝希腊在公元前480年在萨拉米斯的胜利2497周年。绘制lambda blazon。 Lambda blazon是涂在希腊盾牌上的lambda,如下所示: 难题:给定正整数奇数n,生成上述屏蔽的ascii艺术图像。 规格: n = 1: ( /\ ) n = 3: ( /\ ) | / \ | ( / \ ) n = 5 ( /\ ) | / \ | | / \ | | / \ | ( / \ ) 图表: n …

6
评估减号和波浪号的表达
给定一个与正则表达式匹配的表达式/^[-~]*x$/,请根据对它进行求值x并输出与正则表达式匹配的字符串/^-?x[+-]\d+$/。 例如,字符串的-~x计算结果为x+1,而字符串的-~-x计算结果为-x+1,而字符串的-~-~--x计算结果为x+2。 我们从头开始x并从右到左评估字符串。-对词取反,而~转换y为-y-1。 测试用例: x x+0 ~x -x-1 -~x x+1 ~-~x -x-2 -~-~x x+2 --~~x x+0 ~-x x-1 -~-x -x+1 这是代码高尔夫球。以字节为单位的最短答案将获胜。 输入/输出格式严格。该"x"是强制性的。
16 code-golf  string 

30
挑战之三:移动平均线
注意:这是一系列阵列操作挑战中的第3条。对于上一个挑战,请单击此处。 列表的移动平均值 列表的移动平均值是通过对原始重叠的小子列表进行平均而得出的新的平滑列表。 在创建移动平均线时,我们首先使用一定的“窗口大小”生成重叠子列表的列表,每次将此窗口向右移一次。 例如,给定列表[8, 4, 6, 2, 2, 4]和窗口大小3,子列表将是: [8, 4, 6, 2, 2, 4] Sublists: ( ) <- [8, 4, 6] ( ) <- [4, 6, 2] ( ) <- [6, 2, 2] ( ) <- [2, 2, 4] 然后,我们计算每个子列表的平均平均值以获得结果:([6.0, 4.0, 3.3, 2.7]每个值四舍五入到小数点后一位)。 挑战 你的任务是写一个程序或其中,给定一个列表功能大号和整数1个≤N≤长度(L) ,计算移动平均为大号使用窗口大小Ñ。 规则: 您的程序可能使用整数除法或浮点除法。对于浮点除法,只要值是正确的,就可以允许由于数据类型的限制而产生的小误差。 …

7
测量一堆原木
介绍 这是长度为5的对数: ##### 我想将这些原木堆在一起。我的操作方式是将新的日志从右侧滑动到最上面的日志,并在它们的左端或右端对齐时停止滑动(不要问为什么)。如果新日志更长,它将一直滑动到最上面的日志的左端: ######## <- ##### 如果更短,则仅滑动直到其右端对齐: ###### <- ######## ##### 当我将更多的原木滑入桩中时,它们的位置由当前最上面的原木确定: ## ###### ### #### ## ###### ######## ##### 这看起来在物理上是不可能的,但让我们假装它可行。 任务 您的输入应该是一个非空的正整数列表,代表我的日志长度。最左边的数字是我放到堆中的第一个原木,因此它最终在底部。在上面的示例中,输入为[5,8,6,2,4,3,6,2]。对于所得桩的每一列,您的输出应为越过该列的原木数量。在以上示例中,正确的输出为[2,2,3,3,3,2,4,6,3,3,1,2,2]。 规则和计分 输入和输出可以采用任何合理的格式。输出只能包含正整数,即它不得包含前导或尾随0。普通的代码高尔夫球规则适用:您可以编写完整的程序或函数,最低字节数获胜,并且禁止标准漏洞。 测试用例 [1] -> [1] [4] -> [1,1,1,1] [3,2] -> [1,2,2] [2,3] -> [2,2,1] [2,2,2] -> [3,3] [2,3,2] -> [2,3,2] [3,2,3] -> [1,3,3,1] [1,3,2,2,1,3,1] -> …

16
素数的素数
出于此挑战的目的,素数的素数(PPP)定义为一个数字,可以定义为素数对素数的幂。例如,9是PPP,因为它可以表示为3 ^ 2。另一方面,81不是PPP,因为它只能表示为3 ^ 4,而4不是质数。头几个PPP是:4,8,9,25,27,32,49,121,125,128,169,243,289,343 ...这是OEIS序列A053810 你的任务: 编写一个程序或函数,使其对于输入整数n返回/输出第n个PPP(1索引或0索引),无论您喜欢哪个。 输入: 通过任何合理的方法获得的0到1,000之间的整数。 输出: 输入指示的索引处的PPP。 测试用例: 它们是1索引的,因此,如果您的程序采用0索引的输入,则对于指定的输入-1应该达到相同的输出。 3 -> 9 6 -> 32 9 -> 125 得分: 此代码高尔夫球,最低得分(以字节为单位)获胜!

6
实施Anyfix注释!
在前缀表示法中,运算符位于参数之前,因此您可以想象该运算符next()会以递归方式调用。在后缀表示法中,运算符在参数之间移动,因此您可以简单地将其想象为解析树。在后缀表示法中,运算符位于参数之后,因此您可以将其想象为基于堆栈的。 用anyfix表示法,操作员可以在任何地方*。如果操作员出现并且没有足够的参数,则操作员将等待直到有足够的参数。对于这一挑战,您将实现一个非常基本的anyfix评估程序。(请注意,anyfix是我放弃的一种娱乐语言,您可以在此处试用或在此处查看) 您将需要支持以下命令: (Arity 1) 重复 负 (Arity 2) 加成 乘法 相等:返回0或1。 您可以选择对这些命令使用任何五个非空白符号。出于演示目的,我将使用"重复项,×乘法和+加法。 对于文字,您仅需要支持非负整数,但是您的解释器必须能够包含所有整数(在您语言的(合理的)整数范围内)。 让我们来看一个示例:10+5。该存储应表现为堆栈,而不是队列。因此,首先,堆栈从开始[],而排队的操作员列表从开始[]。然后,对文字10进行求值,从而使stack成为可能[10]。接下来,对运算符+进行求值,它需要两个参数。但是,堆栈上只有一个参数,因此排队的运算符列表变为['+']。然后,对文字5进行求值,从而使stack成为可能[10, 5]。在这一点上,'+'可以对运算符进行评估,使它成为堆栈[15]和队列[]。 最终的结果应该是[15]为+ 10 5,10 + 5和10 5 +。 让我们来看一个更困难的示例:10+"。堆栈和队列从[]和开始[]。10首先被评估,这使堆栈[10]。接下来,+对进行评估,它不会更改堆栈(因为没有足够的参数),并使队列成为['+']。然后,"进行评估。这样就可以立即运行,从而形成堆栈[10, 10]。+现在可以求值,以使堆栈成为[20]和队列[]。最终结果是[20]。 操作顺序如何? 让我们来看看×+"10 10。堆栈和队列都以[]: ×:堆栈未更改,队列变为['×']。 +:堆栈未更改,队列变为['×', '+']。 ":堆栈未更改,队列变为['×', '+', '"']。 10:堆栈变为[10]。即使×应该是第一个要评估的运算符,因为它首先出现,但"可以立即运行,并且没有运算符可以运行,因此可以对其进行评估。堆栈变为[10, 10]并排队['×', '+']。×现在可以求值,这使堆栈[100]和队列成为可能['+']。 10:堆栈变为[100, 10],可以+对其进行求值。堆栈变为[110]并排队[]。 最终结果是[110]。 这些演示中使用的命令与anyfix语言的命令一致。但是,由于我的解释器中的错误,最后一个示例将无法正常工作。(免责声明:您的提交将不会在anyfix解释器中使用) 挑战 选择一组5个非空白非数字字符,并根据上述规范创建一个anyfix解释器。您的程序可以输出奇异数组或包含的值;确保值栈在执行结束时仅包含单个值,并且确保运算符队列在执行结束时为空。 这是代码高尔夫球,因此以字节为单位的最短代码获胜。 测试用例 对于这些测试用例,重复项为",否定为-,加法为+,乘法为×且相等为=。 Input -> Output 1+2×3 …

19
生成打印长度为n倍的程序
给定一个非负整数n,您的解决方案必须以您选择的语言输出一个程序,该程序的输出n字节数与输出程序的字节数相同。 规则 您必须指定解决方案输出的程序的语言和编码,并且不得为解决方案的不同输入选择不同的语言或编码。输出程序的语言可能与解决方案的语言相同,也可能不同。 您提交的内容仅需要处理您语言范围内的整数,但请勿滥用此规则。 这是代码高尔夫球,因此以字节为单位的最短提交会获胜。 例 假设n是4。然后f_8,我的解决方案输出了一个程序,该程序以我的(虚构的)语言输出j3 1s+/2]!mz。程序输出的长度为3,其输出的长度为3 * 4 = 12,因此该解决方案对于输入4是正确的。 假设它n是1,我的程序输出ffffpfpffp(10个字节)。ffffpfpffp用我选择的语言编写的程序必须产生10 * 1 = 10字节的输出。
16 code-golf  quine 

15
走开!No-1在这里!
我在玩一些数字,发现一个序列,当然是关于OEIS的序列。它是A005823:三进制扩展数不包含1的数字。它去了: a(2n)= 3 * a(n)+2 a(2n + 1)= 3 * a(n + 1) a(1)= 0 a = 0,2,6,8,18,20,24,26,54 .... 我编写了一个CJam程序,该程序通过将索引转换为二进制,将1替换为2,然后从三进制转换为十进制,来生成这些数字的前n个。 我还注意到,通过取序列中两个数字的和(有时是数字本身)可以得到任何偶数。 挑战: 给定任何非负偶数作为输入,请按求和顺序输出两个数字的索引。(请注意,有时可能有多对。) 规则: 指定使用0索引还是1索引。 如果要以字符串形式输出,请在两个索引之间放置一个定界符。 允许您输出为复数。 如果您愿意,可以输出每个有效对。 Code Golf:最短答案胜出 测试用例 我使用0索引。在这里,我列出了每个输入的所有可能输出,但您只需要输出一个即可。 0: [0 0] 2: [1 0] 4: [1 1] 6: [2 0] 8: [2 1] [3 0] 10: …

16
我有几个分区?
正整数的分区号定义为可将其表示为正整数之和的方式数。换句话说,它具有整数分区的数量。例如,数字4具有以下分区: [[1,1,1,1],[1,1,2],[1,3],[2,2],[4]] 因此,它具有5分区。这是OEIS A000041。 任务 给定正整数N,确定其分区号。 所有标准规则均适用。 输入和输出可以通过任何合理的方式进行处理。 这是code-golf,因此以字节为单位的最短代码获胜。 测试用例 输入| 输出量 1 | 1个 2 | 2 3 | 3 4 | 5 5 | 7 6 | 11 7 | 15 8 | 22 9 | 30 10 | 42

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.