Questions tagged «code-golf»

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

12
太棒了...几乎
如果您曾经在数学课上学习过素数,则可能必须要确定一个数是否是素数。当您仍在学习它们时,您可能已经搞砸了,例如,误以为是39。好吧,不用担心,因为39是一个半素数,即它是两个素数的乘积。 类似地,我们可以将k个几乎素数定义为k个素数的乘积。例如,40是第4个4素数;40 = 5 * 2 * 2 * 2,是4个因子的乘积。 你的任务是写一个程序/函数接受两个整数ñ和ķ作为输入和输出/返回ñ个ķ -almost素数。这是一个代码高尔夫球,因此以字节为单位的最短程序获胜。 测试用例 n, k => output n, 1 => the nth prime number 1, 1 => 2 3, 1 => 5 1, 2 => 4 3, 2 => 9 5, 3 => 27 杂 如果存在封闭形式,则您必须通过简单封闭形式以外的任何方式自己生成素数。

30
中位数:平均挑战
给定整数N> = 1,输出从0到N-1的整数的平均位数 规格 可以将输出计算为从0到N-1的每个整数的二进制表示形式的位数之和,再除以N。 在这种情况下,整数的二进制表示形式没有前导零,但零除外,它在二进制形式中表示为0。 输出应准确到至少7个有效数字。 例 N = 6 0: 0 : 1 bit 1: 1 : 1 bit 2: 10 : 2 bits 3: 11 : 2 bits 4: 100 : 3 bits 5: 101 : 3 bits 平均位数=(1 +1 + 2 + 2 + 3 + …

17
维修范围
给定输入的正整数列表,其中一些被替换为0,输出列表,其中包含已更改为0替换的缺失数字。 输入列表的特征: 列表的长度始终至少为2。 让我们将输入列表定义为a,将“原始列表”(即数字替换为0s 之前的列表)定义为b。对于任何一个n,a[n]是b[n]或0。 对于任何一个n,b[n]是b[n-1] + 1或b[n-1] - 1。也就是说,每个索引中的数字b始终会1从其前一个索引开始改变。当然,第一个要素是免除此规则。 对于in中的每一次零运行a(即用替换连续的元素 0),x代表运行开始的索引并y 代表结束,a[x-1]to a[y+1]总是单独增加或单独减少。因此,只有一种可能的方法来填充零。 这也意味着数组的第一个或最后一个元素都不能为零。 用更简单的术语来说,要填充零位,只需将其替换为从前一个数字到后一个数字的范围即可。例如,输入 1 2 0 0 0 6 7 必须输出 1 2 3 4 5 6 7 因为这是code-golf,所以以字节为单位的最短代码将获胜。 测试用例: In Out ----------------------------------------------------- 1 0 0 0 5 6 0 4 0 0 1 | 1 2 …

24
串弦琴
介绍 对于那些不知道的人来说,回文是指字符串等于字符串向后的字符串(插补,空格等除外)。回文的一个例子是: abcdcba 如果您扭转这种情况,最终将得到: abcdcba 都一样 因此,我们称这为回文。为了使事情更平淡,让我们看一个字符串示例: adbcb 这不是回文。为了做到这一点,我们需要将反向字符串合并到初始字符串右侧的初始字符串中,而两个版本均保持不变。越短越好。 我们可以尝试的第一件事如下: adbcb bcbda ^^ ^^ 并非所有字符都匹配,因此这不是反转字符串的正确位置。我们向右走了一步: adbcb bcbda ^^^^ 这也不是所有字符都匹配。我们向右再走一步: adbcb bcbda 这次,所有字符都匹配。我们可以合并两个完整的字符串。最终结果是: adbcbda 这是回文字符串。 任务 给定一个仅包含小写字母的字符串(至少包含一个字符)(如果更合适,则使用大写字母),输出经过palindromized的字符串。 测试用例 Input Output abcb abcba hello hellolleh bonobo bonobonob radar radar hex hexeh 这是代码高尔夫球,因此以最少的字节提交为准!

20
找到并旋转
任务 这是一个简单的挑战。您的输入是一个非空字符串,仅包含数字0123456789和哈希值#。它将仅包含一串数字,该数字编码一个非负整数,并且可以环绕在字符串的末尾,并且至少包含一个#。该整数可能具有前导零。例如##44##,013####并且23###1是有效的投入,同时###,0099并#4#4没有。 您的任务是n从字符串中提取整数,并n向右输出字符串旋转步骤。 例子 输入#1##应向右旋转1步,因此正确的输出为##1#。 输入#026###应向右旋转26步,因为前导0被忽略。正确的输出是26####0。 输入1####2的末尾包含整数21,因此应将其向右旋转21步。正确的输出是##21##。 规则和计分 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。 您可以假定数字n适合int您的语言的标准类型。相反,如果该标准int类型实现了任意精度的整数,则(理论上)您必须支持任意大的n。 测试用例 #1## -> ##1# ##4## -> #4### 1####1 -> ####11 1####2 -> ##21## #026### -> 26####0 #000### -> #000### ###82399 -> ##82399# 51379#97 -> #9751379 #98##### -> ###98### #######4## -> #4######## 60752#1183 -> 8360752#11 ####99366800## -> 366800######99 ########9##### -> ###9########## …

25
梯子上的机器人
背景 我有一个倚在墙上的梯子,还有一个可以爬上它的遥控机器人。我可以向机器人发送三个不同的命令: UP:机器人向上走了一步。如果在最高的台阶上,它会跳下,跌落并爆炸。 DOWN:机器人向下走了一步。如果它处于最低位置,则什么也不会发生。 RESET:机器人返回到最低位置。 我还可以发送一系列命令,机器人将一个接一个地执行它们。您的任务是预测其运动。 输入值 您的输入是一个正整数N,代表阶梯中的步数;一个非空字符串Cover UDR,代表我已经发送给机器人的命令。您可以假设N < 1000。机器人在梯子的最低位置初始化。 输出量 可以保证机器人会在某个时候爬上最高的台阶并爆炸。您的输出是在此之前执行的命令数。 例 考虑输入N = 4和C = "UDDUURUUUUUUUDDDD" 所述的机器人,由表示@沿4-阶梯,移动如下: |-| |-| |-| |-| |-| |-| |-| |-| |-| |@| |-|| |-| |-| |-| |-| |-| |@| |-| |-| |@| |-| |-|| |-| |@| |-| |-| |@| |-| |-| |@| …

30
实施接单
介绍和信誉 今天没有花哨的前奏:请实施takewhile。 这种变化(在非平凡的数据结构上)是我大学功能编程课程中的一项作业。这项作业现在已经关闭,并且已经在课堂上进行了讨论,我已经得到了我教授的允许在这里发布(我明确要求过)。 规格 输入值 输入将是一个正整数列表(或您的语言的等效概念)。 输出量 输出应为正整数列表(或您的语言的等效概念)。 该怎么办? 您的任务是使用要takewhile考虑的数字为偶数的谓词来实现(允许使用语言内置函数)(着重于获取时间)。 因此,您从头到尾遍历列表,并且在条件(为偶数)成立的情况下,将其复制到输出列表,并在遇到不符合条件的元素时立即中止操作并输出(下面是一个分步示例)。这种高阶功能也称为takeWhile(takewhile)。 潜在的极端情况 与输入列表相比,输出列表的顺序可能不会更改,例如[14,42,2]可能不会变为[42,14]。 空列表是有效的输入和输出。 谁赢? 这是代码高尔夫球,因此最短的答案以字节为单位! 标准规则当然适用。 测试向量 [14, 42, 2324, 97090, 4080622, 171480372] -> [14, 42, 2324, 97090, 4080622, 171480372] [42, 14, 42, 2324] -> [42, 14, 42, 2324] [7,14,42] -> [] [] -> [] [171480372, 13, 14, 42] …

11
构架这种精美的ASCII艺术
介绍 我认为每个人都同意,精美的图片必须具有良好的框架。但是,本网站上有关ASCII艺术的大多数挑战只是想要原始图片,而不关心它的保存。 如果我们有一个程序采用一些ASCII-Art并将其周围环绕一个漂亮的框架,那岂不是很好吗? 挑战 编写一个程序,将某些ASCII艺术作为输入,然后将其输出,并用漂亮的框架包围。 例: ***** *** * *** ***** 变成 ╔═══════╗ ║*****║ ║***║ ║*║ ║***║ ║*****║ ╚═══════╝ 您必须为框架使用与示例中完全相同的字符: ═ ║ ╔ ╗ ╚ ╝ 框架的顶部和底部将插入到输入的第一行和最后一行之前。 框架的左部分和右部分必须在输入的最宽行上具有精确的一个空格填充。 输出中可能没有前导或尾随空格。只允许尾随换行符。 您可以假定输入没有不必要的前导空格。 您可以假定输入在任何行上都没有尾随空格。 您不必处理空输入。 输入将仅包含可打印的ASCII字符和换行符。 规则 允许功能或完整程序。 输入/输出的默认规则。 有标准漏洞。 这是代码高尔夫球,因此最低字节数获胜。Tiebreaker是较早提交的内容。 编码愉快! 强烈建议使用本网站在任何挑战中产生的出色ASCII艺术,作为程序的输入并以漂亮的框架进行显示!

28
将二进制分解为交替的子序列
这个灵感来自非重复二进制-问题13的HP CodeWars'最近的比赛。 让我们取一个随机的十进制数 727429805944311 并查看其二进制表示形式: 10100101011001011111110011001011101010110111110111 现在,将该二进制表示形式拆分为数字0和1交替的子序列。 1010 010101 10 0101 1 1 1 1 1 10 01 10 0101 1 1010101 101 1 1 1 101 1 1 并将每个子序列转换回十进制。 10 21 2 5 1 1 1 1 1 2 1 2 5 1 85 5 1 1 1 5 …

30
子序列替换
大多数语言都带有内置功能,可以在字符串中搜索所有出现的给定子字符串,然后用另一个替换。我不知道有什么语言可以将此概念推广为(不一定是连续的)子序列。因此,这就是您面临的挑战。 输入将包含三个字符串A,B和C,其中B和C保证长度相同。如果B出现为子序列,A则应替换为C。这是一个简单的示例: A: abcdefghijklmnopqrstuvwxyz B: ghost C: 12345 可以这样处理: abcdefghijklmnopqrstuvwxyz || | || abcdef12ijklmn3pqr45uvwxyz 如果有几种查找子B序列的方法,则应贪婪地替换最左边的子序列: A: abcdeedcba B: ada C: BOB Result: BbcOeedcbB and NOT: BbcdeeOcbB 如果B可以在多个不相交的地方找到,则同样适用: A: abcdeedcbaabcde B: ed C: 12 Result: abcd1e2cbaabcde and NOT: abcd112cbaabc2e (or similar) 当B没有出现时A,您应该输出A不变。 规则 如上所述,采取三个串A,B和C作为输入和替换的最左边的发生B在作为子A带C,如果有的话。 您可以编写程序或函数,通过STDIN(或最接近的替代方案),命令行参数或函数自变量获取输入,并通过STDOUT(或最接近的替代方案),函数返回值或函数(out)参数输出结果。 您可以按照在答案中指定的任何一致顺序选择三个字符串。您可以假设B且C具有相同的长度。所有字符串将仅包含字母数字字符。 适用标准代码高尔夫球规则。 测试用例 每个测试用例是四行:A,B,C随后的结果。 abcdefghijklmnopqrstuvwxyz ghost …

24
说你所见
“请说一说”或“说您看到的内容”序列是一系列数字,每个数字都描述了最后一个数字。 1 11 (one one) 21 (two ones) 1211 (one two, one one) 111221 (one one, one two, two ones) 312211 (three ones, two twos, one one) 等等... https://oeis.org/A005150 无论如何,这是一个常规的代码挑战(以最少的字节数获胜),使程序需要两个参数,即初始数和迭代次数。例如,如果您插入“ 1”和“ 2”,则结果将是“ 21”。如果您插入“ 2”和“ 4”,则结果将是“ 132112”。玩得开心!

24
RATS序列
您的任务是生成RATS序列的第n个项,其中n是输入。RATS序列也称为反向先添加后排序序列。也可以在以下位置找到此序列:http : //oeis.org/A004000。 测试用例: 0 > 1 1 > 2 2 > 4 3 > 8 4 > 16 5 > 77 6 > 145 7 > 668 例如,5的输出为77,因为16 + 61 =77。此后,对77进行排序。 提交时间最短者获胜。这是我的第一个挑战,所以我希望这不是重复的东西。

27
三个输入整数的差
实现一个函数diff,将三个整数x,y和z作为输入。它应该返回是否从另一个中减去这些数字中的一个得出第三个数字。 Test cases: diff(5, 3, 2) yields True because 5 - 3 = 2 diff(2, 3, 5) yields True because 5 - 3 = 2 diff(2, 5, 3) yields True because 5 - 3 = 2 diff(-2, 3, 5) yields True because 3 - 5 is -2 diff(-5, -3, -2) …

3
救命!我的计算器坏了!(将整数表达式转换为计算器按键)
介绍 救命!我不小心将TI-84计算器掉到了窗外(不要问怎么做),它坏了。我明天要进行数学测试,唯一能找到的计算器就是这些按钮: 7 8 9 + 4 5 6 - 1 2 3 * 0 = / 我的数学测试是关于评估表达式的复习测试。我需要一个程序来接受诸如的表达式1+(5*4)/7,并将其转换为在备用计算器上求解所需的击键。(如果您想知道,这确实发生在我身上)。 挑战 鉴于含有非空输入串仅字符0-9,(,),+,-,*,和/,输出以空间分隔的字符串的键击(例如1 + 3 / 3 =)。输出末尾必须始终有一个等号。不允许出现标准漏洞。 例子: 输入:1+(5*4)/7,输出:5 * 4 / 7 + 1 = 输入:6*(2/3),输出:2 / 3 * 6 = 输入:(7-3)/2,输出:7 - 3 / 2 = 为了使这个挑战更容易: 您可能假定输入具有一系列与其关联的击键,不需要清除计算器(这1-(7*3)是无效的,因为它需要您查找7 * 3然后清除计算器才能进行1 …

30
数数乡亲!
介绍 听起来可能很奇怪,但从计数1到n包含在内,我们还没有一个挑战。 这不是同一回事。那是一个(封闭的)没有充分解释的挑战。 这不是同一回事。那就是无限期地递增计数。 挑战 编写一个程序或函数来打印从1到的每个整数n。 规则 你可以得到n任何方式。 您可以假设n它将始终是一个正整数。 您可以n输入任何基数,但应始终以十进制输出。 输出必须用以外的任何字符(或模式)分隔0123456789。允许使用非十进制的前导或尾随字符(例如,当使用数组时,例如[1, 2, 3, 4, 5, 6])。 标准漏洞被拒绝。 我们希望找到每种语言中最短的方法,而不是最短的语言,因此我将不接受任何答案。 您必须在此编辑后更新您的答案,在上次编辑之前发布的答案必须符合有关标准漏洞的更改规则(我不想否认这些漏洞,但是我不想让社区怒吼,所以我否认了)。 您可以使用任何约会后的语言版本(或其他语言)。您不能使用仅用于此挑战的任何语言或语言版本。 奖金 20% 您的程序必须至少能够计数18446744073709551615(2^64-1)。例如,如果新数据类型是支持大整数的唯一方法,则必须构造它。如果您的语言没有任何方法可以支持最大2 ^ 64-1的大整数,则必须支持该特定语言的上限。 编辑:我已将限制从2^64更改2^64-1为允许更多答案。 编辑:我使2 ^ 64-1规则成为奖励,因为对此挑战没有太大兴趣。如果您的答案支持2 ^ 64-1,则现在可以对其进行编辑以包括奖金。另外,如果答案较短,则可以发布不支持该答案的答案。

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.