Questions tagged «code-golf»

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

21
Levenshtein距离
尽管有很多编辑距离问题,例如这一问题,但编写一个计算Levenshtein距离的程序并不是一个简单的问题。 一些博览会 两个字符串之间的Levenshtein编辑距离是将一个单词转换为另一个单词的最小可能插入,删除或替换次数。在这种情况下,每次插入,删除和替换的成本均为1。 例如,之间的距离roll,并rolling为3,因为缺失花费1,我们需要删除3个characterrs。toll和之间的距离tall为1,因为替换成本为1。 规则 输入将是两个字符串。您可以假设字符串是小写字母,仅包含字母,非空并且最大长度为100个字符。 如上定义,输出将是两个字符串的最小Levenshtein编辑距离。 您的代码必须是程序或函数。它不必是命名函数,但不能是直接计算Levenshtein距离的内置函数。允许使用其他内置插件。 这是代码高尔夫,所以最短的答案会获胜。 一些例子 >>> lev("atoll", "bowl") 3 >>> lev("tar", "tarp") 1 >>> lev("turing", "tarpit") 4 >>> lev("antidisestablishmentarianism", "bulb") 27 与往常一样,如果问题仍然不清楚,请告诉我。祝你好运,打高尔夫球! 目录 var QUESTION_ID=67474;var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";var COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk";var OVERRIDE_USER=47581;var answers=[],answers_hash,answer_ids,answer_page=1,more_answers=true,comment_page;function answersUrl(index){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+index+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(index,answers){return"http://api.stackexchange.com/2.2/answers/"+answers.join(';')+"/comments?page="+index+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:true,success:function(data){answers.push.apply(answers,data.items);answers_hash=[];answer_ids=[];data.items.forEach(function(a){a.comments=[];var id=+a.share_link.match(/\d+/);answer_ids.push(id);answers_hash[id]=a});if(!data.has_more)more_answers=false;comment_page=1;getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:true,success:function(data){data.items.forEach(function(c){if(c.owner.user_id===OVERRIDE_USER)answers_hash[c.post_id].comments.push(c)});if(data.has_more)getComments();else if(more_answers)getAnswers();else process()}})}getAnswers();var SCORE_REG=/<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;var OVERRIDE_REG=/^Override\s*header:\s*/i;function getAuthorName(a){return a.owner.display_name}function process(){var valid=[];answers.forEach(function(a){var body=a.body;a.comments.forEach(function(c){if(OVERRIDE_REG.test(c.body))body='<h1>'+c.body.replace(OVERRIDE_REG,'')+'</h1>'});var match=body.match(SCORE_REG);if(match)valid.push({user:getAuthorName(a),size:+match[2],language:match[1],link:a.share_link,});else console.log(body)});valid.sort(function(a,b){var …
40 code-golf  string 

30
最大公约数
您的任务是在尽可能少的代码字节中计算两个给定整数的最大公约数(GCD)。 您可以编写程序或函数,通过我们接受的任何标准方法(包括STDIN / STDOUT,函数参数/返回值,命令行参数等)获取输入并返回输出。 输入将是两个非负整数。您应该能够处理语言的默认整数类型支持的完整范围,也可以处理range [0,255],以较大者为准。您可以确保至少有一个输入为非零。 不允许使用用于计算GCD或LCM(最小公倍数)的内置函数。 适用标准代码高尔夫球规则。 测试用例 0 2 => 2 6 0 => 6 30 42 => 6 15 14 => 1 7 7 => 7 69 25 => 1 21 12 => 3 169 123 => 1 20 142 => 2 101 202 => 101

8
Ho浩时间单位
在弗诺·温格(Vernor Vinge)的出色且引人入胜的书《天空中的深处》 (顺便提一下,我强烈推荐1)中,跨越各种恒星系统的文化“ Ho何 ”没有“天”,“月”,“ ”等,因此具有独特的计时系统,可以完全以秒为单位测量时间。最常用的单位是Ksec(毫秒),Msec (兆秒)和Gsec(千兆秒)。这是我自己的书本中的一个方便的图表(由于无法在线查找): 您目前正乘坐Pham Nuwen飞机飞行,并且刚刚收到来自一个陌生的未知行星“ 地球 ” 的消息。2它们使用的时间单位与您使用的时间单位不同,并且您的计算机无法识别它们的时间单位。作为船舶的常驻程序员-考古学家,您的工作是打补丁时间处理代码,以便它可以识别地球的时间单位。 自然,由于您只剩下了几Ksec的时间才进入冷睡眠状态,因此您希望使代码尽可能短,以便可以快速编写。幸运的是,作为星际贸易文化,Qeng Ho可以使用每一种发明的编程语言。 输入项 输入将是一个包含一个或多个用空格分隔的组件的单个字符串 。甲组件被定义为一个整数> 0且≤255,然后一空间,然后之一second,minute,hour,day,week,month, year,decade,或century,可能有多个(具有添加的s,或者 centuries在过去的情况下)。 以下是一些有效的示例输入: 10 days 12 hours 1 year 184 centuries 1 second 9 weeks 6 days 2 hours 1 minute 20 seconds 您可以对输入假设以下内容: 复数单位将始终与相关数量一致。 如果输入中包含多个分量,则它们将始终按长度降序排列。 对于此挑战,以下是各种输入单位的含义: unit relative absolute --------------------------------------- second …
40 code-golf 

24
将文本居中!
将文本居中! 在此挑战中,您将以各种线条为中心。 例子 Foo barbaz Foo barbaz Hello World Hello World Programming Puzzles & Code Golf Programming Puzzles & Code Golf 技术指标 每个输入行将始终至少包含一个非空白字符,您可以假设唯一的空白字符是空格()和换行符。每个输入行都没有尾随和/或前导空格(换行符除外)。尾随在输出空白是不是允许。 您应该在输入中最长的线中间居中。如果该行的长度相等,则您的程序/功能应偏向左侧居中。最大行长是您的语言可以处理的,但您的程序应在至少500条长度的行上运行。 排行榜 这是一个堆栈片段,用于按语言生成常规排行榜和获胜者概述。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 # Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,则可以通过打败旧分数来保持标题。例如: # Ruby, <s>104</s> <s>101</s> 96 bytes 如果要在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: # Perl, 43 + 2 (-p flag) = 45 bytes …

30
提前祝您2016年新年快乐!
您的输入将是1970年至2090年(含)之间的整数,代表一年。您的程序应输出与输入年份相同的第二天,即下一年的“元旦”。 测试用例: 以下是示例输入和输出 2001 => 2007 2047 => 2058 2014 => 2020 1970 => 1976 1971 => 1982 1977 => 1983 2006 => 2012 20%红利:输出元旦星期几 2001 => 2007 (Mon) 2047 => 2058 (Tue) 2014 => 2020 (Wed) 1970 => 1976 (Thu) 1971 => 1982 (Fri) 1977 => 1983 (Sat) 2006 …

30
用位和字节编程
在这个挑战中,您将为我编写的一种简单语言编写一个解释器。该语言基于单个累加器A,该累加器A的长度恰好是一个字节。在程序的开头,A =0。这些是语言说明: !:反转 该指令仅将累加器的每一位取反。每个零变为1,每个零变为0。简单! >:右移 该指令将A中的每一位右移一位。最左边的位变为零,最右边的位被丢弃。 <:左移 该指令将A中的每一位向左移一位。最右边的位变为零,最左边的位被丢弃。 @:交换Nybbles 该指令将A的高四位与低四位交换。例如,如果A是01101010并且您执行@,则A将是10100110: ____________________ | | 0110 1010 1010 0110 |_______| 这就是所有指示!简单吧? 规则 您的程序必须在开始时接受一次输入。这将是一行代码。这不是交互式解释器!您只能接受一次输入,而不必在执行该行后循环回到起始位置。 您的程序必须评估所述输入。上面没有提到的每个字符都将被忽略。 然后,您的程序应以十进制打印出累加器的最终值。 适用有效编程语言的常规规则。 不允许出现标准漏洞。 这是代码高尔夫球,最小字节数获胜。 这里有一些小程序可以测试您提交的内容。箭头之前是代码,之后是预期结果: ! -> 255 !>> -> 63 !<@ -> 239 !nop!&6*! -> 255 请享用!

30
打印所有2个字母的拼字游戏单词
挑战: 使用尽可能少的字节打印Scrabble中可接受的每个2个字母的单词。我在这里创建了一个文本文件列表。另请参见下文。有101个单词。没有任何一个词以C或V开头。即使是非最佳的解决方案,也鼓励采用创造性的解决方案。 AA AB AD ... ZA 规则: 必须以某种方式分隔输出的单词。 大小写无关紧要,但应保持一致。 允许使用尾随空格和换行符。不得输出其他字符。 该程序不应接受任何输入。不能使用外部资源(词典)。 没有标准漏洞。 单词表: AA AB AD AE AG AH AI AL AM AN AR AS AT AW AX AY BA BE BI BO BY DE DO ED EF EH EL EM EN ER ES ET EX FA FE GO …

12
我们沉没还是游泳?
问题 甲最坏的情况是由三个数字在一行中描述,n,m,和p。在该行之后是每行n具有m值的行。每个值代表每个单元格可以容纳的总水量。 以下几p行描述了接下来p几天的天气。每天有1单位降雨落在一个单元格上。如果一个单元格中的水量超过了它可以容纳的数量,该单元格就会泛洪。如果多个相邻单元格已满,则将它们视为共享公共邻居的一个单元格(单击一组空白时请考虑Minesweeper)。 一个中间单元有4个邻居 两个相邻的满容量中间电池被视为一个具有6个相邻电池的电池 一个角单元有2个邻居 一个壁单元有3个邻居 单元泛洪时,会发生泛洪事件。所有多余的水平均分配给其邻居。如果那导致一个或多个邻居泛洪,则发生另一泛洪事件。这种情况一直持续到水已经沉淀或城市完全被洪水淹没为止。 输入示例 7 5 3 3 2 3 4 5 2 2 0 3 4 1 1 2 3 3 4 1 2 2 2 4 1 1 2 2 4 4 1 2 2 4 4 2 2 2 0 0 1 …
40 code-golf 

22
检查点是否位于三角形内
您的目标是确定给定的2D点X是否位于具有给定顶点A,B,C的三角形区域内。 编写一个函数,该函数接受测试点X和三个三角形顶点的坐标(因此总共有8个坐标),如果该点位于该三角形内部,则返回True,如果位于该三角形外部,则返回False。 不用担心边缘情况。如果该点位于三角形(边或顶点)的边界上,或者该三角形实际上是线段,则您的代码可以执行任何操作,包括崩溃。也不必担心数值稳定性或浮点精度。 您的代码必须是一个命名函数。代码段将不被接受。 最少的角色获胜。 输入: 八个实数代表坐标。这些数字将在范围内(-1,1)。 确切的输入格式是灵活的。例如,您可以输入八个数字,一个八个数字的列表,一个由元组给定的四个点的列表,一个2 * 4矩阵,四个复数,两个x坐标和y坐标列表,等等。 输入只需要是某个容器中的数字即可,没有其他数据。您无法使用输入进行任何预处理,也可能不需要对输入进行任何约束,例如要求以y坐标递增来指定点。您的输入必须允许任何八个坐标(尽管您的代码在前面提到的极端情况下可以任意运行)。 请说明您的输入格式。 输出: 相应的布尔值True/ False,相应的数字1/ 0或您语言中的类似物。 测试用例 为输入提供了[X,A,B,C]四个元组的列表,首先是测试点,然后是三个三角形顶点。我将它们分为应该输出True和应该输出的那些False。 True 实例: [(-0.31961, -0.12646), (0.38478, 0.37419), (-0.30613, -0.59754), (-0.85548, 0.6633)] [(-0.87427, -0.00831), (0.78829, 0.60409), (-0.90904, -0.13856), (-0.80685, 0.48468)] [(0.28997, -0.03668), (-0.28362, 0.42831), (0.39332, -0.07474), (-0.48694, -0.10497)] [(-0.07783, 0.04415), (-0.34355, -0.07161), (0.59105, -0.93145), …

30
随机密码生成器
域服务器要求所有员工都具有严格的随机密码,并遵守以下规则: 恰好15个字符。 只能由键盘输入的字符(如下面的代码类型所示)。禁止教销售人员使用ALT + NUMPAD代码。 至少1个小写字母: abcdefghijklmnopqrstuvwxyz 至少1个大写字母: ABCDEFGHIJKLMNOPQRSTUVWXYZ 至少1个数字: 0123456789 至少1个符号: `~!@#$%^&*()_+-={}|[]\:";'<>?,./ 为此,IT已委托并将将“随机密码生成器”分发给所有员工。所有员工都必须使用随机密码生成器。除了上述密码限制之外,Random Password Generator的要求还包括: 它必须能够生成所有允许字符的所有排列。 它必须在屏幕上显示生成的密码。 要求代码尽可能小(以字节为单位)。 请在下周内提交您建议的解决方案。
40 code-golf  random 

30
加而不加(或4个基本算术运算符中的任何一个)
问题: 您的目标是不使用以下任何数学运算符就添加两个输入数字:+,-,*,/。 此外,您不能使用旨在取代这些数学运算符的任何内置函数。 得分: 最小的代码(以字节数为单位)获胜。 更新资料 我见过的大多数程序都将包含它们的数字的两个数组连接在一起,或者将first number一个字符组成,追加second number字符,然后将它们全部计数。 最短的数组计数器:Tobia的8个字符的APL 最短数组连接:Doorknob编写的具有4个字符的Golfscript 最短的对数解决方案:Quincunx编写的具有19个字符的TI-89 Basic 集成解决方案:具有45个字符的Mathematica,作者:Michael Stern 在我看来,最酷:javascript中的按位运算符,作者:dave

18
鸭,鸭,走了!
这是(非常可怕的)五只小鸭子的歌(不长): Five little ducks went out one day, over the hills and up away. Mother Duck said, "Quack Quack Quack Quack", but only four little ducks came back. Four little ducks went out one day, over the hills and up away. Mother Duck said, "Quack Quack Quack Quack", but only …
40 code-golf  string 

24
不耐烦地等待输入
今天的任务是实现获取输入的时间限制,这是我发现在大多数语言中很难实现的任务。 您将创建一个程序功能,提示用户输入。用户提供输入后,立即打印消息input received并结束执行/返回。但是,如果用户等待10秒钟以上以提供输入,则输出消息no input received并结束执行/返回。 输入必须来自stdin(控制台)或等效项,而不是函数或程序参数,但是输出可以是stdout,函数的返回值或任何其他可接受的输出方法。 您可以要求任何数量的输入,它可以是单个字符,一行,一个单词,或者是您语言中最短的方法,只要它等待至少一个字符即可。 您必须在收到输入后立即输出,而不是在10秒钟之后输出。 10秒钟后,您必须结束,no input received打印后无法继续等待输入。 您可能会认为在经过10秒钟到将文本打印到屏幕之间的时间内没有通过输入,因为这是一个非常小的窗口。您可能还假设您的语言的内置等效项sleep是绝对完美的。 这是代码高尔夫球,最少字节获胜!
39 code-golf 

21
不可能的飞镖得分
我很惊讶地没有发现这个问题,尽管在飞镖结帐时有一个很大的问题:飞镖遇到Codegolf 您面临的挑战是计算在'n'飞镖的最高得分以下的情况下,'n'飞镖无法获得哪些得分。例如,对于n = 3,最大可能分数是180,所以您将返回[163,166,169,172,173,175,176,178,179] 有关裸露规则的摘要: 单支飞镖的可能得分为: 0(未命中) 1-20、25、50 1-20的两倍或三倍 规则: 适用标准代码高尔夫规则 您必须以您的语言允许的任何方式使用单个参数'n',并返回低于最大得分(不能用n飞镖得分)的所有唯一得分的列表/数组。您也可以将这些值打印到控制台。 结果顺序不重要 以字节为单位的最短代码获胜
39 code-golf 

30
显示钟面
完全像这样在钟面上显示12个数字: 12 11 1 10 2 9 3 8 4 7 5 6 为了更好地查看网格,下面是带有点的网格: ...........12............ .....11...........1...... ......................... .10...................2.. ......................... ......................... 9.......................3 ......................... ......................... ..8...................4.. ......................... ......7...........5...... ............6............ 请注意,网格的宽度被拉伸了两倍,使其看起来更加方形。 还要注意,两位数字与他们的一位对齐。9位数字应与左侧齐平。 以多行字符串(而不是行列表)返回或打印结果。任何尾随空格都是可选的。最后的换行符也是可选的。

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.