Questions tagged «code-challenge»

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

3
猜单词(又名Lingo)
这项挑战的目标是编写一个能够以尽可能少的尝试次数猜出一个单词的程序。它基于Lingo电视节目(http://en.wikipedia.org/wiki/Lingo_(US_game_show))的概念。 规则 给定单词长度作为其命令行上的第一个参数传递,播放器程序通过在其标准输出上写一个猜测,然后跟一个字符来进行五次猜测该词的尝试\n。 进行猜测之后,程序会在其标准输入上接收一个字符串,并在其后跟随一个\n字符。 该字符串与要猜测的单词具有相同的长度,并且由以下字符序列组成: X:表示要猜测的单词中不存在给定字母 ?:表示给定字母出现在要猜测的单词中,但在另一个位置 O:表示此位置的字母已正确猜到 例如,如果要猜测的单词是dents,并且程序发送该单词dozes,它将接收到,OXX?O因为d和s是正确的,e放错了位置o并且z不存在。 请注意,如果在猜测尝试中出现的字母次数比在猜测单词中出现的次数多,它将不会被标记为?和O在猜测单词中出现字母的次数以及次数要多。例如,如果要猜测的单词是cozies且程序发送tosses,则它将接收,XOXXOO因为只有一个s要定位。 单词是从英语单词列表中选择的。如果程序发送的单词不是正确长度的有效单词,则该尝试将被视为自动失败,并且仅X返回。 播放器程序应假定wordlist.txt当前工作目录中存在一个名为且每行包含一个单词的文件,并且可以根据需要读取。 猜测只能由字母小写字母([a-z])组成。 该程序不允许其他网络或文件操作。 当O返回仅包含字符串的字符串时,或者在程序尝试5次且无法猜出单词后,游戏结束。 计分 游戏得分由以下公式给出: score = 100 * (6 - number_of_attempts) 因此,如果在第一次尝试中正确猜出了该单词,则会得到500分。最后一次尝试可获得100分。 猜不出这个单词会得到零分。 坑 将通过尝试让播放器程序猜测每个单词长度(包括4和13个字符)在内的100个随机单词来评估播放器程序。 随机单词选择将事先完成,因此所有条目都必须猜测相同的单词。 获胜的程序和被接受的答案将是得分最高的程序。 程序将使用https://github.com/noirotm/lingo上的代码在Ubuntu虚拟机中运行。只要提供了编译和/或运行它们的合理说明,就可以接受任何语言的实现。 我在git储存库中提供了一些使用ruby的测试实现,可以从中获得启发。 该问题将定期用已发布答案的排名更新,以便挑战者可以改善他们的条目。 官方最终评估将于7月1日进行。 更新资料 现在,条目可以假定存在wordlistN.txt文件,以加快读取N的当前单词长度(包括4和13)的单词列表的速度。 例如,有一个wordlist4.txt文件包含所有四个字母词,并wordlist10.txt包含所有十个字母词,依此类推。 第一轮结果 在2014年7月1日,已提交了三个条目,结果如下: 4 5 6 7 8 9 10 11 12 13 Total …

3
Brainfuck中的按位运算符
您的任务是为以下每个二进制运算符创建一个Brainfuck程序。每个程序应从输入中获取一个或两个8位数字(A和B)并计算指定的运算: A XOR B A AND B A OR B A Shifted Left by 1 (circular shift) NOT A 您不必全部实施5。得分的计算方式为: #totalCharacters + {4000 * #problemsNotCompleted} 因此,有效分数是从零(最佳)到20,000(未完成)。 我不在乎您将结果存储在哪里,也不管您是否保留输入。假设8位单元以及仅在右侧需要的空单元数。 您可能会认为数字已经在最适合您的任何内存位置中,因此您无需担心IO操作。
13 code-golf  binary  brainfuck  code-golf  code-golf  ascii-art  random  code-golf  code-golf  code-challenge  sorting  code-golf  code-challenge  java  code-golf  statistics  code-golf  code-challenge  fastest-code  code-golf  math  code-golf  math  kolmogorov-complexity  code-golf  code-golf  array-manipulation  combinatorics  code-golf  kolmogorov-complexity  popularity-contest  underhanded  code-golf  math  floating-point  code-golf  interpreter  code-golf  music  code-golf  code-golf  cryptography  code-challenge  scrabble  code-golf  code-challenge  popularity-contest  quine  code-golf  quine  cryptography  code-golf  kolmogorov-complexity  code-golf  printable-ascii  code-golf  chess  code-golf  math  number-theory  code-challenge  c  code-golf  random  popularity-contest  hello-world  code-shuffleboard  code-golf  compression  grammars  code-golf  tips  code-golf  sequence  code-golf  string  code-challenge  sorting  permutations  code-golf  string  code-challenge  optimization  code-golf  interpreter  code-challenge  string  code-golf  math  number  fibonacci  string  compression  c#  code-golf  chemistry  popularity-contest  math  c  c++  java  code-golf  math  function  code-golf  complex-numbers  code-golf  geometry 

10
歌曲编码-用您选择的编程语言表示音乐歌词[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 6年前关闭。 用您选择的语言编写一个程序,当您阅读该程序时,便是歌曲的歌词。它必须是有效的程序,可以被编译和运行且没有错误。从技术上讲,您可以在屏幕上打印所有歌词,但建议您使用样式,并尽可能避免使用字符串文字。 鉴于这本身就很困难,因此您可以编写一段样板代码,而这部分代码并不构成歌词可读性。但是,一旦开始读取必须作为歌曲歌词的代码块,您就无法在歌曲完成之前中断它。您可以用注释指示歌曲代码的开头和结尾。请同时指定歌词本身,就像阅读代码一样。只要您与所写内容的相距不远,您就可以对自己的解释“持开放态度”,否则将花费您宝贵的时间。 允许使用部分歌曲的歌词,尽管将整首歌中的单词包含在其中会获得双倍积分。评审分为3类: 10分-创意 10分-歌曲难度 20分-该歌曲在代码中的表示形式。 对于每次提交,我都会在下面的评论中给您您的分数。如果您编辑答案,请给我一个注释指示符,然后我将对其进行重新评估。但是,为了公平起见,每次重新评估都会从您的总得分中减去2分。 示例如下: public class Song { public String play() { // Song begin try { if(this instanceof TheRealLife || this instanceof JustFantasy) { throw new InALandSlide(); } } catch (InALandSlide e) { } return "No \"FromReality\""; …

4
忙脑海狸
编写一个不超过256个字符的Brainfuck程序,该程序将采取尽可能多的步骤,但不会无限循环。该程序可能不接受任何输入。 进一步来说: 假设右边有无限多个单元格。 一<当在左侧的单元格什么都不做。 阿-当单元值是零个集细胞255。 这些指令+-<>.在执行时均视为一步。 当一个[或]遇到,他会成为一个步骤。然而,如果该条件为真,并控制流程跳到,相应的]或[不不再次算作一个步骤。 采取最多步骤的解决方案将获胜。 如果您的解决方案中存在某种模式,则可以提供一个功能,以了解类似长度的程序n将执行多少步,但不是必须的。 要计算指令,可以使用此修改后的解释器: 例: ++[-] 遇到的指令是++[-]-],程序运行了7个步骤。

2
BlackJack KOTH比赛
黑杰克 当我为最初的KOTH挑战进行爆炸时,我想提出另一个挑战。对我而言,这些AI挑战的乐趣在于改进了一个相对简单的机器人,该机器人巧妙地玩了非常简单的游戏。由于纸牌游戏的概率性质,我认为二十一点就像TPD一样可能是一个有趣的KOTH游戏。 所有规则均源自该网站对BlackJack鞋子的描述 卡片和套牌规则 机器人在四(4)名竞争对手和一(1)名经销商的牌桌上玩 所有玩家和发牌者都共用一(1)张鞋(洗过的甲板),直到用尽为止,此时将添加新的随机洗过的甲板,并继续比赛。目前,尚未通知机器人已添加新平台。如果缺少此功能会引起足够的困扰/麻烦,则可以添加此类通知。 每回合买入10张,免费提供卡 完美/理想手牌得分为21 所有面部卡的值为10 所有数字卡都值钱 ace值11或1。这将由框架自动处理,而不是由自动程序处理。 按照规则,所有玩家的卡面朝上并可见。经销商的一张牌面朝下,另一张牌面朝上。 计分 得分超过21且使用ace作为11迫使ace的价值降低到1 超过21的分数不能强制低于21“破坏”机器人的阈值 经销商 庄家抽牌直到他破产或得分超过17 ,这时他被迫站立 博彩和筹码 在每一轮的开始,一个买入的10充电,所以有最低持股比例的10,最小下注 1 注 -赌注是下注参数的绝对值,所以也懒得尝试下注。 无法负担买入的机器人被从比赛中删除 下注时,机器人不能下注超过其拥有的筹码 如果有可能下注,则将筹码下注从机器人中删除并添加到赌注中 赢得下注将使机器人获得2倍筹码下注。但是,由于从筹码中减去了赌注,因此该机器人收支平衡,然后赢得了该赌注的1倍。 机器人只有在其分数大于发牌人的分数时才能赢得赌注 游戏性细目 单手 游戏开始时,每位玩家都会迭代发一张牌,并从其筹码中减去10美元的买入费/最低赌注。 经销商抽奖 第二次过关,并且另一张卡发给所有玩家。 经销商抽奖 然后(按照处理它们的顺序)按照“程序员界面”部分中的说明执行每个漫游器,并且必须移动或站立。博彩被视为举动。注意,下注不会影响机器人进行进一步移动的能力。很有可能先下注然后下一张牌,也有可能在出局前先下多张牌并下注。 当所有机器人停止运行或站起来时,发牌人的游戏极限达到17 然后将机器人的分数与庄家的分数进行比较,赌注获胜和输掉 一轮 被认为构成五(5)手。在两手之间,对参赛者列表进行排序以删除玩家,然后进行进一步处理,以确保所有机器人都玩相同数量的手(这一事实规定,参赛人数不会在四人桌之间平均分配) )。 程序员的界面和法律举措 如CardShark文件中所述: # DOCUMENTATION # INPUT SPECIFICATION # $ ./foo.bar …

1
用您的语言实施PCRE。
注意:自己尝试一下之后,我很快意识到这是一个错误。因此,我将对规则进行一些修改。 所需的最低功能: 字符类(.,\w,\W等) 乘法器(+,*,和?) 简单捕获组 您面临的挑战是在满足以下条件的情况下以您选择的语言实施PCRE: 您不得以任何方式使用语言的本机RegEx工具。您也不能使用第三方RegEx库。 您的输入内容应实现PCRE规范中的大部分内容。尽可能。 您的程序应接受以下两行作为输入: 正则表达式 输入要匹配的字符串 您的程序应在其输出中指出: RegEx是否与输入字符串中的任何位置匹配 任何捕获组的结果 获胜者将是实现尽可能多规范的作品。尽可能。根据我的判断,如果平局,获胜者将是最具创造力的作品。 编辑:澄清一些事情,这是一些输入和预期输出的示例: 输入: ^ \ s *(\ w +)$ 你好 输出: 符合条件:是 第1组:“你好” 输入: (\ w +)@(\ w +)(?:\。com | \ .net) sam@test.net 输出: 符合条件:是 第1组:“ sam” 第二组:“测试”

5
释放二叉树
因此,在阅读一些基本的计算机科学概念之前。 二进制树是动态分配的结构(通常用于有序存储)。 由于其性质,对二叉树的遍历通常是递归的。 这是因为当有两种循环方式时,线性遍历(通过循环)是不自然的。 递归:这意味着将调用自身的函数。 在老式语言中,内存管理需要手动进行内存管理。 手册:意味着您必须自己做。 当您执行手动内存管理时,您需要实际要求底层系统释放树的每个成员。 释放:将内存恢复到全局状态,以便可以重复使用,并且不会耗尽内存。 释放:这是通过调用函数free()并将要恢复的指针传递给函数来完成的。 指针:它像一个虚拟的棍子。最后是记忆。当您请求内存时,您会得到一个具有内存的指针(虚拟棒)。完成后,您将归还指针(虚拟棒)。 递归解决方案: freeTree(Node* node) { freeTree(node->left); freeTree(node->right); free(node); } 然后问题是递归意味着您要重复调用同一函数。这会增加堆栈。增加堆栈会占用更多内存。释放树的原因是,您希望使用更多的内存来回存是适得其反的(即使您确实收回了内存的两个位)。 最后的问题是: 因此,问题集中在将上述递归版本转换为线性解决方案(这样您就不必使用内存了)。 给出节点类型 typedef struct Node Node; struct Node { Node* left; Node* right; }; 编写函数以释放这些节点的树。 限制条件: 无法使用递归(甚至不能间接使用) 无法分配任何动态空间进行跟踪。 注意有一个O(n)解 优胜者: 最佳复杂性。 抢七局:首先提交 抢七局:最少的字符。

2
计数广义多胺
这项挑战将使您在缓冲正方形平铺上计算伪多边形。 我认为该序列在OEIS上尚不存在,因此在为该序列计算尽可能多的项方面存在挑战。 更新:这现在在OEIS上显示为A309159:n个单元格的缓冲正方形平铺上的广义多形形式的数量。 定义 缓冲正方形平铺是由等边三角形和正方形组成的平面的半规则平铺。 缓冲正方形瓷砖上的伪多边形是通过将这些三角形和正方形沿着它们的共享边连接在一起而构造的平面图,类似于多米诺骨牌。这是一个六单元格和八单元格伪多边形的示例: 例子 因为n = 1有两个1单元格伪多边形,即正方形和三角形: 因为n = 2有两个2单元格伪多边形,即一个带有一个三角形的正方形和两个三角形。 因为n = 3有四个3单元伪多态。 挑战 挑战的目标是按此顺序计算尽可能多的项 2, 2, 4, ...且第n个项是直至旋转和反射的n单元伪多形式的数量。 只要您愿意,就可以运行您的代码。挑战的胜者将是发布序列中最多术语以及其代码的用户。如果两个用户发布相同数量的条款,则以最早发布最新条款的人为准。 (一旦有足够的已知术语证明该序列在OEIS中尚不存在,我将在OEIS中创建一个条目,并根据需要将投稿人列出为合著者。)

4
在python的128个字节内获得最低的pylint分数
pylint没有分数的下限,它将给您的代码。它使用以下指标对代码进行评分,最高分为10: 10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) 使用python 3.6,尝试编写一个程序: 从命令行运行时输出“ Hello World”(即python script.py),没有其他输出。 在pylint默认设置下,从中获取最低的得分(例如pylint script.py) 严格小于或等于128个字节。

10
多语言挑战
在过去(最近)遇到了多语种挑战之后,我们经历了很多有趣的事情,那么,以两种语言输出的挑战又如何呢? 您的答案需要接受布尔输入b并输出文本"true"或"false"。当以另一种语言运行,"waar"或运行and的"onwaar"任何其他翻译时,需要输出相同的代码。truefalse 输入值 输入是明显可区分的真假。允许的实际值为T / F,位,int或(空)字符串。 提交的所有部分的输入都必须相同。 输出量 输出可以由函数返回,写入STDOUT,放置在弹出窗口中,3D打印和邮寄等。 输出需要代表的状态b。因此,“真实的”需要输出“ true”,“ waar” ...和“ falsey”应导致“ false”,“ onwaar”等。 不同的语言可能使用不同的输出方法。 使用的语言 您的输出之一必须是"true"和"false"。 针对此挑战,不同版本的编程语言被视为不同的语言。 人类语言的不同方言被视为应对这一挑战的不同语言。 您可以将多语种扩展为两种以上的编程语言。每种编程语言都需要输出不同的人类语言。 包含最多语言的答案将宣布为获胜者。绑定时,将考虑字节数。

13
在不使用(m)个字母的情况下输出ŋarâþcrîþ字母歌曲
您的目标是编写一个不带任何输入并输出以下文本的程序: ca e na ŋa va o sa; þa ša ra la ła. ma a pa fa ga ta ča; în ja i da ða. ar ħo ên ôn ân uħo; carþ taŋ neŋ es nem. elo cenvos. 但是有一个陷阱:L您的来源中的每个字母(Unicode中一般类别以开头的任何字符)都会受到20个字符的罚款!(供参考,要打印的文本有81个字母。) 下面的Perl 6代码具有145个字节和84个字母,因此得分为1,845: say "ca e na ŋa va o sa; þa …

21
最长递增子串
给定一个正整数列表,编写代码以找到不断增加的最长连续子列表的长度(并非严格如此)。那是最长的子列表,因此每个元素都大于或等于最后一个。 例如,如果输入是: [ 1 ,1 ,2 ,1 ,1 ,4 ,5 ,3 ,2 ,1 ,1 ][1,1,2,1,1,4,5,3,2,1,1][1,1,2,1,1,4,5,3,2,1,1] 增长子列表将是,因此您将输出。[ 1 ,1 ,4 ,5 ][1,1,4,5][1,1,4,5]444 通过将其来源作为字节列表,然后找到该列表中最长的递增子列表的长度,可以对您的答案进行评分。得分较低是目标。为了减少总字节数较少的程序,打破了联系。

10
高尔夫图释
介绍 你今日(启发挑战这一挑战)是写了一些片段,功能或完整程序的每个输出的各种ASCII表情的,不重复使用的字符。 挑战 此挑战的有效ascii表情符号列表在此处以及本文底部的代码块中。 每个摘要应在您提交的文件中单独放置一行。 您只能对所有摘要使用一种语言。 每个代码段都必须输出到stdout或返回一个字符串,其中包含表情符号和可选的尾随新行,而没有其他内容。 您不能在所有代码片段中多次使用任何字符,但是可以在一个代码片段中多次使用一个字符。 您不得在任何代码段中使用不在语言代码页中的任何字符(如果您的语言未使用自定义代码页,则不得使用ascii)。换句话说,您只能使用一个字节编码的字符。 任何代码段都不能接受任何输入。 不允许出现标准漏洞。 您的分数就是在上面的文本文件中每个单独打印不同的ascii表情符号的唯一代码片段的数量。 最高分获胜! 祝好运! 允许的图释,以空格分隔: :-) :) :-] :] :-3 :3 :-> :> 8-) 8) :-} :} :o) :c) :^) =] =) :-D :D 8-D 8D x-D xD X-D XD =D =3 B^D :-)) :-( :( :-c :c :-< :< …

11
平衡的零一编码
任务 A-Z使用您自己喜欢的方案,仅使用零和一来对完全由大写字母()组成的字符串进行编码。但是规则不是那么简单! 规则 您的程序/函数必须正确处理长度为8的任何有效输入字符串。 所有输入的结果长度必须相同。 对于不同的输入,结果必须是不同的。 结果必须尽可能短。 结果必须为零一平衡(具有与零相似的数目)。他们不必相等(即完全平衡),但是您的分数将因此受到惩罚。 您不必提供解码您的编码的程序/功能。 输入输出 您可以决定接受任何一组26个不同的可打印ASCII字符代替A-Z。 您可以决定输出任意一对不同的可打印ASCII字符来代替0和1。 您不允许输出整数而不是位字符串,因为它可能有前导零,并且不清楚您是否确实满足规则2。 如果决定偏离默认值(A-Z输入和01输出),则必须在提交中指定输入/输出字符集。 计分 基本分数:代码大小,如果程序为空,则为1。 罚则 长度处罚:相乘 1.5 ** (encoded length - 42) 矮个没有奖金。42是字母大小为26的8长度字符串的完美平衡编码的最小长度。 不平衡的惩罚:乘以2 ** max(abs(ones - zeros) for every valid input of length 8),其中ones和zeros分别是每个输出中1和0的计数。 您的提交必须显示最坏情况的示例(输入/输出)或惩罚值的理论解释。 最低分获胜。 提交示例 假设的esolang,0字节,得分74733.8906 这是一个假设的esolang,其中一个空程序以二进制形式打印输入字符的所有ASCII码。 例如,如果您提供AAAAAAAA输入,程序将1000001连续打印8次,即10000011000001100000110000011000001100000110000011000001。 输入的字母选择为CEFGIJKLMNQRSTUVXYZabcdefh。这样,所有字符都将转换为二进制的七位数字,并且每个字符的零一计数仅相差一个(转换为二进制时,它们全部具有三个1和四个0,反之亦然)。 输出长度始终为56,最坏情况下的不平衡发生在输入上,如CCCCCCCC,其中零比1多出现8次。 因此,此提交的分数是1.5 ** (56 - 42) …

5
一举两得
正如我们在这个问题中看到的那样,可以用广义Minesweeper的简单连接词来表示复杂的逻辑语句。但是,广义扫雷器仍有冗余。 为了避免这些冗余,我们定义了一个名为“ Generalized-1 Minesweeper”的新游戏。 Generalized-1 Minesweeper是在任意图形上播放的Minesweeper版本。该图具有两种类型的顶点,即“指示器”或“值”。值可以是开或关(地雷或哑巴),但玩家不知道其状态。指示器会告诉您,一个相邻的电池正好在(地雷)上。指标本身不算地雷。 例如,下面的通用扫雷板告诉我们,单元格A和B要么都是地雷,要么都不是地雷。 (在图中,指示器以灰色标记,而值则为白色) 与普通的扫雷器不同,在常规的扫雷器中,单击关闭的值即可显示指标,而在通用扫雷器中则没有这种机制。玩家只需确定图表的哪些状态可以满足其指标。 您的目标是制作一辆2Generalized-1扫雷车。您将在Generalized-1 Minesweeper中构建一个结构,以便有8个特定的像元,其所有可能的值配置都恰好有两个像元。这意味着它的行为与2传统扫雷器的行为完全相同。在编写解决方案时,您不应该在意价值单元格的具体价值。(在回答H.PWiz的问题时,允许某些值单元可以从状态中推论得出) 计分 您的答案将由最终图形中的顶点数减去8(对于8个输入)得到评分,得分越低越好。如果此标准中有两个答案,则平局决胜局将为边数。

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.