Questions tagged «code-golf»

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

15
创建一个移位器
要“转移”多个n位置,请执行以下操作: 删除最后一位n数字 n将第一个数字的副本添加到数字的开头 例如,要将数字移31415三位,请取出最后三位数字以获得31,然后再将最后一位数字的三份添加3到末尾,给出33331。 如果数字为负数,则应从左数起取数字,而第一个数字应从右数“填充”。例如,将字符串31415移至-3个位置可得到15555。 如果数字为0,则不应进行任何更改。 如果移位大于程序长度,则可能会开始删除所填充的数字。这意味着,如果给定的数字大于字符串的长度,则在整个字符串变为一位数字后,将不再进行任何更改。 挑战 给定两个数字n和s,返回n移到多个s位置。 测试用例 n, s -> result 7243, 1 -> 7724 452, -1 -> 522 12, 1 -> 11 153, 4 -> 111 这是代码高尔夫球,因此最短的有效提交(以字节为单位)获胜。
10 code-golf  math 

2
重新缩进Java / C / C ++ / etc。码
编写一个添加或删除空格以很好地格式化代码的程序。完成后代码外观的规则: 没有行应包含一个以上的{和}。 A {应该永远是一行中的最后一件事。 A }应该始终是一行中的唯一内容(除空格之前)。 每行前面的空白数量应为当前嵌套计数的固定倍数。(您可以使用任意数量的缩进,只要它没有变化即可。) 不应插入或删除不会有助于满足这些规则之一的空格。 第一行的嵌套计数为0。任何其他行的嵌套计数为前一行的嵌套计数,如果前一行包含a {,则加一个,如果当前行包含a ,则减一}。 {并且}内部字符串文字和注释不计入上述规则。字符串文字是用单引号或双引号引起来的文本,其中单引号或双引号之前带有奇数个反斜杠的字符不会被解释为字符串文字的结尾。注释是用/*和括起来的*/文本,或者是从//行尾开始的文本。在一行中的多个注释开始标记中,只有第一个开始计数。注释不会在字符串文字中解析。 例子 main() {printf("Hello!"); // I don't care about the world... } becomes: main() { printf("Hello!"); // I don't care about the world... } int main(){ puts("a"); puts("b"); } becomes: int main(){ puts("a"); puts("b"); } main() { printf("{"); /* …

2
在高尔夫球场上种树!
这个挑战的灵感来自这个程序。 这是此挑战的简单得多的版本。这个挑战是代码挑战,而另一个挑战是最快的代码。 您将得到一个正方形的输入网格,其尺寸为6 x 6,分为6个区域,每个区域的单元格都有一个唯一的标识符(我将在本文中使用af的小写字母,但您可以选择任意值,例如整数1-6)。 输入可能看起来像这样(可选输入格式): aabbbb aabbbb aaccbb acccdb ecccdb eeefff 或者,更容易可视化: 挑战: 您将根据以下规则在该公园中放置6棵树: 每列应有1棵树,每行应有1棵树 所有区域均应恰好有一棵树。 垂直,水平或对角线的任何树木都不能与另一棵树木相邻 上面布局的解决方案是: 注意:每个难题只有一个解决方案 附加规则: 输入和输出格式是可选的 例如,输出可能是索引列表,带有1/0的网格(指示在该位置是否有树)或输入的修改版本(其中指示了树) 执行时间必须是确定的 该程序必须在一台合理的现代笔记本电脑上在1分钟内完成 如果您不蛮力,布朗尼会指出! 测试用例: aabbbb aabbbb aaccbb acccdb ecccdb eeefff --- aAbbbb aabbbB aaCcbb acccDb Ecccdb eeeFff ---------- aabccc aacccc aaddce aeeeee aeeefe eeeeee --- aaBccc aacccC …
10 code-golf  grid  game 

12
找出第二个零
挑战 给定一个32位二进制补码格式的整数,请返回二进制表示形式中第二个最低有效零数字的索引,其中索引0表示最低有效位,而索引31表示最高有效位。 如果没有第二个零,则可以返回0,任何负数,任何虚假值或以您的语言有意义的方式报告错误。 如果愿意,可以使用1索引,但是下面的测试用例将使用0索引。 如果愿意,可以使用无符号整数。如果这样做,则必须处理范围内的整数[0, 2^32)。如果使用带符号整数,则必须处理范围内的整数[-2^31, 2^31)。这里的测试用例将使用带符号的整数,但请注意,-x(带符号)为2^32 - x(无符号)。 测试用例 0(0b00)-> 1 1(0b001)-> 2 10(0b1010)-> 2 11(0b01011)-> 4 12(0b1100)-> 1 23(0b010111)-> 5 -1(0b11..11)->无 -2(0b11..10)->无 -4(0b11..00)-> 1 -5(0b11..1011)->无 -9(0b11..10111)->无 2 ^ 31-2(0b0111..1110)-> 31 计分 这是代码高尔夫球,因此每种语言中最短的答案将获胜!
10 code-golf  number 

11
Tri-interquine-三个程序在一个循环中互相输出
相关:Interquine 程序A在运行时输出程序B的代码,B输出C的源代码,而C输出A的源代码。 这次您不能交换两个字符并再次交换:) 要求: 所有程序中只有一种语言 适用标准漏洞限制 所有程序都不同。输出自身的一个程序没有资格。互相输出的两个也没有资格。 所有程序都是非空的,或者长度至少为1个字节。 没有什么阅读,因为标准输入连接到/dev/null(你可以,如果你滥用该规则可以)。输出进入标准输出。 不要使用会产生随机结果的函数。 额外: 如果可能,给出解释 得分是最短程序的长度(您可以从短程序中生成长程序吗?)。请写下所有程序的长度,并突出显示最小的数字。尾随换行符不计算在内。最低分获胜。
10 code-golf  quine 

13
克拉克三角
好吧,最近我踢了一点三角,所以这是另一个。 Clark的三角形是一个三角形,其中每行的最左边的条目为1,最右边的条目由6的倍数组成,随着行数的增加而增加。这是可视化 1 6 1 . 12 1 . . 18 1 . . . 24 1 . . . . 30 1 . . . . . 36 就像Pascal的Triangle一样,所有其他条目都是右上角和左上角数字的总和。 这是前几行 1 6 1 7 12 1 8 19 18 1 9 27 37 24 1 10 36 64 61 …
10 code-golf  math  number 

14
12小时时间转换
挑战 转换并以12小时格式打印时间。 HH:MM AM/PM 例子 输入: 'Fri Jun 30 2017 21:14:20 GMT-0700 (PDT)' 'Fri Jun 30 2017 00:10:23 GMT-0700 (PDT)' 'Fri Jun 30 2017 12:10:23 GMT-0700 (PDT)' 'Sat Jun 31 2018 8:06:20 GMT-0700 (PDT)' 'Fri Jul 01 2017 01:14:20 GMT-0700 (PDT)' 'Sat Apr 10 2020 09:06:20 GMT-0700 (PDT)' 输出: 9:14 …
10 code-golf 

4
生活与疲劳的游戏
Stewie的《生命与疲劳游戏》与更著名的Conway的《生命游戏》非常相似。 Stewie的“生命与疲劳游戏”(GoLF)的宇宙是一个由正方形单元组成的无限二维正交网格,每个网格都处于三种可能的状态之一,即活着,死亡或疲倦。每个单元都与其八个相邻的单元进行交互,这八个单元是水平,垂直或对角线相邻的单元。在每个时间步上,都会发生以下转换: 任何具有少于两个活邻居的活细胞都会死亡,好像是由于人口不足造成的。 任何有两个或三个活邻居的活细胞都可以存活到下一代。 任何具有三个以上活邻居的活细胞都会死亡,就好像人口过多一样。 具有正好三个活邻居的任何死细胞都将变成活细胞,就像通过繁殖一样。 连续存活了两个世代的任何细胞都会死亡,好像是由于疲劳而死亡。直到下一代,它才能重生 输入网格边界之外的任何像元都将消失,就像从悬崖上掉下来一样。 挑战: 您面临的挑战是获取一个代表GoLF初始状态的n×m尺寸的网格和一个整数p,并在p代之后输出游戏的状态。 规则: 输入和输出格式是可选的,但输入/输出网格应具有相同的表示形式 您可以选择任何可打印的符号来表示活细胞和死细胞(我将1用于活细胞和0死细胞)。 您可以选择索引为0还是1。在示例中,p=1是指一步之后的状态。 每种语言中最短的代码获胜 允许用于蜂窝自动化的内置功能 测试用例: 在示例中,我仅在输入中包含输入网格,而不是p。我提供了各种p值的输出。您只能输出与给定输入p一起的网格。 Input: 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 --- Output --- p = 1 …

3
使您的键盘变成键盘
任务 您应该编写一个程序,当按下按钮时,它会为每个键输出不同的声音。 您将使用的密钥是: 1!2"34$5%6^78*9(0qQwWeErtTyYuiIoOpPasSdDfgGhHjJklLzZxcCvVbBnm 音符从处开始,C上方的每个键添加一个半音。 让我们稍微简化一下。您可以选择2个类似的任务, 1)按下一个键时输出一个不同的音符,直到另一个键被按下为止。该程序无限期运行 2)以一个仅包含上述字符的字符串作为输入,它将在每个音符中准确输出1秒钟(允许0.05秒钟的变化) 输入值 按键被按下 仅包含上述符号的单个字符串 输出量 单个音符一直响到按下另一个键 一系列音符,每个音符长1秒 笔记 Letter | Note -------+------- 1 | C ! | C# 2 | D " | D# 3 | E 4 | F $ | F# 5 | G % | G# 6 | A ^ …
10 code-golf  audio 

4
我最喜欢的球队还能成为足球冠军吗?
作为本赛季末最成功的足球BE队的球迷,我常常想知道我最喜欢的球队是否仍然有理论上的机会成为冠军。您在这项挑战中的任务是为我回答这个问题。 输入值 您将收到三个输入:当前表,剩余比赛列表以及我们感兴趣的球队的当前位置。 输入1:在当前表,数字的顺序是该我个号是由团队获得的点我为止。例如,输入 [93, 86, 78, 76, 75]对下表进行编码(仅最后一列很重要): 输入2:剩余比赛,一组元组,其中每个元组(i,j)代表第i队和第j队之间的剩余比赛。在上面的示例中,第二个输入[(1,2), (4,3), (2,3), (3,2), (1,2)]表示其余匹配为: Chelsea vs Tottenham, Liverpool vs Man. City, Tottenham vs Man. City, Man. City vs Tottenham, Chelsea vs Tottenham 输入3:我们感兴趣的球队的当前职位。例如,2上面示例的输入表示我们想知道热刺是否仍然可以成为冠军。 输出量 对于形式(i,j)的每个剩余匹配项,有三种可能的结果: I队获胜:I队获得3分,J队获得0分 J队获胜:I队获得0分,J队获得3分 平局:i队和j队均获得1分 如果所有剩余比赛都有结果,则必须输出一个真实值,以使最后没有其他球队的得分超过第3输入中指定的球队。否则,输出一个伪造的值。 示例:考虑来自以上部分的示例性输入: 输入1 = [93, 86, 78, 76, 75],输入2 = [(1,2), (4,3), …

10
我的后缀是什么类型?
介绍 因此,我一直在浪费时间来研究后缀排序算法,以手工和代码方式评估新的想法。但是我总是很难记住后缀的类型!能告诉我我的后缀是哪种类型? 最左边是什么? 许多后缀排序算法(SAIS,KA,我自己的daware)将后缀分为不同的类型,以便对其进行排序。有两种基本类型:S型和L型后缀。S型后缀是字典顺序以下(后缀小号比下面后缀和小光伏)L型,如果它是按字典顺序更大(大号 arger)。甲最左边的S型(LMS型)就是:甲S型,其由preceeded后缀L型后缀。 这些LMS类型后缀的特殊之处在于,一旦我们对它们进行了排序,就可以在线性时间内对所有其他后缀进行排序!那不是很棒吗? 挑战 给定一个字符串,假定它以小于该字符串中任何其他字符的特殊字符终止(例如,甚至小于空字节)。为每个后缀输出对应的char类型。 您可以自由选择使用哪种类型的字符哪个,但我更喜欢L, S and *的L-, S- and LMS-type,只要它们是所有可打印的(0x20 - 0x7E)。 例 给定字符串mmiissiissiippi输出(使用时L, S and *): LL*SLL*SLL*SLLL 例如,第一个L是由于在mmiissiissiippi$字典上大于miissiissiippi$($代表所添加的最小字符)的事实: L - mmiissiissiippi$ > miissiissiippi$ L - miissiissiippi$ > iissiissiippi$ * - iissiissiippi$ < issiissiippi and preceeded by L S - issiissiippi$ < ssiissiippi$ L - …

5
在3D中绘制高斯分布
在概率论中,正态(或高斯)分布是一种非常常见的连续概率分布。正态分布在统计中很重要,并且在自然科学和社会科学中经常用来表示其分布未知的实值随机变量。 挑战 您面临的挑战是在3维平面上绘制高斯分布的概率密度。该函数定义为: 哪里: 甲 = 1,σ X = σ ÿ = σ 规则 您的程序必须采用一个输入σ,即标准偏差。 您的程序必须在您的语言/系统允许的情况下,以最高质量打印高斯分布的3D图。 您的程序可能未使用直接的高斯分布或内置的概率密度。 您的程序不必终止。 您的情节可能是黑白或彩色的。 您的绘图的底部必须有网格线。侧面的网格线(如示例中所示)是不必要的。 您的绘图不需要在网格线旁边有线号。 计分 像在代码高尔夫球中一样,最少字节的提交将获胜!我可能永远不会使用按钮来“接受”答案,除非它很小且直观。 输出示例 您的输出可能看起来像这样: 或者它可能看起来像这样: 更 有效的 输出。无效的 输出。

6
取消缩短Google链接
挑战 给定有效的goo.gl缩短链接,输出原始URL。 例 goo.gl/qIwi3N会给像https://codegolf.stackexchange.com/。对于输入,您可以选择https?://在开头加上,可以www.在之前goo.gl选择,goo.gl如果只希望URL的结尾,也可以选择删除。末尾的斜杠对于输入和输出是可选的。因此,您的输入将最终与regex匹配(https?://)?(www\.)?(goo\.gl/)?[A-Za-z0-9]+/?。对于输出,您可以选择是否输出https?://,是否输出www.以及是否输出斜杠。但是,您必须与I / O格式保持一致。 我会说你不必与 https vs. http的输出(但对于输入,您必须保持一致),只要您对是否包括整个https?://部分都保持一致即可。 测试用例 这些在输入中用no https://,no www.,末尾没有斜杠书写;yes https://,no www.和yes输出中的斜杠。 input -> output goo.gl/HaE8Au -> https://codegolf.stackexchange.com/ goo.gl/IfZMwe -> https://stackoverflow.com/ goo.gl/JUdmxL -> https://chat.stackexchange.com/rooms/240/the-nineteenth-byte 假设条件 您可以假定缩短的链接不会指向另一个缩短的链接,并且目标站点将返回2xx或的状态代码4xx(无重定向)。 您可以在此处输入URL以应用相反的操作:https://goo.gl/

2
冯·科赫猜想
您可能认识到数学家冯·科赫(von Koch)的著名雪花。但是,他有更多有趣的计算机科学问题要解决。的确,让我们看一下这个猜想: 给定具有n节点的树(因此n-1边缘)。找到一种方法,从枚举节点1向n,因此,从边缘1到n-1以这样的方式,对于每个边缘k其节点号的差等于k。推测这总是可能的。 这是一个例子,可以很清楚地说明这一点: 你的任务 您的代码将以一棵树作为输入,您可以采用所需的格式,但是对于测试用例,我将通过它们的弧线和它们的节点列表来提供树。 例如,这是图片中树的输入: [a,b,c,d,e,f,g] d -> a a -> b a -> g b -> c b -> e e -> f 您的代码必须返回带有编号的节点和边的树。您可以返回更多图形输出,但是我将为测试用例提供这种输出: [a7,b3,c6,d1,e5,f4,g2] d -> a 6 a -> b 4 a -> g 5 b -> c 3 b -> e 2 e -> …

5
再次可视化欧几里得算法
任务 给定两个正整数: 绘制由两个整数指定的尺寸的矩形。 重复步骤3,直到没有更多空间。 绘制并填充与(剩余)矩形的三个边接触的最大正方形。 输出结果矩形。 例 例如,我们的输入是6和10。 我们绘制大小为6 x 10的空心矩形: xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx 重复填充正方形后,我们将获得以下结果: aaaaaabbbb aaaaaabbbb aaaaaabbbb aaaaaabbbb aaaaaaccdd aaaaaaccdd 有4个方格位置(a,b,c,d),每个边长6,4,2,2分别。 规则与自由 您必须为每个正方形使用不同的字母。 您可以选择要支持的字母,只要支持的字母都是可打印字符,并且至少10支持字符即可。 在上面的步骤3的每个迭代中,您都有两个选择(在上一个迭代中,只有一个选择)。两种选择均有效。 所需的平方数不会超过您支持的字母数。 您可以按任何顺序用支持的字母填写方块。 测试用例 输入: 6, 10 输出: aaaaaabbbb aaaaaabbbb aaaaaabbbb aaaaaabbbb aaaaaaccdd aaaaaaccdd 要么 aaaaaaccdd aaaaaaccdd aaaaaabbbb aaaaaabbbb aaaaaabbbb aaaaaabbbb 要么 …

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.