Questions tagged «code-golf»

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

30
画一个星号三角形
受编程101任务的启发,这是一个希望不太容易或重复的任务(有点难以搜索这样的东西)。 输入: 一个正整数n >= 1。 输出: n 星号行,其中每个新行都比前一行多一个星号,并且在第一行中以一个星号开头。 通用规则: 这是代码高尔夫球,因此最短的答案以字节为单位。 由于该课程是用C ++讲授的,所以我很想看到C ++的解决方案。 测试案例(n = 5): * ** *** **** *****

8
做蛇蛇之吻
一条可弯曲的蛇看起来像这样: <||=|||:)~ 垂直条(每个单独序列|)是一个弹性的蛇,被称为一个有弹性的部分,是单独地可伸展到它的宽度的两倍,并绘制具有交替斜杠(/,\)一次延长。 上面特定的蛇有两个这样的伸展部分,给它四个可能的姿势: <||=|||:)~ </\/\=|||:)~ <||=/\/\/\:)~ </\/\=/\/\/\:)~ 此正则表达式定义了伸展最少的伸展蛇的一般形式: <(\|+=)*\|+:\)~ 可以用以下文字表示: <,随后通过任何数目的序列|的连接与=迹象,随后:)~。 So <|:)~and <||:)~and <|=|:)~and <|=|=||=|||||=||:)~是可弯曲的蛇,而<=:)~and <=|:)~and <||=:)~and <|==||:)~不是。 易弯曲的蛇也可以朝左而不是朝右,例如~(:|||=||>。形式是一样的,只是被镜像。 挑战 编写一个程序,该程序使用两条彼此面对的伸缩性蛇的单行字符串,中间留有一定数量的空格。两条蛇都将处于其伸展最少的姿势(所有竖线,无斜线)。字符串将从右向蛇的尾部开始,然后从左向蛇的尾部结束(您可以选择假设还有尾随换行符)。 例如,这是一条可能的输入,在蛇之间有五个空格: <|=||:)~.....~(:||||> .为了清楚起见,我使用句点()而不是实际的空格字符。 蛇之间的零间距也是有效的输入: <|=||:)~~(:||||> 我们说蛇在舌头这样触摸时在亲吻。 您的程序需要扩展两条蛇的可拉伸部分的某种组合,以使蛇之间的间隔最少(不重叠),即蛇尽可能接近接吻。 两条蛇的尾巴都是固定的,但它们的头部和身体可以移动-根据伸展的部分,向右移动,向右移动,向左移动。 程序的输出是单行字符串(加上可选的尾随换行符),该字符串显示蛇尽可能接近接吻的位置,并为延伸的可伸展部分绘制交替的斜线代替竖线。 例如,<|=||:)~.....~(:||||>(从上面)的输出为: </\=||:)~~(:/\/\/\/\> 这是唯一的解决方案,因为在伸展部分的任何其他组合下,蛇会重叠或离接吻更远。 如果有多种解决方案,则输出可能是其中任何一种。 例如,如果输入是 <|=||:)~.....~(:|||=|> 输出可能是 <|=/\/\:)~~(:/\/\/\=|> 要么 </\=||:)~~(:/\/\/\=/\> 请记住,并非总是能够使蛇亲吻,但是您仍然需要使它们尽可能靠近。 例如,如果输入是 <||=||||:)~...~(:||> 输出可能是 </\/\=||||:)~.~(:||> 要么 <||=||||:)~.~(:/\/\> 如果蛇已经在接吻,则输出将与输入相同。例如 …

30
打印N平方
编写一个从stdin或函数参数中获取非负整数N的程序或函数。它必须打印或返回一个空心的ASCII艺术方块的字符串,该字符串的侧面各有N个数字N的副本。 特别: 如果N为0,则不使用N的副本,因此应该没有输出(或只有一个尾随的换行符)。 如果N为1,则输出为: 1 如果N为2: 22 22 如果N为3: 333 3 3 333 如果N为4: 4444 4 4 4 4 4444 如果N为5: 55555 5 5 5 5 5 5 55555 模式将持续6到9。 如果N为10,则输出为: 10101010101010101010 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10101010101010101010 请注意,这实际上不是正方形。它高10行,但宽20列,因为10它长两个字符。这是有意的。关键是“正方形”的每一侧都包含N的N个副本。因此,从9技术上讲,所有其他输入都是ASCII矩形。 …

30
亚历克斯风格的加法
受亚历克斯(Alex)光荣的启发,学习R成为一个很好的例子,我们将谦虚地重建亚历克斯(Alex)的“一个真正的R程序”-但要有所作为。 Alex风格的加法就是这样的-它有90%的机会简单地返回给定的两个数字的和,还有10%的机会递归Alex加上第一个数字和第二个数字+1。这意味着,潜在地,则相加可能相差1或更多。 挑战 编写一个完整的程序或函数,该程序或函数需要两个整数并按定义将它们相加。您可以假设如果您的语言没有尾递归,则程序不会堆栈溢出。(请注意,只要概率相同,就不必递归实现它。) 参考实现(Groovy) int alexAdd(int a, int b) { int i = new Random().nextInt(11); if(i == 1) { return alexAdd(a,b+1); } else { return a + b; } } 在线尝试这个小提琴。 排行榜 var QUESTION_ID=66522,OVERRIDE_USER=8478;function answersUrl(e){return"https://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"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 …

10
小钱德勒很伤心。画他的云,使他振作起来
小钱德勒很伤心。画他的云使他振作起来。 注意:画云实际上不会使他振作起来。 圆可以定义为三元组(x,y,r),其中x是圆在笛卡尔平面上的x位置,是圆在笛卡尔平面y上的y位置以及圆r的半径。x并y可能是负面的。r永远是积极的。输入是以空格分隔的三元组形式的圆的列表。例如: 3,1,1 3,2,1.5 1,2,0.7 0.9,1.2,1.2 1,0,0.8 的3,1,1意思是“在与中心点的圆3,1与1个半径。3,2,1.5是指”在与中心点的圆3,2用1.5半径。 如果我们在图形上绘制输入的所有这些圆,则看起来像这样(我仅出于清晰起见添加了网格线和标签;它们不是必需的): 注意所有的圆是如何凝聚的。也就是说,它们全部重叠在一起,从而形成一个大的组,而没有其他的小圈子。输入保证是内聚的。 假设现在绘制一条绕这些圆形成的“边界”行进的线,而没有其他任何线。就像绘制所有圆组成的轮廓的边界一样。生成的云看起来像这样: 因此,仅通过在输入中绘制形成边界的圆弧来形成单一形状即可形成此云。换句话说,仅通过绘制不在另一个圆内的圆弧来形成云。您的程序将以上述形式接受输入,并输出显示结果云的图像。云的整体形状必须正确,但是比例,颜色,线条粗细以及在顶点处的外观取决于您。请注意,云必须是可见的,因此您不能拉出类似“此程序在白色背景上绘制白色云”,“此程序以无限小的比例绘制云”,“此程序以0绘制云”之类的内容。线宽”等。还请注意,边框的颜色必须与填充或背景的颜色不同。 另一个例子。输入: 1,4,2 5,2,1 3,1,1 3.5,2,1.2 3,3,0.7 1,2,0.7 输出: 如果云中存在“洞”,则也应绘制该洞。输入: 0,5,4 3,4,4 4,3,4 5,0,4 4,-3,4 3,-4,4 0,-5,4 -3,-4,4 -4,-3,4 -5,0,4 -4,3,4 -3,4,4 输出: 这是一条重要规则:您的程序必须仅绘制形成边框的线。这意味着您不能简单地完全绘制圆,然后用白色填充将圆绘制得稍小一些,因为该方法仍会绘制不形成边界的线,之后只会将其覆盖。该规则的目的是防止“绘制圆,然后用白色填充再次绘制圆”的实现或类似的方法。预计答案将在绘制之前实际计算出绘制对象的位置。 这是代码高尔夫球,因此最短的字符数获胜。

30
您所有的基地都属于我们(受限制)
不需要输入,输出必须读为“ All your base are belong to us”。 限制条件 没有外部资源。 加上以下至少两个: 您在代码中的任何情况下都不能使用“ a”,“ b”,“ t”,“ u”或“ y”(如果可以的话,可以在高尔夫得分上加-10) 在您的代码中,无论如何都不能使用“ l”,“ o”,“ s”,“ e”或“ r”(如果可以的话,可以在高尔夫球得分上加-20) 在您的代码中,无论如何都不能使用“ n”,“ g”,“ 0”,“ 1”或“ 2”(如果可以的话,对高尔夫成绩加分-30) 因此,例如,如果您设法用40个字符完成代码并使用规则1和2,则高尔夫球得分为40-10-20 = 10个字符。 最小码的高尔夫球得分获胜...祝您好运!

30
编写最短的自我识别程序(quine变体)
编写一个程序,如果输入与程序的源代码匹配,则生成一个“ true”输出;如果输入与程序的源代码不匹配,则生成一个“ false”输出。 可以将这个问题描述为与quines有关,因为程序必须能够以某种方式在该过程中计算其自己的源代码。 这是代码高尔夫球:适用标准规则。您的程序不得访问任何特殊文件,例如其自身源代码的文件。 编辑:如果您选择,则可以将True / False替换为True / False或1/0。 例 如果您的程序的源代码是bhiofvewoibh46948732));:/)4,则您的程序必须执行以下操作: 输入(标准输入) bhiofvewoibh46948732));:/)4 输出(标准输出) true 输入项 (Anything other than your source code) 输出量 false

13
谁是美国总统?
挑战 编写一个程序,将1789年4月30日至2019年8月21日的一天作为输入,并返回当日为美国总统的输出。 笔记 有关美国总统的名单,姓名格式和任期,请参见以下内容: April 30, 1789 - March 4, 1797 George Washington March 4, 1797 - March 4, 1801 John Adams March 4, 1801 - March 4, 1809 Thomas Jefferson March 4, 1809 - March 4, 1817 James Madison March 4, 1817 - March 4, 1825 James Monroe March …

10
嘎嘎生气的鸭子
尚不确定该图释>:U打算代表什么,但许多学者认为它看起来像只愤怒的鸭子。假设是这种情况。 任务 给定整数n(介于0和3之间,包括0和3),请打印或返回 quack 如果n = 0, >:U 如果n = 1, U U > : U U > U U > : U U UUU 如果n = 2,或者 >:U >:U >:U >:U >:U >:U >:U >:U >:U >:U >:U >:U >:U >:U >:U >:U >:U >:U >:U >:U >:U >:U …

30
括号是否完全匹配?
您必须编写一个程序或函数,该程序或函数带有方括号,并输出该字符串是否完全匹配。您的程序应打印真实或虚假的值,并且IO可以采用任何合理的格式。 规则和定义: 出于此挑战的目的,“括号”是以下任意字符:()[]{}<>。 如果左括号和右括号的顺序正确且其中没有字符,则将一对括号视为“匹配” () []{} 或者,如果其中的每个子元素也都匹配。 [()()()()] {<[]>} (()()) 子元素也可以嵌套在几层深处。 [(){<><>[()]}<>()] <[{((()))}]> 仅在以下情况下,字符串才被视为“完全匹配”: 每个字符都是一个括号, 每对支架都有正确的打开和关闭支架,并且顺序正确,并且 每个括号都匹配。 您可以假设输入将仅包含可打印的ASCII。 测试IO 以下是一些应返回真实值的输入: () [](){}<> (((()))) ({[<>]}) [{()<>()}[]] [([]{})<{[()<()>]}()>{}] 以下是一些应返回假值的输出: ( Has no closing ')' }{ Wrong order (<)> Each pair contains only half of a matched element (()()foobar) Contains invalid characters [({}<>)> …

2
说真的,GolfScript,CJam还是Pyth?
前段时间,有人问了以下问题:GolfScript,CJam或Pyth? 仅基于标题,我认为这将是一个非常好的挑战,但不幸的是,事实证明这是一个要求提示的问题。这是我想阅读的挑战: 谁说高尔夫语言在现实世界中没有使用?众所周知,独立于所使用的编程语言,每行代码的错误比率是相同的,因此,存在明显的机会来减少使用这些语言的调试和维护成本。最终,您的公司看到了曙光,并决定使用Golfscript,CJam和Pyth来开发其产品。 不幸的是,几个月后,您的硬盘上到处都是代码片断,甚至您都不知道用哪种语言编写了哪些代码(您甚至怀疑某些使用Perl的程序员)。 您必须编写一个工具来检测编写程序所用的语言是CJam,Golfscript或Pyth。情况很危急,您可以使用所需的任何语言,但请保持简短(数据存储非常昂贵:我们使用的字节越多,成本就越高)。 一般 最短代码赢 标准漏洞等 不要使用在线口译员 您可以编写函数或程序 您可以使用eval来检测自己的语言 输入项 您的输入来自标准输入流或字符串 输入仅包含ASCII可打印字符和换行符 输入的大小最大为256个字节 输出量 输出被打印到输出流或作为字符串/符号序列返回 如果输入的是无疑是一个有效的X程序,打印或返回X,X ∈{CJam,Pyth,Golfscript} 备注:“毫无疑问”并不意味着您可以使用始终无法检测到任何语言的愚蠢分析器进行回答。对于Pyth,我希望可以识别简单程序(但不能进行硬编码)。这同样适用于CJam(备忘单,实施例)和Golfscript(实施例)。前面的链接指向每种语言的规范。如果使用模糊/贝叶斯方法,则“毫无疑问”意味着具有很高的置信度(例如,您的分类得分为99%)。 请参阅下面的实际测试套件。 如果输入使用多种语言有效,则应打印/返回每种检测到的语言。打印时,多个输出之间必须有分隔符(例如,空格,换行符,逗号...)。 语言尝试的顺序无关紧要 我不关心大小写(CJam,cjam,CJAM,SPAM)[1] 如果未检测到以上任何一种语言,则打印“ Probably Perl”。多亏了mbomb007的注释,在上述情况下,您还可以输出“ Seriously”,罚金为4个字节(两个字符串之间的差)。 [1]请注意,垃圾邮件无效 例子 输入项 "Crime predicted: -- Calling: 1--555- "30*{_5<{iAa*:mr}&}/ 输出(多个返回值的示例) ["Golfscript", "Cjam"] 输入项 3 输出(标准输出示例) golfscript cjam pyth 输入项 if {} aazd …

30
一个“作弊”的奎因
长期潜伏,第一次海报。所以去。 在quine的Wikipedia页面上,它说:“如果查看自己的源代码,quine被认为是“欺骗”。您的任务是使这些“作弊的家伙”之一读取自己的源代码。 这是code-golf,因此以字节为单位的每种语言中的最短代码为准。这意味着5字节的Pyth脚本不会胜过21字节的Python脚本-但15字节的Python脚本会胜过。 您必须使用文件I / O来读取源代码,因此以下来自官方Wikipedia页面的JavaScript代码无效: function a() { document.write(a, "a()"); } a() 它必须访问磁盘上文件的源代码。 不允许您指定文件名。您必须使其检测文件名本身。 大家都清楚吗?走!
56 code-golf  quine 

30
不使用它就打印每个可打印的ASCII字符
用您选择的编程语言编写95个程序,每个程序输出95个可打印ASCII字符中的 一个,而该字符不会出现在程序中的任何位置。 例如,如果您的语言是Python,则输出字符的程序P可能是 print(chr(80)) 因为它P具有ASCII代码80。此程序有效,因为它P从未出现在源代码中。但是,对于输出小写字母的程序,p类似 print(chr(112)) 将是无效的,因为虽然它确实打印了p,但p仍存在于代码中。一个有效的程序可能是 exec(chr(112)+'rint(chr(112))') 可以打印p但不包含p。 您的目标是使95个程序中的每一个都尽可能短。您的分数是所有程序的字符长度之和。 如果由于某种原因您无法为某些字符编写有效的程序,则可以将这些字符标记为“ Did Not Program”或DNP,并完全省略它们的程序。这样,语法严格的语言就可以竞争。 获奖的答案是,有得分最低的答案中的一组拥有最少的DNP的答案。 规则 您所有程序的源代码只能包含可打印的ASCII加上制表符和换行符,所有这些都被视为一个字符。(由于采用了不同的编码,因此很容易省略不存在的字符!) 注意:此规则似乎是必需的,但是有许多语言使用不同的编码,我敢肯定看到它们的答案会很酷。因此,您可以打破这条规则,可以使用任何想要的字符,但是您的答案将变得不具有竞争力,因此无法取胜。 根据您语言的标准约定,程序必须是实际的完整程序。不允许使用功能和REPL代码段。 每个程序的输出应转到stdout或您的语言可接受的替代方案。 程序不应提示或要求输入。(如果提示输入是您的语言固有的,那么可以。) 程序应具有确定性,运行时有限且独立。例如,一个文件是否在与其他程序分开的文件夹中运行没关系。 程序的输出应该是与之对应的可精确打印的ASCII字符,可以选择在其后跟一个单行换行符,仅此而已。 确保在答案中包括所有95个(理想)程序的信息,以及分数和任何DNP。你不必列出所有遵循像一个简单的模式程序“ ,...”但要确保你确信他们都将工作,你的分数是正确添加。print(chr(80))print(chr(81))print(chr(82)) 作为参考,以下是程序必须输出的95个可打印ASCII: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

9
绘制温暖的欢迎秘密帽子
2014年冬季狂欢节正处于盛况,我们大家都不喜欢帽子吗?尤其是秘密帽子! 那么,为什么不戴一顶神秘帽子呢? 挑战 您的任务是按您选择的语言并按此页面上显示的确切结构按比例绘制Warm Welcome Hat 。 与往常一样,您可以使用矢量或栅格图形将帽子渲染到文件或屏幕上。如果输出已光栅化,则图像的尺寸必须为400x400像素或更大。 此外,帽子的实际内容(图像彩色部分的边界矩形区域)应覆盖输出图像的40%以上。 技术指标 下图列出了帽子的各种尺寸。所有尺寸均以单位为单位,例如,像素。图像中的所有边界半径均应以13单位半径绘制。 颜色: 星形和圆形戒指中的红色-RGB(255,28,34) 圆圈中的黄色-rgb(255,202,87) 最浅的灰色-RGB(88,88,92) 最深的灰色-RGB(31,26,26) 中灰-RGB(64,64,64) 计分 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。 值得一提的是,使用现有的压缩(例如嵌入压缩的GIF)会陷入几个标准漏洞。

30
一百万以下的素数清单
这是我的第一个高尔夫问题代码,也是一个非常简单的问题,因此,如果我可能违反了任何社区准则,我事先表示歉意。 任务是按升序打印所有小于一百万的质数。输出格式应为每行输出一个数字。 与大多数代码高尔夫球提交一样,其目的是最小化代码大小。针对运行时进行优化也是一个奖励,但它是次要目标。

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.