Questions tagged «code-golf»

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

1
为Stack Exchange聊天室创建聊天机器人
挑战 这项挑战的目标是创建一个可以在Stack Exchange聊天室中运行的聊天机器人。您的漫游器需要能够检测用户何时发布特定命令并对其进行响应。这是命令列表,以及您的机器人应该做什么: !!newest:输出在此站点(codegolf.SE)上发布的最新问题的标题(无链接,但标题)。 !!metanewest:输出发布在元网站(meta.codegolf.SE)上的最新问题的标题。 !!questioncount:输出当前的问题计数。 !!metaquestioncount:在meta网站上输出当前问题计数。 !!tag tagname:输出作为第一个参数给出的标签的标签摘录(简短描述)。 !!metatag tagname:与上述相同,但用于元网站。 !!featured:输出当前有赏金的问题计数。 !!metafeatured:输出在Meta上带有[featured]标签的问题计数。 规则 您应该编写完整的程序,而不是代码段或函数。 如果有必要,您可以请求用户名和密码作为输入(提示输入,STDIN,命令行参数)。如果使用(例如)Python或Ruby,这将是必需的,但是如果使用JavaScript并在聊天室页面本身上运行脚本,则不需要。 您可以使用外部库来做WebSockets之类的事情。这些库不必计入您的字符数。 您可以使用外部聊天包装器(但不必这样做,建议您自己编写),然后必须计算字符数。您也不允许更改包装程序的代码。如果使用它,则无需修改即可使用它,并且必须计算所有字符(这是不编写自己的包装器的一种惩罚)。 仅包装器本身的代码必须计数。如果还有其他文件(例如示例),则不必计数。 不使用URL缩短器或其他可以缩短URL的方式:挑战是打高尔夫,而不是打URL。 除了聊天和获取响应命令所必需的信息之外,没有任何Web请求。 不允许使用标准的“漏洞”。 如果有人发布命令,则您需要使用以下格式的聊天消息进行响应:@user response。因此,如果我编写命令!!featured并有5个有特色的问题,则您的机器人应该发布@ProgramFOX 5。 如果我测试了您的机器人,那么我将通过我的chatbot帐户运行它,并在此聊天室中运行它。我将始终在该房间中测试机器人,因此不必提供房间ID作为输入,它始终为14697。不会提供此ID作为输入,它应该是硬编码的。 如果未找到命令,则输出@user The command [command] does not exist。替换[command]为不存在的命令的名称。如果将参数提供给命令,则不输出参数,仅输出命令名称。 如果命令必须包含许多参数,请忽略不必要的参数。 如果命令的参数不足,则输出 @user You have not provided enough arguments 系统防止重复消息在短时间内发布。因此,在测试您的漫游器时,我永远不会运行两个连续提供相同输出的命令(这意味着您不必实现一个系统,该系统如果消息重复则通过添加一个点来使消息不同)。 系统会防止在短时间内发布太多消息,因此在测试时,我绝不会在短时间内发送太多命令,这意味着您的机器人不必为此担心(等待一段时间)例如,在发布之前)。 这是代码高尔夫,使用最少字节数的程序获胜。 入门 这是一些有关编写机器人的入门信息。您不必使用它,但是它可以作为指导。 要登录,请首先登录到OpenID提供程序。这将始终是Stack Exchange OpenID(https://openid.stackexchange.com)。登录表单位于https://openid.stackexchange.com/account/login,并在此处提供用户名和密码。 …
39 code-golf 

9
“便捷回文”检查器
如果您曾经尝试编写回文代码,那么您会知道会遇到多少括号。()()是不是回文,即使它还挺看起来像它应该的,而())(和()(都是回文和两个非常愚蠢的期待。如果不是这样的话,会不会很方便? 如果一个字符串等于其所有括号(),方括号()和花括号()颠倒时所得到的字符串,则该字符串很容易回文。没有其他特殊字符需要翻转。(有时会配对,但通常不会配对,因此被忽略了。)()[]{}<> 您的任务是用您的语言编写一个程序(接受STDIN的输入)或一个函数(接受单个字符串参数),该程序(a)当其参数为回文形式且给出不同的,一致的false时,给出一致的真值* (b)本身很方便回文。 例如,以下输入通常是回文的: racecar (a)(bb)(a) void main(int argc, *char[] argv) {} (vgra []rahc* ,cgra tni)niam diov 并且以下不是: non-palindrome A nut for a jar of tuna? (old [style] parens) )snerap ]elyts[ dlo( ingirumimusnocte)etconsumimurigni 除了解释器/编译器标志之外,您不得依赖任何外部状态(特定的文件名,目录结构,其他用户输入,Web访问等)。 另外,您不得使用“注释技巧”来注释掉或通过利用语言的注释功能来渲染未使用的某些代码。例如,不允许以下所有操作,因为它们包含可以安全地移除或销毁的非功能性部件(以失去回文性为代价): {some code} // {edoc emos} {some code} NB.BN {edoc emos} "n\" ;{edoc emos} ;"; …

8
懒惰战舰安置
想象以下情况:您正在与朋友一起玩战舰,但决定作弊。您决定不放置任何船只,而不是在他拍摄您的船只过去后移动它。您告诉他所有他的投篮都是未命中的,直到不可能以这种方式放置飞船。 您必须编写一个函数或一个完整的程序,该函数或函数以某种方式接受3个参数:字段大小,舰船数量列表和射击列表。 战场 给定参数之一是电路板尺寸。战场是一个单元格的正方形,给定的参数只是该正方形的一侧。 例如,以下是大小为5的电路板。 字段上的坐标指定为2组分字符串:字母后跟数字。在某些特殊情况下,您可以依靠字母。 字母指定列,数字指定单元格的行(1索引)。例如,在上图中,突出显示的单元格由表示"D2"。 由于只有26个字母,因此该字段不能大于26x26。 轮船 船只是1个或更多街区的直线。船舶数量在列表中指定,其中第一个元素是1单元船的数量,第二个是2单元船的数量,依此类推。 例如,该列表[4,1,2,0,1]将创建以下舰队: 当放置在战场上时,舰船不能相交,甚至不能相互接触。甚至没有角落。但是,它们可以接触到场的边缘。 您可以在下面看到有效的船位示例: 您可以假定,对于给定的舰船,在给定尺寸的空板上始终存在一个放置位置。 输出量 如果存在这样的船只布置,则必须输出其中的任何一个。 该程序必须输出以换行符分隔的3种类型的ascii字符矩阵-一种表示空白单元格,一种表示飞船,另一种表示标记为“ missed”的单元格。不应输出其他字符。 例如, ZZ@Z \@@Z @\\Z \Z\\ (在此示例中,我定义@为空白单元格,\为“缺失”单元格并Z为装运件) 如果不存在此类放置,则程序/功能应返回而不输出任何内容。 输入值 如果您决定制作一个成熟的程序,则需要指定您如何输入列表,有些可以通过参数输入,有些可以通过stdin输入。 这是代码高尔夫球,最少的字符获胜。 可以在此处找到一个非高尔夫球优化解决方案的示例,使用 编译-std=c99,第一个参数是木板的尺寸,其他参数是船的尺寸。在stdin上提供了换行符分隔的镜头列表。例: ./a 4 1 1 1 <<< $'A2\nA4\nB3\nC3\nC4\D4'

30
ASCII艺术“ Hello-World!” [关闭]
您的目标是编写输出“ Hello-World!”的最短程序。作为ASCII艺术。 规则: 它必须是人类可读的,我不在乎它的大小(cols / rows) 输出中只能包含空格(“”),尖号(“#”)和换行符 输出必须使用等宽字体(但字母不必使用等宽字体) 结果,每个字符必须彼此隔开至少一个空格 请在代码中添加标题以及语言和字节数。

25
HelolW rdlo(线程挑战)
我为您带来挑战: 使用任何语言打印“ Hello World”。 每个字符必须从其自己的唯一线程中打印 而已。显然,由于不能保证线程按启动顺序运行,因此必须确保程序线程安全以确保按正确的顺序打印输出。 并且,因为这是代码高尔夫,所以最短的程序将获胜。 更新: 获奖者是Marinus的APL参赛作品(34个字符)。它还赢得了可读性最差的奖项。
39 code-golf 

13
高级代码高尔夫-编写小型HTTP服务器
您的挑战是编写一个接受GET请求的代码高尔夫HTTP服务器。显然,它不必具有全部功能,但必须提供目录中的文件。 规则: HTTP服务器必须在TCP端口36895(0x901F)上侦听 它必须/var/www在* NIX系统(例如Linux)或C:\hgolfWindows 上提供文件。 您可以忽略除GET本身之外的所有传入HTTP标头。 如果HTTP方法不是GET,则必须发送回状态代码“ 405不支持”和正文“ 405不支持”。 如果文件不存在,则必须发送回状态代码“ 404未找到文件”和正文“ 404未找到文件”。 如果文件存在但由于某种原因无法读取,则必须发送回状态代码“ 500 Server Error”和正文“ 500 Server Error”。 如果用户请求/或任何其他现有的根目录(例如,/foo/其中一个目录foo存在/var/www/),空白页面响应。 您的回复必须至少包含最小标头,以允许内容在Firefox 8.0和Internet Explorer 8.0上显示 您必须使用Content-Type标头集进行响应,但只需要支持扩展名html => text/html和即可txt => text/plain。对于其他任何文件扩展名,请application/octet-stream作为内容类型发送。 您的代码必须能够同时传输ASCII和二进制数据,尽管您不必明确区分两者。 您不得使用第三方库。 您不得使用用于处理HTTP请求的内置类或功能(例如,HttpListener在C#中) 如果由于您使用的套接字API而使代码仅在特定的操作系统上运行,请说明这一点。 解决方案必须包含一个图像,该图像显示该图像向浏览器提供HTML页面。 如果您有任何疑问,请随时提问!:)
39 code-golf 

8
模拟魔方
魔方具有6种颜色:红色,橙色,黄色,白色,蓝色和绿色。红色和橙色,黄色和白色以及蓝色和绿色的面相对。 一个已解决的Rubik多维数据集的网络如下所示: Y BRGO W 磁贴看起来像这样: Y Y Y Y Y Y Y Y Y B B B R R R G G G O O O B B B R R R G G G O O O B B B R R R G G G O O …

20
打印包含n的第n个素数
这个问题将是找到n第素数的一个转折。 挑战 您必须编写一个程序,该程序将接受一个input n,并输出n第一个质数,该质数的十进制表示形式包含十进制表示n形式。 困惑?这里有些例子。 n=1 Primes: 2, 3, 5, 7, 11 ^1 first prime that contains a 1 Output: 11 n=2 Primes: 2, 3, 5, 7, 11, 13, 17, 19, 23 ^1 ^2 second prime that contains a 2 Output: 23 n=3 Primes: 2, 3, 5, 7, 11, 13, …

30
一系列产品
您的任务很简单:给定两个整数a和b,输出∏[a,b]; 也就是介于a和之间的乘积b。您可能需要a和b任何合理的格式,不管是参数的函数,一个列表输入,标准输入,等等。您可以以任何合理的格式输出,例如返回值(用于函数)或STDOUT。a永远小于b。 请注意,结尾可能是的排他或包含b。我不挑剔 ^ _ ^ 测试用例 [a,b) => result [2,5) => 24 [5,10) => 15120 [-4,3) => 0 [0,3) => 0 [-4,0) => 24 [a,b] => result [2,5] => 120 [5,10] => 151200 [-4,3] => 0 [0,3] => 0 [-4,-1] => 24 这是一个代码高尔夫球,因此以字节为单位的最短程序获胜。 排行榜 这篇文章底部的Stack Snippet会根据答案a)生成目录,a)作为每种语言最短解决方案的列表,b)作为整体排行榜。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language …
39 code-golf  math 

30
我反转了源代码,您否定了输出!
您的任务(如果希望接受)是编写一个输出非零数字(可以是整数或浮点数)的程序。棘手的部分是,如果我反转源代码,则输出必须是取反的原始整数。 规则 您必须构建一个完整的程序。也就是说,您的输出必须打印到STDOUT。 两个数字都必须以10为底(禁止以其他任何底数或以科学计数法输出)。 允许输出带有尾部/前导空格的数字。 这是代码高尔夫球,因此每种语言中最短的(原始)代码胜出! 默认漏洞适用。 例 假设您的源代码为,ABC并且其对应的输出为4。如果我CBA改为编写并运行它,则输出必须为-4。

30
输出传奇的Yggdrasil
您的任务是输出传奇生物树Yggdrasil的表示形式。 您必须编写一个程序,其输出正是这样的: /\ /**\ /****\ /******\ /******\ /********\ /**********\ /************\ /**************\ /************\ /**************\ /****************\ /******************\ /********************\ /**********************\ /******************\ /********************\ /**********************\ /************************\ /**************************\ /****************************\ /******************************\ /************************\ /**************************\ /****************************\ /******************************\ /********************************\ /**********************************\ /************************************\ /**************************************\ /******************************\ /********************************\ /**********************************\ /************************************\ /**************************************\ /****************************************\ /******************************************\ /********************************************\ /**********************************************\ /************************************\ /**************************************\ /****************************************\ /******************************************\ /********************************************\ /**********************************************\ /************************************************\ /**************************************************\ /****************************************************\ …

21
解密XKCD颜色
Randall Munroe(XKCD的作者)进行了一项调查,为颜色命名。主要结果是列出954种最常见的RGB监视器颜色的名称。 为了便于编程,以下是纯文本列表:http : //xkcd.com/color/rgb.txt。注意,第一行不是数据,而是包含许可证。 编写一个程序或函数,以上面列表中的有效颜色名称作为输入并输出关联的RGB颜色代码。您的程序不必以任何定义的方式处理无效输入。 有标准漏洞。此外,您的答案不得使用预定义的(内置或外部)颜色代码<->颜色名称图。(这包括链接列表。)以字节为单位的最短代码获胜。如果从文件读取,则必须包括文件的字节数。 例子: dark peach -> #de7e5d robin's egg blue -> #98eff9 pink/purple -> #ef1de7

13
间谍太多了!
您正在与庞大的敌人间谍网络作战。您知道每个间谍都有至少一个(有时是多个)他们喜欢使用的伪造身份。您真的想知道您实际上正在处理多少个间谍。 幸运的是,您的反情报特工正在做他们的工作,有时可以弄清楚何时两个假身份实际上是由同一个敌方间谍控制的。 也就是说: 您的代理人并不总是知道两个伪造的身份背后何时有相同的间谍。 如果代理告诉您两个假身份是由同一间谍控制的,则您相信它们是正确的。 代理讯息 代理会向您发送隐秘消息,告诉您哪些身份背后隐藏着相同的间谍。一个例子: 您需要处理2个代理和5个伪造身份。 第一代理向您发送一条消息: Red Red Blue Orange Orange 这意味着他们认为有3个间谍: 第一个(红色)控制标识1和2 第二个(蓝色)控制标识3 第三个(橙色)控制标识4和5 第二个代理向您发送一条消息: cat dog dog bird fly 这意味着他们认为有4个间谍: 第一个(猫)控制身份1 第二个(狗)控制身份2和3 第三个人(鸟)控制身份4 第四个(飞行)控制身份5 编译intel我们看到: Identities: id1 id2 id3 id4 id5 Agent 1: |--same-spy--| |--same-spy--| Agent 2: |--same-spy--| Conclusion: |-----same-spy------||--same-spy--| 这意味着最多有2个间谍。 笔记 同一间谍拥有的身份不必是连续的,即消息如下: dog cat …
38 code-golf 

10
画“酷S”
介绍 我们都知道酷S(也称为超人S,StüssyS,Super S,Skater S,Pointy S,Graffiti S等):全世界数十亿的学童吸引了这个S,并立即为自己感到骄傲。万一您忘记了或完全不酷的童年,以下是酷S的图片: 给定的比例因子n作为输入(其中),输出ASCII技术中的冷S上。1≤n≤201≤n≤201\leq n\leq 20 如何画 从Cool S 的Wikipedia页面上: 输出量 当n= 1 时的Cool S 为: ^ / \ / \ / \ | | | | | | \ \ / \ \/ /\ \ / \ \ | | | | | | \ / …

28
输出Arecibo消息
Arecibo消息是1974年发送给球状星团M13的载有关于人类和地球的基本信息的星际无线电消息,希望外星情报可以接收和破译它。该消息由1,679个二进制数字组成,大约210个字节... 选择数字1,679是因为它是半素数(两个质数的乘积),按73行乘23列矩形排列。另一种排列方式是23行乘73列,产生难以理解的字符集(与所有其他X / Y格式一样)。 这是添加了颜色以突出显示其单独部分的消息。实际的二进制传输中没有任何颜色信息。 资料来源:维基百科 您的任务是按照图中所示的精确23x73排列输出Arecibo消息。可以使用以下任何一种输出格式: 文本,一个字符用一个字符表示,另一个字符用零(使用行分隔的常规规则) 具有两个不同值的2D数组 具有两种不同颜色的23x73图像 一条不间断的流,包含两个不同值的1679个项目(即上述格式中的任何一种,但均为单位)。 1679位整数。指出解决方案中的位和字节顺序(字节序)。 为了方便起见,这是可复制复制的版本(也是文本格式的示例输出): 00000010101010000000000 00101000001010000000100 10001000100010010110010 10101010101010100100100 00000000000000000000000 00000000000011000000000 00000000001101000000000 00000000001101000000000 00000000010101000000000 00000000011111000000000 00000000000000000000000 11000011100011000011000 10000000000000110010000 11010001100011000011010 11111011111011111011111 00000000000000000000000 00010000000000000000010 00000000000000000000000 00001000000000000000001 11111000000000000011111 00000000000000000000000 11000011000011100011000 10000000100000000010000 11010000110001110011010 11111011111011111011111 00000000000000000000000 00010000001100000000010 00000000001100000000000 00001000001100000000001 11111000001100000011111 00000000001100000000000 00100000000100000000100 00010000001100000001000 00001100001100000010000 00000011000100001100000 00000000001100110000000 00000011000100001100000 …

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.