Questions tagged «code-challenge»

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


10
你能走多高?(编码+算法挑战)
现在,每个人都开发了自己的(通常是惊人的)低级编码专业知识,以了解Python到底有多慢?(或者您的语言有多快?)以及Python 到底有多慢(第二部分)?现在是挑战的时候了,这也将扩展您改进算法的能力。 以下代码计算长度为9的列表。列表中的位置i用于i计算计算F和之间的内积时找到至少连续零的次数S。为了精确地做到这一点,它遍历了所有可能F的length n列表S和length 列表n+m-1。 #!/usr/bin/python import itertools import operator n=8 m=n+1 leadingzerocounts = [0]*m for S in itertools.product([-1,1], repeat = n+m-1): for F in itertools.product([-1,1], repeat = n): i = 0 while (i<m and sum(map(operator.mul, F, S[i:i+n])) == 0): leadingzerocounts[i] +=1 i+=1 print leadingzerocounts 输出是 [4587520、1254400、347648、95488、27264、9536、4512、2128、1064] 如果使用此代码将n增加到10、12、14、16、18、20,则它很快变得太慢。 规则 挑战在于给出尽可能大的n的正确输出。仅n的偶数是相关的。 …

17
创建Flood Paint AI
在Flood Paint游戏中,游戏的目标是在尽可能少的回合时间内使整个板成为相同的颜色。 游戏从一个看起来像这样的棋盘开始: 3 3 5 4 1 3 4 1 5 5 1 3 4 1 1 5 2 1 6 5 2 3 4 3 3 4 3 4 4 4 5 5 5 4 1 4 6 2 5 3[3]1 1 6 6 5 5 1 2 …

9
“排序”算法
有一种“排序算法”,有时也称为Stalin排序,在该算法中,为了对列表进行排序,您只需从列表中删除元素,直到其按升序进行排序即可。例如清单 [1, 2, 4, 5, 3, 6, 6] 当使用斯大林排序进行“排序”时 [1, 2, 4, 5, 6, 6] 这三个被删除,因为它故障。 现在显然有许多方法可以删除元素以对列表进行排序。例如,任何少于两个元素的列表都必须进行排序,因此只要盲目地删除足够的元素,我们就可以对列表进行排序。既然是这种情况,我们只在乎斯大林排序可能的最长结果。 您的任务将是获取一个正整数列表,并输出可以通过从原始列表中删除元素而得出的最长排序(递增)列表的长度。那就是找到最长排序的(可能是非连续的)子列表的长度。 排序的列表可以连续多次具有相同的元素。除非程序本身为空,否则不需要支持空列表。 计分 您的答案将根据其可能的最长斯大林排序长度进行评分。程序将被解释为字节序列而不是字符序列,并且它们的顺序将是通过将字节解释为数字而产生的自然顺序。分数越低越好。 这不是代码高尔夫 这是一个简洁的工具,可帮助您对答案进行评分。 测试用例 [1, 2, 4, 5, 3, 6, 6] -> 6 [19, 2] -> 1 [3, 3, 4, 3] -> 3 [10] -> 1 [1, 2, 4, 9] …

21
最长的非重复子串
给定一个字符串作为输入,请找到没有两次或两次以上任何字符的最长连续子字符串。如果有多个这样的子字符串,则可以输出。如果需要,您可以假定输入在可打印的ASCII范围内。 计分 答案将首先按其自身最长的非重复子字符串的长度排序,然后按其总长度排序。对于这两个标准,较低的分数会更好。根据语言的不同,这可能会感觉像是带有源代码限制的代码高尔夫挑战。 琐事 在某些语言中,得分为1(x)或2(x)(脑筋和其他图腾焦油)非常容易,但是在其他语言中,最小化最长的非重复子字符串是一个挑战。在Haskell中获得2分很开心,因此,我鼓励您寻找有趣的语言。 测试用例 "Good morning, Green orb!" -> "ing, Gre" "fffffffffff" -> "f" "oiiiiioiiii" -> "io", "oi" "1234567890" -> "1234567890" "11122324455" -> "324" 计分提交 您可以使用以下代码片段为程序评分: 显示代码段 input.addEventListener("input", change); // note: intentionally verbose :) function isUnique(str) { var maxCount = 0; var counts = {}; for(var i = …

24
这是Loeschian号码吗?
正整数k是Loeschian数,如果 k可以表示i*i + j*j + i*j为i,j整数。 例如,第一正Loeschian号码为:1(i=1,j=0); 3(i=j=1); 4(i=2,j=0); 7(i=2,j=1); 9(i=-3,j=3); ...注意i,j对于给定k的不是唯一的。例如,9也可以与产生的i=3,j=0。 这些数字的其他等效特征是: k可以表示i*i + j*j + i*j为i,j非负整数。(对于每对整数i,j都有一对给出相同值的非负整数k) 有一组k连续的六边形在六边形网格上形成网格化(请参见k = 4和的插图k = 7)。(由于这个属性,这些数字可在移动蜂窝通信网络中找到应用。) 在序列的OEIS页面中查看更多特征。 挑战 给定一个正整数,如果它是Loeschian数,则输出真实结果,否则,则输出虚假结果。 程序或函数应处理(例如不到一分钟)最多达1000或数据类型限制的输入。 代码高尔夫。最短的胜利。 测试用例 以下数字应输出真实结果: 1, 4, 7, 12, 13, 108, 109, 192, 516, 999 以下数字应输出虚假结果: 2, 5, 10, 42, 101, 102, 128, 150, 501, …
33 code-golf  math  number  number-theory  decision-problem  code-golf  kolmogorov-complexity  code-golf  sequence  code-golf  path-finding  chess  code-golf  string  ascii-art  kolmogorov-complexity  code-golf  math  arithmetic  code-golf  code-golf  number  code-golf  geometry  code-golf  math  code-golf  code-golf  kolmogorov-complexity  alphabet  code-golf  regular-expression  hexagonal-grid  king-of-the-hill  path-finding  java  code-golf  string  sorting  code-golf  string  grid  code-challenge  compression  code-golf  random  code-golf  sequence  arithmetic  code-golf  number  grid  tiling  code-golf  tips  code-golf  sequence  number-theory  recursion  code-golf  string  grid  code-golf  math  number  combinatorics  permutations  string  code-challenge  code-golf  sequence  number-theory  subsequence 

13
编程二分法(从字面上看)
考虑一个用简单的英语写的问题,该问题的答案包含两个相当准确(但可能很聪明)的单词或短语,可以用单词“和”分隔: 问:硬币的两个面是什么?-答:头和尾 问:什么是最好的旅行方式?答:飞机和喷气背包 问:为什么乌鸦像写字台?答:因为两者都有一个“ b”,两个都不都有“ n” 目标 编写一个程序,该程序在正常运行时会输出这样的问题。 当从第二个字符开始从程序中删除所有其他字符并重新运行结果时,输出应为答案中“ and” 左边的任何内容。 当从第一个字符开始从程序中删除所有其他字符并重新运行结果时,输出应为答案中“ and” 右边的任何内容。 (“和”本身不会输出。) 例 如果程序是 A1B2C3D4E5F6G7H8I9 它的输出是 What are the two sides of a coin? 那么的输出ABCDEFGHI应该为heads和的输出123456789应该为tails。 有关问答的规则 您可以使用我的示例问题,但我鼓励您自己回答。 问题和两个答案部分: 必须全部不同 应该是常用的语法有意义的英语 只能包含可打印的ASCII(十六进制20至7E) 理想情况下,问题应大写并标点(但不一定需要答案)。 问题必须至少包含30个字符,并且熵大于或等于3.5。(输入字符串,点击计算,寻找最后的H(X)。) 两个答案部分(不包括[space]and[space]它们之间的部分)必须至少包含5个字符,且熵大于或等于2。 单词“和”可能出现在任一答案部分。 有关代码的规则 3个代码段均不能: 包含注释或编译器/解释器传统上忽略的任何其他内容(不必担心添加一两个多余的分号,但是如果您认为它是注释,则可能是) 在执行中退出程序 该代码可以包含任何字符,包括Unicode和不可打印的ASCII。 它可能具有奇数或偶数个字符。 输出将输出到stdout或文件或任何看起来合理的文件。没有输入。 计分 由于我不想鼓励打高尔夫球的答案,但我想鼓励更多的聪明的答案,因此得分将介于打高尔夫和普及比赛之间: 分数= (upvotes - …

3
不熟练的密码散列[关闭]
本着“ 不熟练C竞赛”的精神,我正在发起不熟练C竞赛。该竞赛的目的是直接实现一些代码,同时在其中隐藏一个邪恶的bug。 比赛 您是在美国间谍机构的IT部门工作的秘密俄罗斯痣。您的美国老板刚刚要求您实施密码哈希算法,以用于加密秘密消息。 您的老板希望您实现以下功能: f: String -> byte[16] 它将密码转换为16字节的数量,适合用作AES密钥。您的老板想要一个安全的功能,在这种情况下,这意味着不同的密码字符串应以压倒性的可能性生成不同的结果。例如,返回输入的md5哈希将是的简单实现f。 当然,您在俄罗斯间谍机构中的真正上司会希望您颠覆这一过程。您的任务是实现f使俄罗斯人可以解密使用所返回的密钥加密的所有秘密消息f。 为此,必须实现f以使其仅返回2 ^ 128个可能输出的一小部分。特别是,您f必须最多返回2 ^ 16个不同的结果,以便俄罗斯人可以轻松地用蛮力搜索想要解密的每条加密消息的正确密钥。 但是请记住,间谍活动会判处死刑。为了不被发现,您的函数f必须至少产生2 ^ 8个不同的结果,以便对的几个输出进行粗略的检查f就不可能发现重复的结果。 最重要的是,您引入的限制范围的代码f必须看起来是无意的,而不是故意的。 如果您曾经被拖入法庭,那么对于您是故意还是无意中引入了该错误,一定存在一些合理的疑问。 评判 我和我招募的其他两个人将对参赛作品进行评判(如果您想评判,请给我发电子邮件)。我将为获奖作品提供200点声望奖励。提交的内容必须在5月1日之前上传。 评审将考虑以下标准: 是否f坚持以规范,即,它不会产生2和2之间^ 8 ^ 16个可能的输出。不要以为这是硬性限制,但是如果您超出范围,我们会扣除分数。 该错误貌似是非故意错误的结果吗? f外观的输出是否随机? 您实施的时间越短f越好。 您实施的f越清晰,效果越好。 笔记 您可以使用任何语言来实现您的代码。您正试图将错误隐藏起来,因此不建议使用混淆的代码。 您可能想看看以前的一些欠人手C比赛获胜者,以了解提交优秀作品的原因。 输入字符串将是可打印的ascii(包括32至126)。如果需要,可以假定一个合理的最大长度。

4
图像之战
恭喜@kuroineko获得最佳参赛资格,并从@TheBestOne获得200赏金(出色的体育精神!)。 在对立程序之前,编写一个程序以使图像尽可能多地着色。 简要规则 您的程序将得到一个图像,您的颜色和整数N。 每回合,其他程序都会向您发送像素更新,并要求您进行N次更新。 您可以更新颜色像素旁边的任何白色像素。 添加最多像素的程序将获胜。 详细规则 您的程序将获得一个PNG图像文件名,原色和数字N。数字N是您的程序每转可着色的最大像素数。 例: MyProg arena.png (255,0,0) 30 输入图像将是一个矩形,其边长在20到1000像素之间。它由黑色,白色和彩色像素组成。您的程序可以选择一系列白色像素作为自己的颜色,条件是每个新像素必须至少具有自己颜色的四个相邻像素之一。图像最初将至少具有您的颜色的一个像素。它还可能具有未分配任何程序的颜色像素。不使用Alpha通道。 您的目标是阻止对手并将您的颜色写入尽可能多的像素。 程序每转一圈,将在STDIN上接受1条或更多条消息行,并在STDOUT上写一条由像素坐标组成的行。请记住,将STDOUT分配为无缓冲,或者每转一次刷新STDOUT缓冲区。 每个回合中被叫的玩家顺序将被随机分配。这意味着对手(或您的程序)可能连续2回合。 将向您的程序发送colour (N,N,N) chose X,Y X,Y ... X,Y描述播放器程序所填充像素的信息消息。如果玩家不采取任何行动或没有采取有效行动,则不会向您发送有关该玩家采取行动的消息。您的程序还将收到一条有关您自己接受的动作的消息(如果您已指定至少一个有效的动作)。像素0,0位于图像的左上角。 收到时pick pixels,您的程序将X,Y X,Y ... X,Y最多输出N个像素(允许只包含'\ n'的空字符串)。像素必须按绘制顺序。如果一个像素无效,它将被忽略并且不会出现在玩家报告中。您的程序在启动后有2秒钟的初始化时间,但是每回合只有0.1秒的时间来回答并回答,否则它将错过该回合。0.1秒后发送的像素更新将记录故障。5次故障后,您的程序将被暂停,并且不会发送更新或pick pixels请求。 当评委程序从每个非暂停的播放器程序中收到一个空的或无效的像素选择时,图像将被视为完整图像,并且程序将收到“退出”消息。程序必须在收到“退出”之后终止。 计分 图像完成后,法官将给分数打分。您的得分将是您更新的像素数除以该回合的平均像素捕获数(以百分比表示)。 播放器添加到图像的像素数为A。所有 P播放器添加的像素总数为T。 avg = T/P score = 100*A/avg 发布分数 给出了一个参考对手“ The Blob”。对于每个答案,请为机器人标记名称,语言和相对于参考对手的得分(竞技场1至4的平均值)。您的其中一场战斗的图片或动画也会很好。获胜者是与参考机器人相比得分最高的程序。 如果Blob证明太容易被击败,我可以加一个更强的参考对手进行第二轮比赛。 您可能还想尝试4个或更多播放器程序。您还可以针对其他机器人作为答案发布的机器人进行测试。 法官 …

8
切割金链
旅行者需要在城外的一家酒店住宿n天。他没有现金了,他的信用卡已过期。但是他有一个带有n个链接的金链。 这家酒店的规定是居民应每天早晨支付租金。旅行者与经理达成协议,每天支付金链的一个链接。但是经理还要求旅行者在每天付款时,对链条的损坏应尽可能少。换句话说,他必须提出一种解决方案,以减少尽可能少的链接。 剪切链接将创建三个子链:一个仅包含剪切链接的子链,而在每一侧各包含一个。例如,剪切长度为8的链的第三个链接将创建长度为[2,1,5]的子链。经理很高兴进行更改,因此旅行者可以在第一天使用长度为1的链条进行支付,然后在第二天使用长度为2的链条进行支付,从而收回第一条链条。 您的代码应输入长度n,并输出链接列表以切出最小长度。 规则: n是大于0的整数。 您可以对链接使用基于0或基于1的索引。 对于某些数字,解决方案不是唯一的。例如,如果n = 15两个[3, 8]和[4, 8]是有效的输出。 您可以返回列表,也可以使用任何合理的分隔符进行打印。 这是code-golf,因此以字节为单位的最短代码获胜。 测试用例: Input Output (1-indexed) 1 [] 3 [1] 7 [3] 15 [3, 8] 149 [6, 17, 38, 79] 详细的例子 对于n = 15,剪切链接3和8会得到length的子链[2, 1, 4, 1, 7]。这是一个有效的解决方案,因为: 1 = 1 2 = 2 3 = 1+2 4 …

25
我在想一个数字(警察线)
强盗的线程在这里 在这个警察强盗挑战中,警察会想到一个正整数。然后,他们将编写一个程序或函数,当提供数字作为输入时输出一个值,而对于所有其他正整数输入则输出另一个值。然后,警察会在答案中显示该程序,并将数字保密。强盗可以通过找到数字来破解答案。 要注意的是:这不是 代码高尔夫,而是您的分数将是秘密数字,分数越低越好。显然,在强盗仍在尝试寻找分数时,您无法透露分数。发布一周后仍未破解的答案可能会显示其分数并标记为安全。安全答案无法破解。 可能不言而喻,但您应该能够为答案打分。那就是您应该确切知道决策机器接受什么值。仅仅知道有一个是不够的。 密码功能的使用 与大多数警察和强盗要求您不要使用加密功能的挑战不同,此挑战不仅完全允许他们使用,而且鼓励他们使用。只要您想赢,就可以以任何方式自由创建答案。话虽如此,这里也欢迎使用其他方法的答案。挑战的目标是获胜,只要您不作弊,就不会有什么失败。

3
OOP:面向对象的编程
似乎不太适合代码打高尔夫球的鲜为人知的编程范例之一是面向重叠编程(OOP) *。当编写部分相同的代码时,只需将相同的部分重叠并以某种方式记住两条原始代码行的开头,就可以节省许多字节。您的任务是编写两个重叠的程序或函数compress,decompress并遵循以下规范: *请不要在生产代码中使用。 compress compress以任何方便的格式获取两个字符串,并尽可能地将它们重叠。即s返回的字符串的长度最小,这样两个输入字符串都是的子字符串s。此外,返回一些标识两个字符串的开始和结束索引的输出。 示例:(具体的IO格式由您决定) compress("abcd", "deab") -> "deabcd" ((2,5),(0,3)) compress("abcd", "bc") -> "abcd" ((0,3),(1,2)) compress("abc", "def") -> "abcdef" ((0,2),(3,5)) or "defabc" ((3,5),(0,2)) decompress decompress计算的反函数compress,给定一个字符串和两个开始和结束索引(以您的返回格式compress),返回两个原始字符串。您只需要处理有效的输入。以下等式适用于所有字符串s1,s2: (s1, s2) == decompress (compress (s1, s2)) 示例:(compress示例的反向) decompress "deabcd" ((2,5),(0,3)) -> "abcd" "deab" decompress "abcd" ((0,3),(1,2)) -> "abcd" "bc" decompress "abcdef" ((0,2),(3,5)) -> …

16
这是字节的挑战
我需要别再想笨拙的名字了 您的任务是创建尽可能多的代码片段(内置输入和输出的程序),函数或完整程序,以对您所用语言的整数数组版本进行升序排序,但是对于每个程序,只允许使用使用以前的程序中未使用过的ASCII字符(如果直接将其指定为非ASCII,则使用您的语言的代码页)。 这是一个示例答案(用换行符分隔的单独程序): Derp ASdFGHJKLAAA qwEEERtyRty 在这种(虚构的语言),我的第一个答案是Derp,它使用了D,e,r和p。在第二个程序中,不允许再次使用这些字符,但是我可以重用任意多个字符。与第三个程序相同,依此类推。 每个程序必须采用整数数组,因此类似以下内容(有关有效的输入/输出样式,请参见输入/输出示例): [3 4 -2 5 7 196 -44 -2] 并且它必须以升序将数组中的项目输出为数组: [-44 -2 -2 3 4 5 7 196] 您的分数将是提交的总数。如果有平局,则最低字节数(代码中字节数最少)获胜! 程序规则: 所有提交必须以一种语言版本(so Python 2 != Python 3)正确运行。 您的提交可以是摘要,功能或完整程序。您甚至可以混合和匹配它们-但是,您必须说出哪个是哪个,并提供工作提交的链接。 如果可能,请提供所有解决方案的在线链接。 所有提交都必须以数组(或用任何字符分隔的字符串)作为输入,并输出排序后的数组(以您语言的数组形式或- {any character}分隔的字符串)。 您不得使用ASCII(或您的语言的代码页)以外的任何字符。 例如,这些是有效的输入/输出: [1 2 3 4] (Clojure style arrays) [1, 2, 3, …

9
一百个密码
我有一百个保险库,每个保险库都在另一个保险库中。每个保管库都有一个密码,该密码由一个数字组成。 95 43 81 89 56 89 57 67 7 45 34 34 78 88 14 40 81 23 26 78 46 8 96 11 28 3 74 6 23 89 54 37 6 99 45 1 45 87 80 12 92 20 49 72 9 92 15 76 13 …

2
在BrainF ***中实现QuickSort [关闭]
正如在堆栈溢出休息室中所讨论的: 如果您无法以您最不了解的任何语言来实现en.wikipedia.org/wiki/Quicksort给出的Quicksort算法,则可能需要考虑其他职业。@sbi 但SBI还指出,也许BrainF ***是个例外。 因此,这是一个难题/挑战:在BrainF ***中实现QuickSort。实施必须 被此和/或此处的解释器解释(对于大型脚本) 实施Wikipedia上描述的算法-如果可能的话,就地进行排序 排序以下整数列表:[0,4,6,4,2,3,9,2,3,6,5,3]并打印结果

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.