编程拼图和代码高尔夫

编程益智爱好者和代码高尔夫球手的问答

7
在音乐谱号之间转换
离开之前,您无需了解太多的乐谱即可完成此挑战。 说明 在标准活页乐谱中,双谱号跨过页面,用作音符的参考点,让您知道应该演奏哪个音符。如果您还不熟悉高音谱号和低音谱号,请参阅Wikipedia中的说明: 谱号是一种音乐符号,用于指示音符的音高。放在五线谱开始处的其中一行上,它指示该行上音符的名称和音高。该线用作参考点,通过该参考点可以确定五线谱的任何其他线或空间上的音符名称。 在上图中,线条的上半部分是高音谱号,用a表示 下半部分是低音谱号,用 正如你可以在高音谱号看到一张纸条上的最底部线是Ë。(我不是外面计数谱号线这一挑战的笔记)在低音谱号,最低线是摹。要完成此挑战,您必须执行以下操作: 挑战 给定以下形式之一的输入(您的选择),请将其转换为相反的谱号。无论是高音谱号还是低音谱号,在您的语言中都可以是Truthey / Falsey值(不仅是两个值),例如 F#T 或 F#True 或 F#高音 但不是 F#-1 或 F#4 空格和大写字母是可选的,不显示单位,并且不允许尾随空格。 Input Expected Output E Treble G F Treble A F# Treble A# G Treble B G# Treble C A Treble C A# Treble C# B Treble D C Treble …

6
打我的“预高尔夫球” C
背景 对于用C语言提交的代码高尔夫,我需要一个处理工具。像在许多其他语言中一样,空格在C源代码中几乎无关紧要(但并非总是如此!)-仍然使代码对人类更易理解。一个不包含单个冗余空格的,功能全面的C程序通常很难读取。 因此,我喜欢用C编写代码以提交包含空格和注释的代码高尔夫球,因此程序在编写时保持可理解的结构。最后一步是删除所有注释和多余的空格。这是一项繁琐而漫不经心的任务,实际上应该由计算机程序的实习生来完成。 任务 根据以下规则,编写程序或函数,以消除某些“预查询”的C源代码中的注释和多余的空格: 一个\(反斜杠)在该行的最后一个字符是续行。如果找到此行,则必须将以下行视为同一逻辑行的一部分(例如,可以在执行其他任何操作之前将其\和以下\n(换行符)完全删除) 注释将仅使用单行格式,以开头//。因此,要删除它们,无论//在字符串文字之外遇到的任何地方,都忽略逻辑行的其余部分(请参见下文)。 空格字符是(空格),\t(制表符)和\n(换行符,因此这里是逻辑行的结尾)。 当找到空白序列时,请检查其周围的非空白字符。如果 它们都是字母数字或下划线(范围[a-zA-Z0-9_])或 两者都是+或 两者都是-或 前一个是/,下一个是* 然后将序列替换为一个空格()字符。 否则,请完全消除该顺序。 此规则有一些例外: 预处理程序伪指令必须出现在输出中它们自己的行上。预处理程序指令是以开头的行#。 在字符串文字或字符文字中,您不应删除任何空格。任何不以奇数个反斜杠()直接开头的"(双引号)/ '(单引号)都\以字符串文字 / 字符文字开头或结尾。您可以确保字符串和字符文字在它们开始的同一行结束。字符串文字和字符文字不能嵌套,所以'一个内部的字符串文字,以及一个"一个内部字符文字没有任何特殊含义。 I / O规格 输入和输出必须是包含换行符的字符序列(字符串)或不包含换行符的字符串数组/列表。如果选择使用数组/列表,则每个元素代表一行,因此换行符在每个元素之后都是隐式的。 您可以假定输入是有效的C程序源代码。这也意味着它仅包含可打印的ASCII字符,制表符和换行符。允许输入格式不正确的行为。 开头和结尾的空白/空行是不允许的。 测试用例 输入 main() { printf("Hello, World!"); // hi } 输出 main(){printf("Hello, World!");} 输入 #define max(x, y) \ x > y ? x : …
12 code-golf  c 

2
如何缩短此python代码?
这是我要缩短的代码。 n=input() while n: s=raw_input() x,r,g,b=(int(x) for x in s.split()) a=x/r%2 c=x/g%2 d=x/b%2 r=((a*10+c)*10)+d if r==0:e="black" elif r==100:e="red" elif r==1:e="blue" elif r==10:e="green" elif r==101:e="magenta" elif r==11:e="cyan" elif r==110:e="yellow" else:e="white" print(e) n-=1 输入3 4643 5913 4827 9752 5583 5357 5120 9400 2025 5475 4339 8392 输出: black yellow black
12 code-golf  tips  python 

15
交替数字
考虑正整数数组: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, ... 然后,将它们串联: 1234567891011121314151617181920212223242526... 然后将它们分成可变长度的块,每个长度等于第N个正整数: [1][23][456][7891][01112][131415][1617181][92021222][324252627][2829303132] ... --------------------------------------------------------------------------- 1 2 3 4 5 6 7 8 9 10 ... 任务 给定整数N(对于1索引为正数或对于0索引为非负数),您的任务是输出第N个块中的数字增量(和连续数字之间的差)。 默认情况下禁止使用漏洞。 适用标准输入和输出方法。 您可以为N选择0或1索引。 序列必须以1开始。 这是代码高尔夫球,以字节为单位的最短代码获胜。 范例与测试案例 1个索引的测试用例。如果您希望索引为0,则只需将N减1。 N, Chunk, Deltas, Sum 1 -> 1 -> [] …

1
拆弦!
挑战 给定一个字符串输入,输出它的已删除版本。 流程 P r Pr r o o o g g g r r r rogr r a -> a -> a -> a -> a -> -> -> -> -> m m m m m m m m m m mmar m i i i i i i …

15
创建一个指针序列
让我们定义指针序列是这样的任何序列A(N)= A((N-1) - (A(N-1)))的forall Ñ比一些有限数量。例如,如果我们的序列以 3 2 1 我们的下一项将是2,因为a(n-1)= 1,(n-1)-1 = 1,a(1)= 2(此示例为零索引,但是使用计算将使用哪个索引并不重要总是一样。)。如果我们重复这个过程,我们将得到无限序列 3 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 …

23
将两个整数的平均值相加
数学中有很多手段,例如算术平均,几何平均等等。 定义和任务 请注意,以下是两个正整数 * 的定义: 的根均方是它们的平方的减半(总和的平方根)。 该算术平均值是它们的总和,减半()。 的几何平均值是他们的产品的平方根()。 的调和平均值是2可以通过倒数之和(分割= )。 给定两个整数a和b 使得a,b∈[1,+∞),对a和b的上述均值求和。您的答案必须至少精确到小数点后3位,但您不必担心舍入或浮点精度错误。 测试用例 a,b->输出 7,6-> 25.961481565148972 10、10-> 40 23,1-> 34.99131878607909 2,4-> 11.657371451581236 345,192-> 1051.7606599443843 使用此程序,您可以查看更多测试案例的正确结果。这是代码高尔夫球,因此遵循标准规则的最短有效提交将获胜。 *还有许多其他方法,但是出于挑战的目的,我们将使用“定义”部分中提到的方法。

11
自求和数字
将数字转换为数字总和 没有任何数字:我们需要最短的数字 没有数字:您只能使用数字中的数字 例如 你将被给定为输入的整数n>0 比方说n=27。你要表达27的总和,使用仅数字 [2,7],在最短的可能的方式。您不必使用给定数字的所有数字! 所以27=2+2+2+7+7+7。然后我们取这些数字并计数:[2,2,2,7,7,7]。 的最终答案n=27是6 对于一个例子n=195,以获得最短的总和,我们必须使用以下数字: [5,5,5,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9]和答案是23 挑战 给定一个整数n>0,输出与之相加的最小位数(包含在数字中) 测试用例 Input->Output 1->1 2->1 10->10 58->8 874->110 1259->142 12347->1765 123456->20576 3456789->384088 这是代码高尔夫。最短的答案以字节为单位!

7
因子总数
给定n> 1的正整数,确定乘以n大于1的整数可以得到多少个数字。例如,如果n = 24,则可以通过以下方式将n表示为乘积 24 = 24 -> 24 = 24 24 = 12 * 2 -> 12 + 2 = 14 24 = 6 * 2 * 2 -> 6 + 2 + 2 = 10 24 = 6 * 4 -> 6 + 4 = 10 24 = …

5
Mozilla / 1.0 Mozilla / 2.0 Mozilla / 3.0 Mozilla / 4.0 Mozilla / 5.0
刚开始时有NCSA Mosaic,Mosaic称自己为NCSA_Mosaic/2.0 (Windows 3.1),Mosaic随图片一起显示图片,并带来很多欢乐。 15年后... 然后Google建立了Chrome,Chrome使用了Webkit,就像Safari一样,想要为Safari构建页面,因此假装为Safari。因此,Chrome使用了WebKit,并假装为Safari,WebKit假装为KHTML,KHTML假装为Gecko,所有浏览器都假装为Mozilla,Chrome调用了self Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13,并且用户代理字符串完全是一团糟,并且几乎毫无用处,每个人都假装成其他人,到处都是混乱。 在这里阅读全文... 给定用户代理字符串,返回其对应的浏览器。 您必须支持: 铬/铬* 歌剧 火狐浏览器 IE浏览器 边缘 苹果浏览器 您的代码仅需要满足所有这些测试用例。 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36 Chrome Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 …

30
我的设备出现故障...滥用其未定义的字符串行为!
救命!我的设备出现故障,每当我尝试重复一个String时,都会得到混乱的结果。与其重复N次相同的字符串,不如使用每个字符填充一个NxN的正方形,然后将正方形堆叠起来。 例如,给定String "Test"和number 2,而不是"TestTest",我得到: TT TT ee ee ss ss tt tt 一段时间后,我开始喜欢它。今天的任务是重现这种奇怪的行为。给定一个仅由可打印的ASCII组成的非空字符串,再加上一个正整数,输出故障设备返回的字符串。 所有标准规则均适用。 输入和输出可以通过任何合理的方式进行处理。 这是代码高尔夫球,因此每种语言中以字节为单位的最短代码获胜。 测试用例 输入值 输出量 ---------- “测试”,2 TT TT ee ee ss ss tt tt ---------- “ UuU”,3 单位 单位 单位 u u u 单位 单位 单位 ---------- “ A”,5 美国AAAA 美国AAAA 美国AAAA 美国AAAA 美国AAAA ---------- …
12 code-golf  string 

13
像青蛙一样跳!
给定非负整数数组,您的任务是仅保留其某些元素,如下所述。 假设数组为[1, 3, 2, 4, 11, 5, 2, 0, 13, 10, 1]。 首先获取数组的第一个元素n。保留第一个n元素并丢弃下一个元素(丢弃n+1th)。新数组为[1, 2, 4, 11, 5, 2, 0, 13, 10, 1]。 然后,您在删除的元素后面抓取元素,并执行完全相同的操作。重新应用该过程,我们得到[1, 2, 11, 5, 2, 0, 13, 10, 1] 重复此过程,直到到达数组范围之外/数组中没有剩余元素。我们停止,因为11它大于数组的长度。 现在,您应该输出结果。 输入/输出可以任何标准形式获取/提供。该数组永远不会为空,并且将仅包含非负整数。禁止所有标准漏洞。 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 测试用例 输入->输出 [1、2、3、4、5]-> [1、3、4] [6,1,0,5,6]-> [6,1,0,5,6] [1、2、3、2、4、11、5、2、0、13、10、1]-> [1、2、11、5、2、0、13、10、1] [2,2,2,2,2,2]-> [2,2] [1、2、3、1、2、3、1、2、3]-> [1、2] [3,1,2,4,0]-> [] * …

1
卓越的高复合数
较高的高复合数是一个整数,其中其除数的数量与该数字的幂的比率应尽可能大。用公式表示: 令d(n)是n的除数,包括数字本身。对于给定的整数n,如果存在一个数字e,使得每个整数k的d(n)/ n ^ e都大于或等于d(k)/ k ^ e,则n是一个高度合成的数。 有关更多信息,请参见Wikipedia上的“ 高级高级综合号码”,或OEIS上的A002201。 这是初始值: 2, 6, 12, 60, 120, 360, 2520, 5040, 55440, 720720, 1441440, 4324320, 21621600, 367567200, 6983776800, 13967553600, 321253732800, 2248776129600, 65214507758400, 195643523275200, 6064949221531200 您的挑战是获取索引n,并按此顺序输出第n个数字。 您可以使用0或1索引,并且可以制作一个仅在您的语言的数据类型的限制范围内正确的程序,只要它至少可以处理前10个值即可。 这是代码高尔夫。有标准漏洞。

13
解决秘密交换序列
这是警察和强盗的挑战,可以在此处找到警察线程。 这是强盗线程,您的工作是在警察线程上进行投稿,并尝试查找隐藏的序列。如果找到任何可以替换为原始代码的序列,以计算该序列为有效破解。请在发生裂缝时通知警察,以便他们更新答案。 计分 您的分数将是您成功破解的次数,越多越好。

3
生日快乐,我们来吃蛋糕吧!
这是我朋友的生日,因为他是一名程序员和ASCII艺术爱好者,所以我想我可以给他做一些ASCII蛋糕! 可悲的是,我一直忘了他的年龄,所以我想为我的ASCII烤箱准备一个程序,用指定数量的蜡烛烤蛋糕,所以如果我错了他,我就不必自己再做一次年龄。 ASCII烤箱仅具有有限的内存和存储容量,因此应使用尽可能少的字节。 你的任务: 编写一个程序,将一个生日蛋糕输出到控制台,其中蜡烛的数量与输入指定的数量相同。 蛋糕要求是: 它必须具有由水平-和垂直|线以及顶点组成的边界+。 至少5个字符(包括蛋糕边框|) 高至少5个字符(包括蛋糕边框-) 蛋糕边框和第一个烛台(不是火焰)之间必须有一个空白字符,除非该空间中有火焰,否则每边都必须有一个空白字符。火焰或蜡烛基不应与蛋糕边界重叠。 蛋糕的最大宽度为9个字符,因此每行最多5个蜡烛。 由于我们不希望蛋糕是二维的,因此蛋糕必须高2行才能使其具有一定的体积。添加另一个边框底部和连接顶点与上面摆着的,再次使用从上面的ASCII字符(-,|和+)。 蜡烛的要求是: 由底座|和火焰组成*,火焰堆叠在底座上。 除对角线外,蜡烛可能不会彼此直接相邻。 蜡烛从左到右放置,然后从上到下放置,每行最多5条蜡烛。 (注意:如果上一行有5支蜡烛,则下一行也不能有5支蜡烛,因为它们将相邻。) 补充说明: 蛋糕的宽度取决于第一行中蜡烛的数量,但宽度必须至少为5个字符,最大为9个字符。 蜡烛从最上一行开始填充,从左到右。如果一行已满,则下一行应从第一行下面的行开始。 输入: 您可以接受自己喜欢的(合理的)格式的数字。 对于这个挑战,即使我不承认这个年龄的人,您也可以假设该数字在0到2 31之间(不包括0)。 输出: 您可以返回一个字符串,也可以将结果蛋糕直接写入输出控制台。 规则: 禁止出现标准漏洞。 这是code-golf,因此以任何语言表示的最短代码(以字节为单位)将获胜。 例子: 输入: 8 +-----------+ | * * * * * | | |*|*|*| | | | | | | | | …

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.