Questions tagged «code-golf»

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

2
正则表达式:匹配平均主义系列
介绍 我在这里看不到很多正则表达式挑战,因此我想提供这种看似简单的方法,可以使用多种正则表达式来以多种方式完成。我希望它为正则表达式爱好者提供一些有趣的打高尔夫球时间。 挑战 面临的挑战是匹配我非常宽松地称为“平等主义者”系列的内容:一系列相等数量的不同字符。最好用示例来描述。 比赛: aaabbbccc xyz iillppddff ggggggoooooollllllffffff abc banana 不匹配: aabc xxxyyzzz iilllpppddff ggggggoooooollllllfff aaaaaabbbccc aaabbbc abbaa aabbbc 一概而论,要匹配形式的主题(为任意字符的列表来,在所有c1)n(c2)n(c3)n...(ck)nc1ckci != ci+1i, k > 1, and n > 0. 说明: 输入将不为空。 字符可以稍后在字符串中重复(例如“ banana”) k > 1,因此字符串中将始终至少包含2个不同的字符。 您可以假定仅将ASCII字符作为输入传递,并且没有字符将成为行终止符。 规则 (感谢马丁·恩德(Martin Ender)出色阐述了这一规则) 您的答案应该由一个正则表达式组成,没有任何其他代码(可选地,使您的解决方案起作用所需的正则表达式修饰符列表除外)。您不得使用允许您以托管语言调用代码的语言正则表达式功能(例如Perl的e修饰符)。 您可以使用在挑战之前存在的任何正则表达式风味,但请指定风味。 不要假设正则表达式是隐式锚定的,例如,如果您使用的是Python,请假设您的正则表达式用于re.search,而不用于re.match。您的正则表达式必须与整个字符串匹配有效的均等字符串,而对于无效字符串则不匹配。您可以根据需要使用任意数量的捕获组。 您可以假设输入将始终是两个或多个不包含任何行终止符的ASCII字符的字符串。 这是正则表达式高尔夫,因此以字节为单位的最短正则表达式获胜。如果您的语言需要分隔符(通常是/.../)来表示正则表达式,请不要计算分隔符本身。如果您的解决方案需要修饰符,请为每个修饰符添加一个字节。 标准 这是一门不错的老式高尔夫球,所以请不要考虑效率问题,而要尽量减小正则表达式。 请说明您使用了哪种正则表达式,并在可能的情况下提供一个链接,该链接显示了您在操作中的表情在线演示。

20
园林建筑-ASCII风格
我们房子外面有一个10x10米的正方形花园。我们想种草,做一个露台。我们已经决定了如何划分花园,但是我们还没有确定草量与露台之间的比例。 我们需要可视化帮助,而ASCII艺术显然是实现此目的的最佳方法。 挑战: 取一个整数,范围为[0,100](或可选的十进制[0,1]),代表应该露台花园的百分比。 一平方米的露台用破折号-或条形表示|。一平方米的草用井号表示#。 如果露台的数量小于或等于50%,则应在花园的左下角开始用条形遮盖,然后垂直然后水平填充。 如果梯田的数量超过50%,则我们希望以另一种方式(用虚线代替条形)进行装饰,并从左下角开始,然后水平填充,然后垂直填充。 例子: N = 25% ||######## ||######## ||######## ||######## ||######## |||####### |||####### |||####### |||####### |||####### N = 75% ########## ########## -----##### ---------- ---------- ---------- ---------- ---------- ---------- ---------- N = 47% ||||###### ||||###### ||||###### |||||##### |||||##### |||||##### |||||##### |||||##### |||||##### |||||##### N = 50% …

8
输出源,一次一位
编写一个非空程序或函数,当被调用时输出单个值1或0,并且被多次调用时,输出数字将生成程序源代码的二进制表示形式(在编译代码的同一代码页中) /解释)。 例如,如果您的源代码是abc(ASCII),则输出将是: 1st call: 0 // ASCII letter 'a' 2nd call: 1 3rd call: 1 4th call: 0 5th call: 0 6th call: 0 7th call: 0 8th call: 1 9th call: 0 // ASCII letter 'b' 10th call: 1 11th call: 1 12th call: 0 13th call: 0 …

9
我有几章?
圣经是有史以来最有影响力的书之一,通常被称为有史以来最畅销的书。它是由大约 40位不同的作者在数百年的时间里编写的,然后才被编译成当前的形式。但是,《圣经》有趣的是它的分割方式。它分为2个不同的遗嘱,分为66个较小的书,每本书分成较小的章节,每个章节都分为单独的经文。 我认为尝试以尽可能短的代码编码每本书中的章节数将是一个有趣的挑战。因此,对于当今的挑战,您必须编写一个程序或函数,以其中一本书作为输入,并根据The King James Version输出该书中的章节数。 您可以采用任何合理格式的IO,例如读/写STDIN / STDOUT或文件,函数自变量/返回值,提示用户等。输入内容将始终是《圣经》的66本书之一,并且仅是小写字母。这意味着,如果给您任何其他输入,则允许未定义的行为。由于只有66可能的输入和输出,他们在这里都提供了,根据维基百科上关于圣经的章节中的国王詹姆斯版本页: genesis 50 exodus 40 leviticus 27 numbers 36 deuteronomy 34 joshua 24 judges 21 ruth 4 1 samuel 31 2 samuel 24 1 kings 22 2 kings 25 1 chronicles 29 2 chronicles 36 ezra 10 nehemiah 13 esther 10 job …

29
重复第N个元素
我们已经有一段时间没有字符串问题了(准确地说是5天),所以让我们继续。 给定一个字符串s和一个正整数n,取的每一个n元素s,重复n一次,然后放回s。 例如,如果n = 3和s = "Hello, World!",则第三个字符为Hl r!。然后,您重复每个字符n时间以产生HHHlll rrr!!!。然后,您将原始字母替换为重复的字母,以生成最终的HHHellllo, Worrrld!!! 您将使用您的语言以最短的代码完成此任务! 规则 这是一个代码高尔夫球,因此以字节为单位的最短代码胜出 n保证小于的长度s并大于0 的第一个字符s是其中n第字符是从采取,并且总是反复n次 s就只包括可打印的ASCII的(代码点0x20 (space)到0x7E (~)) 测试用例 s, n => output "Hello, World!", 3 => "HHHellllo, Worrrld!!!" "Code golf", 1 => "Code golf" "abcdefghijklm", 10 => "aaaaaaaaaabcdefghijkkkkkkkkkklm" "tesTing", 6 => "ttttttesTingggggg" "very very very long string for …
18 code-golf  string 

20
在干草堆中找到针(强盗)
这是警察和强盗挑战的一部分。去这里参加警察的活动。 强盗的挑战 可以通过从Haystack程序中删除字符的任何子集来破解警察的答案,以便输出Needle而不是Haystack(尽管仍然是使用相同语言的有效提交)。只要您受上述限制的约束是有效的,就不必找到与警察完全相同的解决方案。 如果您可以管理此问题,请在解决方案中发布答案,并链接到警察的答案,然后对警察的答案发表评论,并链接回您的答案。 破解最多警察答案的强盗获胜。领带被破解的警察答案的大小之和打断(赞成强盗破解更长的提交内容)。 每个警察的答案只能破解一次,当然,您也不能破解自己的答案。如果警察的答案在被破解之前或之后被证明是无效的,则不计入强盗的分数。 例子 这是几个使用不同语言的简单示例: Ruby Haystack: puts 1>0?"Haystack":"Needle" Delete: XXXXXXXXXXXXXXX Needle: puts "Needle" Python 2 Haystack: print "kcatsyaHeldeeN"[-7::-1] Delete: XXXXXXXX XX Needle: print "eldeeN"[::-1] 请注意,已删除字符的子集不必是连续的。

30
我是高尔夫球爱好者吗?
定义和规则 甲golfy阵列是一个整数数组,其中每个元素是高于或等于所有先前元素的算术平均值。您的任务是确定作为输入给定的正整数数组是否适合。 您无需处理空白列表。 默认存在漏洞。 适用标准输入和输出方法。 您可以选择任何两个不同的非空值。它们必须是一致的,并且必须遵守所有其他决策问题规则。这是代码高尔夫球,每种语言中最短的代码胜出! 测试案例与范例 例如以下数组: [1, 4, 3, 8, 6] 是一个高尔夫球状数组,因为每个项都高于其前面的算术平均值。让我们逐步解决: 数字->前置元素->平均->是否遵循规则? 1-> []-> 0.0-> 1≥0.0(真) 4-> [1]-> 1.0-> 4≥1.0(真) 3-> [1,4]-> 2.5-> 3≥2.5(真) 8-> [1,4,3]-> 2.(6)-> 8≥2.(6)(真) 6-> [1,4,3,8]-> 4.0-> 6≥4.0(真) 所有元素都符合条件,因此这是一个高尔夫球阵列。请注意,就本挑战而言,我们将假定一个空列表([])的平均值为0。 更多测试用例: 输入->输出 [3]->正确 [2,12]->是 [1,4,3,8,6]->是 [1、2、3、4、5]->是 [6,6,6,6,6]->是 [3,2]->错误 [4、5、6、4]->错误 [4,2,1,5,7]->错误 [45,45,46,43]->错误 [32,9,15,19,10]->错误 请注意,这是拼图1从CodeGolf-黑客马拉松,也张贴在无政府状态高尔夫(即一个被打破) - …

7
最长超立方体路径
挑战 系统会为您提供两个相同长度的不同位串。(例如000和111。)您的目标是找到一条到另一条的路径,使得: 在每一步,你只改变一位(你可以从去000到任何的001,010,100)。 您不能访问同一位字符串两次。 在这些约束下,路径应尽可能长。 例如,从000到111,我们可以走这条路 000, 001, 011, 010, 110, 100, 101, 111 它访问长度为3的所有8位字符串,因此它必须尽可能长。 规则 有标准漏洞。 您可以将输入作为两个零和一的字符串,或者作为两个零和一的数组,或者作为两个布尔值的数组。 您可能无法将输入取为带有正确二进制表示形式的两个整数(写000和111as 0和as 7无效)。 如果需要,可以将位串的长度作为输入。 您的程序可以通过以下方式输出路径:打印一次访问的位串,或返回访问的位串的数组(每个都与输入格式相同)。 您的输出应包括路径的起点和终点(即您的输入)。 这是代码高尔夫,以字节为单位的最短代码获胜。 例子 0 1 -> 0, 1 10 01 -> 10, 00, 01 or 10, 11, 01 000 111 -> any of the following: 000, 100, …

9
投票率答复
这个问题是受以下事实启发的:我喜欢看到投票和答案均等的问题。 因此,这是一个针对所有人的简单stack-exchange-api挑战: 挑战: 给定codegolf.stackexchange问题ID,输出问题的票数与答案数之间的比率(例如votes/answers)。 细节: 您可以访问Internet,但您只能访问Internet stackexchange.com及其各个子域。您不能使用URL缩短器。 您可以输入任何标准格式的输出。 您必须将比率输出为以10为底的十进制数字,并在小数点后至少4个{准确的}数字(零可能会被截断)。 如果未回答问题,则您的程序可能会产生不确定的行为。 您应该score将问题的用作投票数,请参见此处。 这是代码高尔夫球,每种语言的最小字节数对该语言获胜,总体上最小字节数获胜。 这是一个示例程序Python 3 + requests: import requests import json id = input("id> ") url = "https://api.stackexchange.com/2.2/questions/" + id + "?site=codegolf" content = requests.get(url).text question = json.loads(content)["items"][0] print(float(question["score"]) / question["answer_count"])

18
逆向数学循环
灵感来自这 在链接的挑战中,要求我们对输入数组的原始元素和反向元素应用加法。在这一挑战中,我们将通过引入其他基本的数学运算来使其稍微困难一些。 给定整数数组,请循环遍历+, *, -, //, %, ^,其中//是整数除法并^是指数,同时将其应用于数组的倒数。或者,换句话说,将上述函数之一应用于数组的每个元素,第二个自变量是数组的反函数,并且应用的函数会循环遍历上面的列表。这可能仍然令人困惑,因此让我们来看一个例子。 Input: [1, 2, 3, 4, 5, 6, 7, 8, 9] Reverse: [9, 8, 7, 6, 5, 4, 3, 2, 1] [ 1, 2, 3, 4, 5, 6, 7, 8, 9] Operand: + * - / % ^ + * - [ 9, …

19
在所有n列中具有1到L(n)的矩阵
挑战: 取一个列表,L包含正整数作为输入: 3 5 2 1 6 并创建一个矩阵,其中第n列包含矢量1:L(n),其中较短的行用零填充。 测试用例: 3 5 2 1 6 ----------------- 1 1 1 1 1 2 2 2 0 2 3 3 0 0 3 0 4 0 0 4 0 5 0 0 5 0 0 0 0 6 1 - 1 1 2 …
18 code-golf  matrix 

19
MaxMin除数对(DMDP)的差异
让我们谈谈除数... 撇开完美的平方(片刻),所有正整数都可以表示为其2除数的乘积。快速示例126:这是的所有除数126 如您所见,所有除数可以配对。这就是我们所说的除数对: [1, 126], [2, 63], [3, 42], [6, 21], [7, 18], [9, 14] 对于此挑战,我们只需要此列表的最后一对(即图片的中心对) [9,14]:。我们将其称为MaxMin Divisor Pair。 的最大最小除数对的差分 (DMDP)是一对,其是两个元件的差[9,14]=5 为再举一个例子544。除数为: [1,2,4,8,16,17,32,34,68,136,272,544] 和DMDP(544)= 15 因为32-17=15 怎么样完全平方数?所有完美正方形的DMDP = 0 让我们64以除数 为例 {1,2,4,8,16,32,64} 正如你在这种情况下,看到了最大最小除数对是[8,8]具有DMDP=0 我们几乎完成.. 挑战 给定一个整数n>0,输出小于或等于多少个整数 10000,DMDP小于 n 测试用例 输入->输出 1->100 (those are all the perfect squares) 5->492 13->1201 369->6175 …

28
范围内的矩阵
挑战 给定一个整数n>0输出,n+1 X n+1矩阵包含所有从1to的整数,2n如下面的测试用例所示 测试用例 n=1 1 2 2 2 n=2 1 2 4 2 3 4 4 4 4 n=5 1 2 3 4 5 10 2 3 4 5 6 10 3 4 5 6 7 10 4 5 6 7 8 10 5 6 7 8 9 …

12
原始编号(二)
这个挑战是基本相同的这一个只有一个区别:它现在允许在字符串中的任何洗牌字母。 情境 约翰有一个重要的数字,他不希望其他人看到它。 他决定使用以下步骤对数字进行加密: 他的号码始终是一个不递减的序列(即"1123") 他将每个数字都转换成英语单词。(即"123" -> "ONETWOTHREE") 然后,随机重新排列字母。(即"ONETWOTHREE" -> "EEWOOHRNTET") 约翰觉得这样做很安全。实际上,这样的加密很容易解密:( 任务 给定加密的字符串s,您的任务是解密它并返回原始数字。 规则 这是代码高尔夫,所以最短答案以字节为单位 您可以假设输入字符串始终有效 输入字符串仅包含大写字母 原始编号始终按升序排列 您可以以字符串或整数格式返回数字 字母将仅在一个单词之间而不是在整个字符串之间随机播放。字母可以在字符串中的任何位置随机播放。 这些数字只能是1到9(含)之间的数字(ONE至NINE) 可能的未加密字符串 在将字符串从数字转换为字符串之后,下面是这些字符串的列表: 1 -> ONE 2 -> TWO 3 -> THREE 4 -> FOUR 5 -> FIVE 6 -> SIX 7 -> SEVEN 8 -> EIGHT 9 -> …

16
有点紧张․․․
输入: 我们接受两个输入: b具有两个不同值的输入:Left和Right。† 和一个正整数n。 输出: 基于向左/向右输入,我们输出范围内的以下两个序列之一1-n(在显示前125个项目的序列以下): Left: 1, 6, 7, 56, 57, 62, 63, 960, 961, 966, 967, 1016, 1017, 1022, 1023, 31744, 31745, 31750, 31751, 31800, 31801, 31806, 31807, 32704, 32705, 32710, 32711, 32760, 32761, 32766, 32767, 2064384, 2064385, 2064390, 2064391, 2064440, 2064441, 2064446, 2064447, 2065344, 2065345, 2065350, 2065351, …

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.