Questions tagged «code-challenge»

代码挑战赛是一种创造性的竞赛,可以用客观的获胜标准来解决编程难题,而其他得分标记(例如,代码高尔夫)则无法涵盖这些目标。

8
1个字符的拼写错误,从C ++编译生成大多数错误消息
似乎简单地更改C ++文件(尤其是使用模板)会产生错误页面。这场比赛的目的是要了解最大的“价格便宜”,即输出错误最少,对源代码的更改最少(添加1个字符)。 因为其他语言更加理智,所以这将限于C ++和gcc版本4.x。 规则 原始源文件必须使用gcc 4.9.2编译为目标代码,且没有错误。 将一个ASCII字符添加到源代码中以创建拼写错误,从而将文件大小增加1个字节。 编译器使用默认选项运行。必需的选项(如-c和-std=c++11允许),不允许的选项(如)-Wall。 指标是 number of bytes of generated error messages ----------------------------------------------------------------------- (bytes of source code with typo) (length of filename passed to compiler) 答案将通过http://ideone.com/ C ++ 4.9.2 进行验证。 例: 文件名是a.cpp,长度为5个字节。 int foo(); 工作编译 gcc -c a.cpp 损坏的源代码: in t foo(); 编译失败 $ gcc …

30
确定您的语言版本
您面临的挑战是编写一个可以在您的语言的不同版本中使用的多语言。运行时,它将始终输出语言版本。 规则 您的程序应至少在两种语言版本中运行。 程序的输出应仅是版本号。无多余数据。 您的程序可以使用任何您喜欢的方法来确定版本号。但是,输出必须遵循规则2。但是,如果您确定版本号,则输出只能是数字。 您的程序仅需要输出语言的主要版本。例如,在FooBar 12.3.456789-beta中,您的程序仅需要输出12。 如果您的语言在版本号之前或之后放置单词或符号,则无需输出这些单词或符号,只需输出编号。例如,在C89中,您的程序仅需要打印89,而在C ++ 0x中,您的程序仅需要打印0。 如果您选择打印全名或次要版本号,例如C89而不是C99,则只能打印名称。C89 build 32有效,而error in C89 build 32: foo bar无效。 您的程序可能不使用内置的,宏的或自定义的编译器标志来确定语言版本。 计分 您的分数将是代码长度除以其工作版本的数量。分数最低者获胜,祝您好运!

10
构建一个通过Diehard测试的随机数生成器
尽管这里有许多涉及随机性的代码高尔夫问题,但我还没有看到有人真正要求构建算法伪随机数生成器。有一个要求您生成一个比特流,但是在那个端口上提供的随机性测试不是很严格,也不是代码高尔夫。 您编写的程序将具有一个可调用的函数,该函数将返回一个从0到4294967295的随机整数。此函数不得调用未作为程序一部分编写的任何库或其他函数,尤其是对/ dev / random的调用或语言的内置rand()库。更具体地说,您限于所用语言的基本运算符,例如算术,数组访问和条件流控制语句。 您的程序的分数计算如下: Score = C / R 其中C是代码的长度(以字符为单位),R是生成器通过的Diehard测试次数(如果您的随机数生成器未通过至少一项Diehard测试,则其得分为无穷大且不合格)。如果生成器生成的文件提供的P值范围似乎沿着间隔[0,1)均匀分布,则您的生成器通过了Diehard测试。 要计算R,请使用随机数生成器及其默认种子来生成16 MB的二进制数据文件。该函数的每次调用都返回四个字节。如果您的函数太慢而无法返回字节,则这将导致折衷考虑在测试难度上获得较低的分数。然后,通过Diehard测试运行它并检查提供的P值。(不要尝试自己实现这些;请使用此处提供的内容) 当然,最低分获胜。

30
再见残酷的世界!
背景 高尔夫球手您好!我想学习所有的编程语言!但是我的注意力范围很短...复制所有Hello World示例变得很无聊...但是我喜欢火!^ w ^ 挑战 所以这是计划!我希望所有人都编写最小的代码,这些代码将进行编译,打印Goodbye Cruel World!然后崩溃。或者,作为额外的扭曲挑战,打印Hello World!并崩溃Goodbye Cruel World! 规则 您的分数将是使用的总字符数。答案必须是一个完整的可执行程序。 您的程序必须打印Goodbye Cruel World!输出,然后崩溃(意外错误)。 要获得高分,必须打印Hello World!输出,但错误消息还必须包含Goodbye Cruel World!。如果您完成了奖金挑战,则可以将分数除以2。(如果要领取奖金,请在分数末尾加一个!!)。 只要仍然输出标准输出,并且仍然输出标准错误,顺序就没有关系。只要两者都不能阻止对方发生。 输出必须包含上述内容;"不应出现在输出中。 输出应包含指定的字符串,且不包含其他任何内容。 崩溃报告可以包含任何内容,但要获得红利,以下正则表达式应匹配/Goodbye Cruel World!/mi(aka,包含,忽略大小写/周围的文字) 字符串Hello World!和Goodbye Cruel World!不区分大小写,否则应与上面完全一样。 如果该语言能够崩溃(它不能更改其退出代码),则需要崩溃。否则,请使用该语言的标准“错误报告”(即STDERR)。 我可以使Python 3崩溃,因此我提供了一个示例 Python 3答案!现在,让所有人放纵世界!^ W ^ 显示代码段 var QUESTION_ID=125282,OVERRIDE_USER=0;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 …

22
“当我们穿越宇宙时……”
您将获得太阳系中20个最大物体之一的名称。您的任务是返回半径的近似值,以公里为单位。 这是一种代码挑战,根据最差的近似值,您的分数包括代码长度(以字节为单位)乘以惩罚比。因此,最低分获胜。≥1≥1\ge 1 “我们在宇宙中旅行”是Black Sabbath演唱的《Planet Caravan》的最后一句,后来也被Pantera演唱。 太阳系物体 资料来源:维基百科 注意:排名仅供参考。输入是对象的名称。 n | Object | Radius (km) ----+----------+------------- 1 | Sun | 696342 2 | Jupiter | 69911 3 | Saturn | 58232 4 | Uranus | 25362 5 | Neptune | 24622 6 | Earth | 6371 7 | Venus | …

5
TryItOnquine挑战
(基于这篇文章以及随后的聊天讨论 -同样,非常感谢Dennis的TIO!) 挑战 选择TryItOnline网站上当前可用的语言,例如PowerShell。在该页面上以该语言编写代码,不需要任何输入,因此,当单击“ 运行”按钮时,该页面上的输出与“ 保存/存储 ”时“纯URL”字段中的输出完全相同。而是单击按钮。 举一个虚拟的例子,假设这aaa是PowerShell中解决此问题的代码。然后,单击Run with aaaas the code on的结果https://tio.run/#powershell应输出https://tio.run/##K8gvTy0qzkjNyfn/PzEx8f9/AA,当单击Save / Store按钮时,它也是“ Plain URL”字段。 计分 该结果URL是您提交这一挑战。获胜者是最短的URL,以字节为单位。对于上面的示例,URL https://tio.run/##K8gvTy0qzkjNyfn/PzEx8f9/AA是挑战的提交,为44个字节。满足其余挑战要求的最短URL会赢得挑战,并获得布朗尼积分(不可兑换的积分)。鉴于存在明显的最小可能长度,如果两个提交的长度相等,则以较早的提交为准。 URL生成 这是存储库中URL生成算法的开始。您可以看到如何使用主代码区域,如何附加任何额外的元素,对字符串进行放气,然后对Base64进行转换,然后对其进行##前缀等。在此,我将不做详细介绍;挑战的一部分是解析并了解如何生成URL,以利用所述算法中的任何潜在怪癖。 规则/说明 实际的代码不应输入任何内容,而只能产生quine-URL作为输出。 -这意味着,应该点击进入网址时,系统都将填充仅文本字段的Code,Header,Footer或相应的“编译器标志”领域; 在Input和Arguments领域都被禁止,必须保持为空/不用。单击运行按钮应仅更改该Output字段。对于此挑战,Debug在所有情况下都将忽略该字段。 通常的规则适用于代码(例如,代码无法通过读取其自身的源代码.code.tio)。 请在您的提交中说明代码的工作方式。 不允许通过将Git提取请求提交到TIO储存库以创建“技巧” URL或快捷方式等来提交“骗人的”奎因。 类似地,不允许提交拉取请求以更新特定语言以产生“技巧” URL。 请对Dennis的服务器好,不要为了挑战而滥用它们或尝试利用漏洞。

3
最短的通用迷宫出口绳
通过指定每个边缘是墙还是墙来定义方形单元的N x N网格上的迷宫。所有外边缘均为墙。一个单元格定义为开始,一个单元格定义为退出,并且从开始即可到达出口。开始和退出永远不会是同一单元格。 请注意,起点和出口都不必位于迷宫的外部边界,因此这是有效的迷宫: 字符串“ N”,“ E”,“ S”和“ W”表示试图分别向北,向东,向南和向西移动。被墙壁阻止的移动将被跳过而不会移动。如果从头开始应用该字符串会导致到达出口,则该字符串会退出迷宫(无论该字符串在到达出口后是否继续)。 灵感来自这个puzzling.SE问题,针对同或提供一个解决的方法可证明具有很长的字符串,编写代码,可以发现,通过3迷宫退出任何3一个字符串。 排除无效的迷宫(在同一单元格上开始和退出,或无法从开始到达出口),有138,172个有效迷宫,并且字符串必须退出每个迷宫。 有效期 该字符串必须满足以下条件: 它仅由字符“ N”,“ E”,“ S”和“ W”组成。 如果从头开始,它将退出应用到的所有迷宫。 由于所有可能的迷宫都包括每个可能的迷宫以及​​每个可能的有效起始点,因此这自动意味着字符串将从任何有效的起始点退出任何迷宫。也就是说,从可以到达出口的任何起点开始。 获奖 获胜者是提供最短有效字符串并包括用于生成它的代码的答案。如果有多个答案提供了最短的字符串,则第一个提交该字符串长度的用户将获胜。 例 这是一个长度为500个字符的示例字符串,可以给您带来一些帮助: SEENSSNESSWNNSNNNNWWNWENENNWEENSESSNENSESWENWWWWWENWNWWSESNSWENNWNWENWSSSNNNNNNESWNEWWWWWNNNSWESSEEWNENWENEENNEEESEENSSEENNWWWNWSWNSSENNNWESSESNWESWEENNWSNWWEEWWESNWEEEWWSSSESEEWWNSSEEEEESSENWWNNSWNENSESSNEESENEWSSNWNSEWEEEWEESWSNNNEWNNWNWSSWEESSSSNESESNENNWEESNWEWSWNSNWNNWENSNSWEWSWWNNWNSENESSNENEWNSSWNNEWSESWENEEENSWWSNNNNSSNENEWSNEEWNWENEEWEESEWEEWSSESSSWNWNNSWNWENWNENWNSWESNWSNSSENENNNWSSENSSSWWNENWWWEWSEWSNSSWNNSEWEWENSWENWSENEENSWEWSEWWSESSWWWNWSSEWSNWSNNWESNSNENNSNEWSNNESNNENWNWNNNEWWEWEE 感谢orlp捐赠了这个。 排行榜 相等分数按该分数的发布顺序列出。这不一定是答案发布的顺序,因为给定答案的分数可能会随时间更新。 法官 这是一个Python 3验证器,它使用NESW字符串作为命令行参数或通过STDIN。 对于无效的字符串,这将为您提供失败的迷宫的直观示例。

25
高尔夫十项全能的第一个代码[关闭]
任务 所有竞争对手都试图解决以下10个任务列表: 数学 从输入中读取正整数n并返回前n个非负整数的立方和。 对于输入1,应该返回0。 当且仅当n是梅森素数时,才从输入读取正整数n并返回真实值。 从输入读取n个整数的非空列表,并返回它们的中值。 如果n为偶数,则使用两个中间值中的较小者。 例如,的中位数[1 4 3 2]为2。 从输入中读取整数(正,负或0)或以10为底或一进制的字符串表示形式,并以negabinary返回其数字,且不带前导零(输入0除外)。 可以用任何方便的方式(数字,数组,字符串等)格式化输出。 串 返回pneumonoultramicroscopicsilicovolcanoconiosis。 检查当前日期,并Happy New Year!根据公历返回合适的日期。 伪随机地从Unicode块CJK Unified Ideographs Extension-A(U + 3400 – U + 4DB5)中选择64个唯一分配的代码点,然后返回相应字符的字符串。 所有可能的字符串应具有相同的被选择概率。 当且仅当第一个字符串的字符形成第二个字符串的子序列时,才从输入中读取两个可打印的ASCII字符串,并返回真实值。 例如,abc,axbxc应该返回truthy和bac,axbxc应该返回falsy。 数组操作 从输入中读取一个多维的矩形整数数组和一个整数n,并返回修改后的数组,其中所有整数均乘以n。 艺术 从输入中读取一个非负整数n,并返回n个火车货车的链,如下所示。 n = 3的示例输出: ______ ______ ______ | | | | | | ()--() ~ …

16
主脑马电池钉书针
目的 给定三个单词的密码列表,将其全部破解。每次您猜测时,都会得到Mastermind风格的线索,其中描述了与密码匹配的字符数以及正确位置的字符数。目的是最大程度地减少所有测试用例的猜测总数。 密码短语 从系统的默认单词列表中,我随机选择了10,000个不同的单词来制作此挑战的字典。所有单词a-z仅包含。这本词典可以在这里找到(raw)。 从这本词典中,我生成了1000个密码短语,每个短语由三个以空格分隔的随机单词组成(apple jacks fever例如)。各个单词可以在每个密码短语(hungry hungry hippos)中重用。您可以在此处找到密码短语的列表(raw),每行一个。 您的程序可以根据需要使用/分析字典文件。您无法分析密码短语以针对此特定列表进行优化。给定不同的词组列表,您的算法仍然可以使用 猜测 为了进行猜测,您将字符串提交给检查器。它应该只返回: 密码中字符串中的字符数(位置不正确) 正确位置的字符数 如果您的字符串是完美匹配,则可能会输出一些表明该字符串的信息(mine -1用于第一个值)。 例如,如果密码是the big cat且您猜到了tiger baby mauling,则检查程序应返回7,1。ige<space>ba<space>两个字符串中有7个字符(),但位置不同,而两个字符串中的1个(t)位于相同位置。请注意,空格很重要。 我已经用Java编写了一个示例函数(阅读:未优化),但是只要提供所需信息,就可以自己编写。 int[] guess(String in){ int chars=0, positions=0; String pw = currentPassword; // set elsewhere, contains current pass for(int i=0;i<in.length()&&i<pw.length();i++){ if(in.charAt(i)==pw.charAt(i)) positions++; } if(positions == pw.length() && pw.length()==in.length()) return new …

6
让我们按封面来判断一些书
每个人都知道内容是问题所在。但是好标题也有帮助,这是我们看到的第一件事。现在是时候将第一印象变成一个程序,并弄清楚哪种标题会获得更多支持。 您面临的挑战是编写一个程序或函数,该程序或函数将PPCG问题的标题作为输入,并返回其得分的预测。 例如Counting Grains of Rice,59在这种情况下,您可能会收到输入作为输入,并且您将尝试返回接近分数的内容。非整数的猜测是可以的,但低于或等于猜测的-20则不行。 以下是用于测试和评分的数据: http://data.stackexchange.com/codegolf/query/244871/names-and-upvotes 评分:您的程序将针对该站点(PPCG)历史记录中的每个问题运行,而不包括已关闭的问题。ln(score + 20)然后,该功能将应用于每个分数和每个猜测。两个结果值集之间的均方根误差就是您的得分。越低越好。 例如,一个程序每次猜测为0的得分为0.577,而每次猜测为11的程序得分为0.362。 请计算您的分数,并将其包括在答案标题中。还请包括您的程序对这个问题将获得多少票的预测。 限制条件: 为防止过多的硬编码,请不要超过1000个字符。 必须在一台合理的计算机上在一分钟之内运行上面的所有数据集。 标准漏洞已关闭。 这是一个用Python编写的测试器,供您使用和/或消除歧义: import sys import math import csv scores_dict = {} with open(sys.argv[1], 'r') as csv_file: score_reader = csv.reader(csv_file) for score, title in score_reader: if score == 'Score': continue scores_dict[title] = int(score) def rate_guesses(guesser): …

15
生成堆栈溢出徽标
面临的挑战是生成类似于StackOverflow徽标的图像: 输出必须包含: 图片尺寸64 * 64或更大 灰色| __ | 异型底座 从底部向上弯曲的分段堆栈。这些片段将从灰色逐渐变为橙色,并向右转90度。段数应在5到7之间,最好是6。 注意:对于缺少颜色的ascii显示器,请使用'0'字符表示灰色,并使用'9'表示橙色。“ 1”到“ 8”将代表它们之间的阴影。 限制条件: 您必须生成图像。禁止加载图像或将其存储在代码/二进制文件中。 附加规则/信息: 图像不必与徽标相同,但是必须能够识别。 显示方法由您决定。将其保存到图像文件或显示在屏幕上都是可以接受的。 评审/获奖标准: 图像的准确性是首要条件 优雅是次要条件

1
键入给定文本所需的击键次数最少
我们都知道程序员往往很懒。为了最大限度地利用您的空闲时间,您决定编写一个程序,该程序为输入的文本输出最少的击键次数。 输入:必须转换为击键的文本。您可以决定如何输入文本(STDIN /从参数中提供的文件中读取) 输出:以下格式的必要操作: 他们必须编号 H它:按下一个键并立即释放它 P提示:按下一个键然后不松开(将键R作为下一个击键时,这将永远不是最佳选择) Release:释放P密钥 范例: 输入: Hello! 输出: 一个幼稚的解决方案是: 1 P Shift 2 H h 3 R Shift 4 H e 5 H l 6 H l 7 H o 8 P Shift 9 H 1 10 R Shift 这样会更有效: 1 P Shift 2 H h …

10
只能有1个!
给定正整数n,您的任务是生成等于number的表达式n。 要注意的是:只允许1在输出中输入数字。 您可以使用的运营商是: +,-,*和/ /是浮点除法(so 5/2 = 2.5)。 sqrt(作为s) ceil和floor(分别为c和f) ! (阶乘) 在这种情况下,阶乘仅适用于正整数。 您也可以将堆叠1在一起,因此11在输出中可以接受类似的内容。但是,它们的数量与数量中的相同1(因此11算作2 1)。 您还必须在输出中包括方括号,以便通过操作顺序执行输出时,输出中的表达式将产生输入。但是,它们不算作操作。 例子: 输入= 24,一个可能的输出= (1+1+1+1)! 输入= 11,一个可能的输出= 11 输入= 5,一个可能的输出= c(s((1+1+1+1)!)) 的平方根的上限24是5。 规则: 您可以确保输入是从1到的正整数2^31-1。 2^31-1即使未经测试,您的程序也必须能处理最大为的正整数。 您的程序必须在1小时内完成处理集中所有数字的所有输出。 程序每次运行的结果都必须完全相同-而且,没有种子。 您只能对表达式进行硬编码,最多10个数值。 不允许在输出中的任何地方使用虚数(所以没有s(some negative number))。 也不允许您使用大于2^31-1或小于-2^31+1输出中任何地方的数字,即使当它们是sqrted或/ed(所以no (((1+1+1)!)!)!或((1+1+1+1)!)!)时也是如此。 一组数字: 945536, 16878234, 32608778, 42017515, 48950830, 51483452, 52970263, 54278649, 63636656, 78817406, 89918907, …

30
现代高尔夫的编程难题
您的任务是打印文本Good morning, Green orb!,并将每个字符重复出现在位置(模式)中最频繁出现的字节中。尾随换行符是允许的,不需要重复。 例如,如果您的来源是 print p 因为p出现两次,并且每隔一个字节出现一次,则需要打印 GGoooodd mmoorrnniinngg,, GGrreeeenn oorrbb!! 答案将通过其字节数与重复输出次数的乘积来评分。例如,上面的代码(如果可行)将获得7 * 2 = 14的评分。目标应该是最小化分数。 您的代码必须至少包含1个字节。 使用此程序来验证您的代码和输出是否匹配

19
我的馅饼被平分了吗?
编写一个包含正整数的非空列表的程序或函数。您可能会假设它是以合理方便的格式输入的,例如"1 2 3 4"或[1, 2, 3, 4]。 输入列表中的数字表示完整饼图的切片,其中每个切片的大小与其对应的数字成比例,并且所有切片均按给定的顺序排列在图表周围。 例如,饼图为1 2 3 4: 您的代码必须回答的问题是:饼图是否一分为二?也就是说,从圆的一侧到另一侧是否存在一条完美的直线,将其对称地一分为二? 你需要输出truthy值,如果有至少一个平分线和输出falsy如果有没有价值。 在该1 2 3 4示例中,之间有一个等分线4 1,2 3因此输出将是真实的。 但是对于输入而言1 2 3 4 5,没有平分线,因此输出将是虚假的: 其他例子 以其他方式排列数字可能会消除等分线。 例如2 1 3 4→虚假: 如果输入列表中只有一个数字,则饼图不会一分为二。 例如10→虚假: 可能有多个平分线。只要大于零,输出就是真实的。 例如6 6 12 12 12 11 1 12→真实:(这里有3个等分线) 即使平分在视觉上不明显,也可能存在。 例如1000000 1000001→虚假: 例如1000000 1000001 1→真实: (感谢nces.ed.gov生成饼图。) 测试用例 …
43 code-golf  math  arithmetic  combinatorics  decision-problem  code-golf  sequence  number-theory  binary  code-golf  number-theory  set-theory  code-golf  hashing  code-golf  game  card-games  code-golf  ascii-art  code-golf  arithmetic  array-manipulation  jelly  code-golf  string  array-manipulation  code-golf  sorting  code-challenge  code-golf  number  date  binary  code-golf  arithmetic  code-golf  math  number  linear-algebra  polynomials  code-golf  ascii-art  code-golf  grid  decision-problem  code-golf  string  combinatorics  code-golf  string  kolmogorov-complexity  arithmetic  date  code-golf  number  data-structures  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation 

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.