Questions tagged «code-golf»

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

24
IHIH金字塔
我发现字母“ H”和“ I”非常相似很着迷。“ H”是由两个垂直笔划包围的水平笔划;“ I”是一个垂直笔画,周围有两个水平笔画(取决于您的字体)。我敢打赌,这可能是嵌套的...你知道让我想起什么吗?分形!!! 让我们定义“ IHIH”金字塔如下:第一个迭代是字母“ I”的ASCII表示形式: --- | --- 下一次迭代的任一侧都有一个垂直笔触。 | | |---| | | | |---| | | 如果将中间的“ I”视为单个水平笔划,则第二个迭代基本上就是“ H”。第三次迭代在顶部和底部添加了水平笔划 ------- | | |---| | | | |---| | | ------- 同样,如果将中间的“ H”视为单个垂直笔划,则此迭代基本上就是“ I”。这种模式继续,在每次迭代中在“ H”和“ I”之间交替。供参考,这里是前6个迭代: 1: --- | --- 2: | | |---| | | …

19
在空的Go板上放置一块石头
另请参阅:在Go板上移动。 任务 Go是一种棋盘游戏,两名玩家(黑白)将石头放在19×19棋盘的网格线相交处。黑色先行-例如,在D4上: 在此挑战中,您必须像D4输入棋盘一样进入棋盘坐标,并输出棋盘的ASCII表示,并在给定点进行第一步移动。 请注意,没有列I。从历史上看,这是为了减少与J和L的混淆。 此输出包含19行,每行包含19个字符。标有石头的点已标记O。在板空点被示出为.,除了九个星点(在D4,D10,D16,K4,K10,K16,Q4,Q10,和Q16),其被标记*。 例如,F5作为输入,您答案的输出必须为: ................... ................... ................... ...*.....*.....*... ................... ................... ................... ................... ................... ...*.....*.....*... ................... ................... ................... ................... .....O............. ...*.....*.....*... ................... ................... ................... 而鉴于Q16作为输入,你的输出必须是: ................... ................... ................... ...*.....*.....O... ................... ................... ................... ................... ................... ...*.....*.....*... ................... ................... ................... ................... ................... ...*.....*.....*... ................... ................... ................... 规则 您可以编写将坐标作为参数的函数,或者编写从命令行或从中读取坐标的程序STDIN。 您可以选择以小写或大写形式接受输入,但是您的答案不需要同时处理这两种情况。 输入始终是单个字符串,例如a1或T19,决不能是字符串+数字或两个字符串。 …

30
复制和开关盒
目标是,以字符串作为输入,复制每个拉丁字母并“切换”其大小写(即大写变为小写,反之亦然)。 输入和输出示例: Input Output bad bBaAdD Nice NniIcCeE T e S t Tt eE Ss tT s E t sS Ee tT 1!1!1st! 1!1!1sStT! n00b nN00bB (e.g.) (eE.gG.) H3l|@! Hh3lL|@! 输入由可打印的ASCII符号组成。 您不应该重复非拉丁字母,数字,特殊字符。
34 code-golf  string 

14
转换为camelCase
挑战 前几天,我在阅读Google的Java样式指南,偶然发现了他们的算法,可以将任意字符串转换为camelCase表示法。在此挑战中,您必须实现此算法,因为当您将超级竞争的Java提交编写为代码高尔夫球挑战时,您不想在头脑中做所有这些事情。 注意:我对算法做了一些小的调整。您需要使用以下指定的一种。 算法 您从任意输入字符串开始,并对它应用以下操作: 删除所有撇号 `' 通过在处拆分将结果拆分为单词 不是字母数字和数字的字符 [^a-zA-Z0-9] 大写字母,两侧均用小写字母包围。abcDefGhI jk例如产量abc Def Ghi jk 每个单词都小写。 除第一个单词外,每个单词的第一个字符均大写。 将所有单词重新组合在一起。 附加条款 输入将仅包含可打印的ASCII。 如果数字是单词中的第一个字母,请保持原样,并且不要使该单词中的其他内容成大写字母。 输入将始终至少包含一个字符。 规则 允许功能或完整程序。 输入/输出的默认规则。 有标准漏洞。 这是代码高尔夫球,因此最低字节数获胜。Tiebreaker是较早提交的内容。 测试用例 “编程难题和代码高尔夫”->“ programmingPuzzlesCodeGolf” “ XML HTTP请求”->“ xmlHttpRequest” “在iOS上支持IPv6吗?” ->“ supportsIpv6OnIos” “某物,载脂蛋白的残基和标点符号”->“ somethingW1thApostrophesAndPuncTuation” “没什么特别的”->“没什么特别的” “ 5pecial ca5e”->“ 5pecialCa5e” “ 1337”->“ 1337” “ 1337-spEAk”->“ 1337Speak” …
34 code-golf  string 

21
算术导数
函数的导数是数学,工程学,物理学,生物学,化学以及许多其他科学的基石。今天,我们将要计算仅与切线相关的东西:算术导数。 定义 此处,算术导数a(n)或n'(A003415)由与函数的导数相似的多个属性定义。 a(0) = a(1) = 0, a(p) = 1,哪里p有素数? a(mn) = m*a(n) + n*a(m)。 第三条规则是基于功能分化的产品规则:对于函数f(x)和g(x),(fg)' = f'g + fg'。因此,用数字(ab)' = a'b + ab'。 还要注意,由于算术导数可以通过此简单关系扩展为负数a(-n) = -a(n),因此输入可能为负。 规则 编写一个程序或函数,给定任何整数n,该程序或函数将返回的算术导数n。 输入为,以避免整数大小和数字过大而无法考虑合理时间的问题。理论上,您的算法仍应能够计算该范围以外数字的算术导数。-230 < n < 230 允许内置符号数学,素因数分解和微分。 例子 > a(1) 0 > a(7) 1 > a(14) # a(7)*2 + a(2)*7 = …

13
1-平均你的平均成本
阿1向上喹是一个程序,它是非常类似于一个喹。一个主要的区别是,当连接n个程序副本时,结果不会打印自身一次,而是将原始程序打印n + 1次。 例 如果您的程序是Abc123: Abc123 -> Abc123Abc123 Abc123Abc123 -> Abc123Abc123Abc123 Abc123Abc123Abc123 -> Abc123Abc123Abc123Abc123 挑战 您面临的挑战是创建任何语言中最短的有效1-up quine。通常采用奎因规则,因此您可能不会: 提交空程序。 直接或间接读取1源代码。 使用内置的奎因。 这是代码高尔夫球,因此以字节为单位的最短代码获胜。 1这不包括在程序中使用硬编码的字符串或代码块。

18
缺少哪些多米诺骨牌?
一个标准的骨牌组有28件独特: 给定28个或更少的唯一多米诺骨牌的列表,输出完整的列表所需的列表。 输入和输出的多米诺骨牌是由两个数字指定-点数对多米诺的每一侧上的数量,例如00,34,40,66。 数字可以以任何顺序给出,因此34与43 输入示例 00 01 02 03 04 05 06 11 12 13 14 15 16 22 23 24 25 26 33 34 35 36 44 45 46 55 56 66 00 10 11 20 21 22 30 31 32 33 40 41 42 43 44 50 51 …

21
输出所有字符串
给定一组字母,输出由这些字母组成的所有字符串。(这是该集合的Kleene星。)例如,对于{'a','b'},字符串为: '', 'a', 'b', 'aa', 'ab', 'ba', 'bb', 'aaa', 'aab', ... 输入:包含不同字母的非空集合a..z。这些可以是字符或单字符字符串。 输出:这些字母中的所有字符串,以任何顺序排列,没有重复。您可以将字符列表用作字符串。 这是一个无限列表,因此您可以通过以下方式将其输出: 永远运行越来越多的字符串。这些字符串可以用任何用平面分隔的格式编写,这意味着它们可以告诉每个字符串在何处结束,但是这些字符串不会细分为多个组。 以数字n作为输入并n以任何单位分隔格式输出第一个字符串 从生成器对象依次产生每个字符串 产生无限物体 确保您的方法最终生成输出中的每个字符串,因为有可能从集合中生成无限多个字符串,而从不获取某些字符串。 您可能不会通过 产生n给定的th字符串n 提供一个成员资格oracle,该oracle决定给定字符串是否属于集合 允许使用内置函数,但是我要求选民注意那些比大多数依赖内置函数本身更能实现操作的答案。 显示代码段 var QUESTION_ID=74273,OVERRIDE_USER=20260;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/74273/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var …
34 code-golf  string 

30
展平阵列!
在这个挑战中,您的任务是创建一个程序,该程序接受一个嵌套数组并返回一维扁平化数组。例如[10,20,[30,[40]],50]应该输出[10,20,30,40,50]。 输入项 输入将是一个嵌套数组(例如[10,20,[[[10]]]])。它仅包含整数(负数和正数),字符串和数组。您可以将输入作为函数参数STDIN或任何适合您的语言的参数。您可以假设输入数组将没有空数组。 输出量 输出将是一个扁平的一维数组,具有与嵌套数组中相同类型的相同元素,并且顺序相同。 测试用例 [10,20,30] -> [10,20,30] [[10]] -> [10] [["Hi"],[[10]]] -> ["Hi",10] [[[20],["Hi"],"Hi",20]] -> [20,"Hi","Hi",20] [[["[]"],"[]"]] -> ["[]","[]"] 随时要求使用注释进行任何澄清。这是代码高尔夫球,因此以字节为单位的最短代码胜出! 注意: 如果您的语言中包含内置语言,则不得使用它。 编辑 另请提供指向可以执行您的代码的网站的链接。

13
过去的素恋
考虑一个素数p,写在底座10上的存储器的p被定义为不同的素数的比严格小于的数量p是包含在的子串p。 挑战 给定一个非负整数n作为输入,请找到最小的素数p,以使p具有内存n。也就是说,找到具有恰好n个不同的严格较小质数作为子串的最小质数。 输入项 输入可以通过任何标准格式进行。您必须支持最大为n的输入,以使输出不会溢出。供参考,4294967291是32位中最大的素数。 输出量 输出可以写入STDOUT或从函数返回。 例子 数字2的内存为0,因为它不包含作为子字符串的严格较小的质数。 数字113是具有内存3的最小素数。数字3、13和11是唯一的素数子串,且小于113的素数中没有正好包含3个素数作为子串。 从n = 0 开始的序列的前10个项是 2, 13, 23, 113, 137, 1237, 1733, 1373, 12373, 11317 注意 这是OEIS中的A079397。 排行榜 var QUESTION_ID=55406,OVERRIDE_USER=20469;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var …

24
按相乘排序
您应该编写一个程序或函数,给定正整数列表,将每个元素与可能的最小正整数相乘,以创建严格增加的列表。 例如,如果输入是 5 4 12 1 3 乘法将是 5*1=5 4*2=8 12*1=12 1*13=13 3*5=15 输出将是递增列表 5 8 12 13 15 输入项 包含至少1个元素的正整数列表 输出量 正整数列表 例子 9 => 9 1 2 => 1 2 2 1 => 2 3 7 3 => 7 9 1 1 1 1 => 1 2 3 …

5
创建适合XKCD类型的接口
colors.rgb(“ blue”)产生“#0000FF”。colors.rgb(“黄蓝色”)产生NaN。colors.sort()产生“彩虹” 使用图像中列出的规则及其标题文本(在此处引用),创建一个程序,该程序接受所有给定的输入并显示适当的输出。 输入可以使用标准输入或最接近的等效输入。应该在上面[n]>键入类似的行,并且n每个命令加1。它应该从1开始。 结果应使用标准输出或最接近的等效值显示。=>输出的每一行上都应该有一个。 所有13个条件,加上标题中的3个(引号)都必须有效。 这是代码高尔夫,所以最短的答案会获胜。
34 code-golf 

28
选择强力球号码!
强力球是最近引起美国关注的彩票,因为当前的累积奖金(截至2016年1月11日)是历史上最大的乐透奖金,约为15亿美元。 强力球运动员从69个编号的白球中选择5个不同的数字,并从26个编号的红球中选择1个“强力球”数字。如果他们的五个白球选择与按任何顺序绘制的内容相匹配,并且选择了正确的“强力球”号码,他们将赢得大奖。 因此,赢得大奖的机会是1 (69 choose 5)*(26 choose 1)或((69*68*67*66*65)/(5*4*3*2*1))*26,即292,201,338中的1 没有人在2016年1月9日的最新抽奖中赢得大奖,但是也许有人会在美国东部时间2016年1月13日晚上10:59赢得下一张抽奖。 挑战 编写一个模拟强力球绘图的程序或函数,不输入任何内容,而是输出1至69之间的5个不同的随机数,然后输出1至26之间的1个随机的“ Powerball”数字(可以重复5个之一)初始数字)。 “强力球”数字应始终是输出中的最后一个数字,但其他前5个数字的顺序无关紧要。 这6个数字应以十进制输出,以空格分隔或换行符分隔,并带有一个可选的尾随换行符。输出中不允许使用逗号,方括号和其他字符。 因此,这些将是有效的输出(使用最后一张图中的数字): 32 16 19 57 34 13 32 16 19 57 34 13 所有292201338可能的结果都应该具有统一的可能性。您可以使用内置的伪随机数生成器,并假定它们符合此标准。 这是可在Python 2或3中使用的简单参考实现: import random print(' '.join(map(str, random.sample(range(1,70), 5) + [random.randint(1, 26)]))) 以字节为单位的最短代码获胜。 请注意,我与强力球没有任何隶属关系,也不是真的建议您参加比赛。但是,如果您从这里的一个程序生成的数字中赢得任何收益,那么我相信我们很乐意听到这一消息。:D

30
Yahtzee小直检测
在Yahtzee游戏中,玩家掷出五个六面骰子,并尝试制造某些手以得分。这样的一手牌是小顺子:四个连续的数字,不一定是顺序的。三种可能的小直道是1, 2, 3, 4,2, 3, 4, 5和3, 4, 5, 6。 例如,[3, 5, 6, 1, 4]包含小笔直[3, 4, 5, 6]。 输入项 五个整数的未排序列表,每个整数在1到6之间(包括1和6),表示Yahtzee手。 输出量 如果手牌有小笔直则为真值,否则为假值。 测试用例 真相: [[1, 2, 3, 3, 4], [1, 2, 3, 4, 5], [3, 5, 6, 1, 4], [1, 5, 3, 4, 6], [4, 5, 2, 3, 5], [1, …

10
从ASCII的位模式生成分形
总览 编写一个程序,在给出编码分形的位模式后,再打印出简单的分形模式,再加上分代的每代比例因子和世代数。 说明 这是Sierpinski地毯的ASCII表示形式: 第0代: # 第1代: # # # # # # # # 第2代: # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # …

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.