Questions tagged «code-challenge»

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

30
等等,这是什么语言?
最近,我很高兴编写了一个Haskell程序,该程序可以检测到NegativeLiterals扩展是否被使用。我想出了以下几点: data B=B{u::Integer} instance Num B where{fromInteger=B;negate _=B 1} main=print$1==u(-1) 在线尝试! 它将True正常打印,False否则打印。 现在,我的工作非常有趣,我将挑战扩展到了所有人。您还可以破解其他哪些Haskell语言扩展? 规则 要破解特定的语言扩展,您必须编写一个Haskell程序,该程序可以同时编译有无语言扩展(警告很好),并在使用该语言扩展运行并关闭时输出两个不同的非错误值(通过将No前缀添加到语言扩展)。这样,上面的代码可以简化为: data B=B{u::Integer} instance Num B where{fromInteger=B;negate _=B 1} main=print$u(-1) 打印1和-1。 您用来破解扩展程序的任何方法都必须特定于该扩展程序。如果不允许的话,可能有一些方法可以任意检测启用了哪些编译器标志或LanguageExtensions。您可以启用其他语言扩展或更改编译器优化-O,而无需花费任何字节数。 语言扩展 你无法破解任何语言扩展,没有一个No对应物(例如Haskell98,Haskell2010,Unsafe,Trustworthy,Safe),因为这些不属于上文所列的条款。所有其他语言扩展都是公平的游戏。 计分 您是第一个破解的人,每种语言扩展都会获得一分,而您破解最短(以字节为单位)的每种语言扩展将获得一分。对于第二点,将打破联系以支持较早的提交。分数越高越好 您将无法为首次提交打分,NegativeLiterals或者QuasiQuotes因为我已经破解了它们并将其包含在帖子正文中。但是,您将能够在每一个裂缝中得分最短的地方得分。这是我的裂缝QuasiQuotes import Text.Heredoc main=print[here|here<-""] -- |] 在线尝试!

5
克服集群规模
厌倦了闪存的可靠性,您决定将所有程序存储在这些旧的1,440 KiB软盘之一中。但是,即使复制不到3,000个程序,磁盘也已满。那怎么可能呢?就像您一样,精通代码高尔夫球技术,大多数程序甚至都没有100字节长,因此应该留有足够的空间... 在“超级用户”上查询该文件后,您发现文件系统的群集大小使您感到困惑,这是FAT12设计人员的恶作剧,使您的软盘中的大部分未被使用,并迫使您购买超出实际需要的容量。 买更多的软盘?决不!如果我们仅将多个程序保存在一个文件中,则群集大小将不再是一个问题,这是可能的,因为对于相同的源代码,不同的编译器/解释器的行为将有所不同。 任务 编写一个适合单个群集(小于或等于512个字节)的多语种,并尽可能解决以下许多任务。 串 读取所有输入并打印。 打印您好,世界!。 读取一行/参数(name)作为输入,并打印生日快乐[name]!。 阅读所有输入并打印我爱的标签!如果它包含一个或多个制表符(0x09),并且我讨厌空格!如果没有。 读取两行/参数,如果第二行是第一行的子字符串,则打印真实值,否则输出虚假值。 读取一行/自变量,如果字符严格按升序打印,则输出真实值;否则,输出虚假值。 读取行/参数和一个字符,并打印该字符所有出现的索引。 读取一行/自变量并打印出现次数最多的任何字符。 数学 读取两个介于0和255之间的整数,并打印它们的总和。 读取0到255之间的单个整数,并打印除以7的商和余数。 读取一个介于1到255之间的整数,如果它是一个复合数字(既不是1也不是素数),则输出一个真实值,如果不是,则输出一个虚假值。 读取一个介于1到255之间的整数,如果它是2的幂,则打印一个真实值,如果不是,则打印一个虚假值。 读取0到255之间的两个整数,并打印较大的整数。 读取介于0到255之间的十进制整数,打印其十六进制表示形式。 读取0到255之间的单个整数并打印其汉明权重(1位的数量)。 读取1到13之间的单个整数n并打印F n,第n 个斐波那契数。 例如,对于输入13,print 233。 艺术 读取一行输入/参数并对其进行构图。 例如,对于input Programming Puzzles & Code Golf,输出: +---------------------------------+ | Programming Puzzles & Code Golf | +---------------------------------+ 读取一个矩形的字符块并将其顺时针旋转四分之一圈。 例如,对于输入 tye xll epb …

16
输出a句的可执行句[关闭]
难题: 编写一个简短的三行程序,其中: 朗读时每行有5/7/5个音节 运行时输出一个句。 具有正确结构但非haiku输出的程序示例为(Python): >>> for x in range(3): ... print "EXTERMINATE HUMANS" ... # I am a Dalek. ... EXTERMINATE HUMANS EXTERMINATE HUMANS EXTERMINATE HUMANS (此评论有点不合时宜。) 朗读为: 对于范围三中的x 打印出人类! 我是达莱克 任何语言都是可以接受的。为了大声阅读,!@#$%^&*()_+可以接受诸如Waka Waka Bang Splat之类的符号,也可以忽略它们,也可以大声发音。(我肯定会有一个Perl条目,例如!***(!:, )(*@@@#, )_(*)!.) 如果代码或输出特别有趣,或特别是zen,则加分。 编辑:如果您的语言需要样板才可以做任何有趣的事情(#include <iostream>?),那么我很乐意忽略样板。 我接受了Paul Richter的Common Lisp ku句,理由是它使我笑了五分钟。 尊敬地提及Timwi的创造性规则弯曲(编译器输出?!)和令人难忘的产品线"Static void. I long for …


24
重新映射ASCII
挑战 编写一个对ASCII字符重新排序的程序! 它应该只输出一个包含所有可打印ASCII字符的字符串。该字符串的第一个字符被赋值为1,第二个字符被赋值为2,依此类推。 如果两个字符通常彼此相邻(它们的字符代码之差为1),则它们可能不会在输出中彼此相邻出现。 计分 您的分数将是源代码中所有字符的值之和,这取决于程序的输出。 请查看验证部分以计算您的分数。 最低分获胜! 规则 “可打印的ASCII”定义为表示字符代码32-126(含)。 您可以编写完整的程序或函数。 您的代码只能包含可打印的ASCII字符和换行符。 您的程序可能不接受任何输入。 换行符始终为1。程序的输出不应包含换行符。 验证 使用此堆栈片段来验证您的代码输出是否有效,并计算您的代码得分! var result = document.getElementById("result");document.getElementById("submit").onclick = function() {var code = document.getElementById("code").value;var output = document.getElementById("output").value;var values = [];for (var i = 0; i < output.length; i++) {var c = output[i];var v = c.charCodeAt();if (v < 32 …

1
多米诺电路
计分板 这是VisualMelon提交的原始分数(即多米诺骨牌数)。当有更多答案出现时,我将把它们变成下面描述的归一化分数。现有解决方案现在可以解决基准测试中的所有电路: Author Circuit: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- VisualMelon 39 45 75 61 307 …


9
编写赛车程序
恭喜@kuroineko。以优异的速度赢得悬赏赛(672步),在Gauntlet赛道上。 领导者:* Nimi为轻量级2129得分。其他条目较大,但显示出一定的速度。 *领导者可能会因以后的参加而发生变化。 您的任务是编写一个小程序,该程序可以快速驾驶赛车。 规则 您的程序将读取曲目的图像。您可以在任何黄色像素处启动汽车,并且必须通过交叉任何黑色像素来完成。您的汽车的行驶路线只能在灰色((c,c,c),其中30 <= c <= 220)轨道上。 您的汽车每转一圈将以直线速度移动,速度v由整数vx和vy组成(从(0,0)开始)。在每个回合开始时,您的程序可以更改vx和vy,以便: abs(vx2-vx1) + abs(vy2-vy1) <= 15 更新:最大加速度增加到15。 然后,您的程序将以白色从当前位置到(位置+ v)绘制一条直线,并在开始处带有一个蓝点。如果此线下方的像素为黑色,则说明您已经完成比赛。否则,如果该行下的所有像素均为灰色或黄色,则可以继续下一轮。 您的程序必须输出轨道图像,并以白色和蓝色添加路径。 附加输出(2015年1月15日新增): 如果您想竞争获胜或奖金,您的程序还应该分别输出城市或护手的点数列表(蓝点)。在答案中包括点列表(用于验证)。的问题应该是这样的:(x0,y0), (x1,y1), ... (xn,yn)。您可以自由使用包含'\n'字符的空白以适合页面上的数据。 您可以使用第三方图像读取和写入,线条绘制和像素访问库。您不能使用路径查找库。如果需要,可以根据需要将PNG图像转换为其他图形格式(例如GIF,JPG,BMP)。 继续前进的几条路 一个简单的开始: 赛道: 障碍课程: 城市: 噩梦之路:护手(如果其他都太容易了) 计分 您的分数将基于您在“城市”赛道上的成绩。积分等于您的程序长度(以字节为单位),加上赛车每转一圈要获得10积分。最低分获胜。请在答案中附上您的城市田径跑步图片-我们希望了解您的驾驶风格。 请使用以下格式的标题作为答案: <Racing Driver or Team Name> <Language> <Score> 例如:Slowpoke Perl 5329 您的程序必须能够按照上述规则在任何轨道图像上行驶。您不得对最佳路径或测试轨迹的任何参数进行硬编码。其他标准漏洞也适用。 类似的挑战 这与马丁提出的难题类似:致Vectory!– Vector …

27
具有唯一字符的代码生成器
挑战 您的任务是编写一段代码,输出另一段代码。该代码必须依次输出另一个代码,直到最终代码输出整数1为止。链端在第一时间1被输出。 您的任何程序都不得共享任何字符(“规则”部分中只有一个例外)。 获奖作品将是链条最长的作品。决胜局将是最短的总代码长度。 规则: 您可以同时使用函数,程序和代码片段。您可以假设一个REPL环境。 所有功能必须使用相同的语言编写 禁止使用与符号无关的语言。这包括部分独立于符号的语言,例如Headsecks。 默认输出格式可以有选择地在函数的输出中忽略。这包括尾随换行符ans =等。 您可以重复使用空格字符(ASCII代码点32),但请注意以下几点: 您可以在其中一个功能中使用任意多个空格字符,但在所有其他功能中将其限制为最多5个 如果代码点32在您的语言中不是空格,则不能重复使用任何字符。 没有任何程序可以输入 该链必须至少两个程序长。 例: 您的初始代码是abc+cab+bac。输出:foofoo*123,依次输出disp(~0),输出1。这是一个由3个程序组成的链,总长度为29(决胜局)。

9
蛇化字符串
修饰后的字符串如下所示: T AnE eOf ifi ing h s x l A k e r isI amp Sna dSt 你的任务 取一个字符串s和一个size n,然后输出连串的字符串。输入ThisIsAnExampleOfaSnakifiedString和3将产生上面的示例。 技术指标 s 只会在代码点33和126之间(含端点)包含ASCII字符(不包含空格或换行符)。 s 长度在1到100个字符之间。 n是一个整数,代表每个输出字符串段的大小。组成“蛇”中曲线的每一行字符(上/下或左/右)都是n字符长。有关示例,请参见测试用例。 n 介于3到10之间(含3和10)。 输出字符串始终开始指向下方。 每行上都可以使用尾随空格。 在输出末尾也可以尾随换行符。 不允许前导空格。 code-golf表示以字节为单位的最短代码获胜。 测试用例 a 3 a ---------- Hello,World! 3 H Wor e , l llo d! ---------- ProgrammingPuzzlesAndCodeGolf …
35 code-golf  string  ascii-art  code-golf  code-golf  string  balanced-string  decision-problem  code-golf  string  geometry  grid  code-golf  tips  lisp  code-golf  quine  tips  king-of-the-hill  code-challenge  math  code-golf  string  palindrome  math  fastest-code  code-golf  string  counting  code-golf  code-golf  internet  code-golf  quine  source-layout  hello-world  code-golf  math  number  sequence  arithmetic  code-golf  ascii-art  grid  code-golf  number  grid  code-golf  string  crossword  code-golf  code-golf  ascii-art  grid  counting  code-golf  code-golf  math  sequence  arithmetic  number-theory  code-golf  code-golf  graphical-output  geometry  random  code-golf  ascii-art  grid  counting  code-golf  string  ascii-art  code-challenge  test-battery  code-golf  string  code-golf  ascii-art  kolmogorov-complexity  code-golf  interpreter  code-golf  math  sequence  code-golf  math  primes  set-partitions  code-golf 

2
PPCG让分系统
我们都知道,元 是 满溢 与 投诉 约 进球 代码高尔夫 之间的 语言(是的,每个字是一个单独的链接,而这些可能是冰山的一角)。 由于对那些真正烦恼查找Pyth文档的人感到非常嫉妒,所以我认为有更多的建设性挑战会很不错,因为它适合于专门从事代码挑战的网站。 挑战非常简单。作为输入,我们具有语言名称和字节数。您可以将它们用作函数输入,也可以将它们用作stdin语言的默认输入法。 作为输出,我们有一个更正的字节数,即您的残障分数。输出分别应为函数输出stdout或您的语言默认输出方法。输出将四舍五入为整数,因为我们喜欢决胜局。 使用最丑陋,骇人听闻的查询(链接,随时可以清理它),我设法创建了一个数据集(包含.xslx,.ods和.csv的zip),其中包含有关代码高尔夫球问题的所有答案的快照。您可以使用此文件(并假设它是提供给你的程序,例如,它是在同一文件夹),或将此文件转换为另一种格式的常规(,,等等-但它可能只包含原始数据!)。名称应保持与 选择的扩展。.xls.mat.savQueryResults.extext 现在为具体。对于每种语言,都有一个样板B和详细度V参数。它们可以一起用于创建语言的线性模型。我们n是字节的实际数量,并且c是修正得分。使用一个简单的模型n=Vc+B,我们得到校正后的分数: n-B c = --- V 很简单吧?现在,确定V和B。如您所料,我们将进行线性回归或更精确的最小二乘加权线性回归。我不打算对此进行详细说明-如果您不确定如何做到这一点,则Wikipedia是您的朋友,或者,如果您幸运,可以使用您语言的文档。 数据如下。每个数据点将是字节数n和问题的平均字节数c。为了计票,将对这些点加权,即按其票数加一(以计为0票)来称呼v。否决的答案应该被丢弃。简单来说,1票的答案应与2票0票的答案相同。 然后n=Vc+B使用加权线性回归将该数据拟合到上述模型中。 例如,给定语言的给定数据 n1=20, c1=8.2, v1=1 n2=25, c2=10.3, v2=2 n3=15, c3=5.7, v3=5 现在,我们撰写相关矩阵和向量A,y并W与我们在向量参数 [1 c1] [n1] [1 0 0] x=[B] A=[1 c2] y=[n2] W=[0 2 0], [V] [1 …

30
让我们进行单词搜索!
在这一挑战中,我们将共同创建一个单词搜索,其中包含许多使用不同语言的程序。 我以60 x 25的空格(·)网格开始,其中一些被Ruby程序的字符替代。 要回答,请选择一种尚未使用的语言。使用您选择的语言,编写一个程序,该程序将从控制台读取字符,标记,行或所有输入,然后进行打印。然后,将您的程序插入单词搜索中。 例如,假设您选择Python 3作为答案,然后编写程序print(input())。现在,您必须将该程序插入到网格中。 如果答案前的网格如下所示: ···a·24·········· ··z····t········· 然后,您可以将程序放在第二行,与现有代码重叠t: ···a·24·········· ··zprint(input()) 请注意,您可以沿任何方向放置程序:向前,向后,向上,向下或对角线,只要它在一条直线上即可。 但是,如果现有网格看起来像这样: ···a·24·········· ··z····q········· print(input())在不更改现有字符的情况下,无法适应此处,这是禁止的。相反,您可以更改程序: print( input()) 这个两行程序非常适合: ···a·24·print(··· ··z····q input()) 在这里,您将空格(·)替换为空格()。但是,空格与其他任何字符一样,并且不能在以后的程序中覆盖。 就像单线一样,多行程序可以在任何方向放置。例如,在较大的网格中,可以通过顺时针旋转程序135°来执行以下操作。 ·········· ········ · ·······i·p ······n·r· ·····p·i·· ····u·n··· ···t·t···· ··(·(····· ·)········ )········· 计分 每个答案的分数是30除以添加的字符数。即使您自己使用它们,也不要计算网格中已经存在的字符。 您的总分数是所有答案的分数总和乘以答案数量。最高分获胜。 规则 每个答案必须用不同的语言编写。仅版本号不同的语言(例如,Python 2和Python 3)被认为是相同的。 每个答案都必须以最近的有效答案为基础。也就是说,以最新的此类答案的网格为例,然后将程序插入其中。 要插入程序,请使用·您选择的字符替换至少一个空格()。您可以在答案中使用网格中的现有字符,但不能更改或移动它们中的任何一个。 在所有答案中,您总共不能插入500个字符以上。 您插入的所有字符都必须是程序的一部分。 您的程序可能只包含可打印的ASCII和换行符,但可能没有两个或多个连续的背对背连续换行符。 换行符不会计入您的分数。 …

14
数独压缩
您的工作是用以下任何一种语言编写一个程序(或两个单独的程序): 可以将完整的数独板作为输入(以任何逻辑格式)并将其压缩为字符串 可以将压缩后的字符串作为输入并解压缩以获得完全相同的完整数独板(以9行的任何逻辑格式输出) 注意:使用数独规则以发挥自己的优势;这就是这一挑战背后的想法。 数独规则在维基百科上 规则 压缩输出中仅允许使用可打印的ASCII字符(32-126)(例如,不允许多字节字符)。 您可以假定输入是有效的3x3 Sudoku板(正常规则,无变化)。 我不会施加时间限制,但不会创建暴力破解算法。或者,提交者应该能够在发布之前测试其提交的内容(谢谢Jan Dvorak)。 如果您有任何疑问或疑虑,可以要求澄清或在评论中提出建议。 获奖条件 分数=所有十个测试用例的字符总数 最低分获胜。 测试用例 您可以使用它们来测试程序的运行状况。 9 7 3 5 8 1 4 2 6 5 2 6 4 7 3 1 9 8 1 8 4 2 9 6 7 5 3 2 4 7 8 6 5 …

15
生成数字1–255的Brainfuck
编写一个程序,对于从1到255的数字,将打印出BF代码,该代码将在数组的某个字节中生成给定的数字,并加上换行符。 例如,输出的前四行可能(并且很可能会)是: + ++ +++ ++++ 获胜者将最小:(source code + output以字节为单位)。 澄清与修订: BF程序使用包装单元。 输出BF程序必须以唯一的非零单元格为包含数字的单元格终止。 程序必须以升序输出。 输出为0的程序是可选的。 不允许使用负数据指针。<在第一个指针将什么都不做。(如果更合适,请发表评论)

22
引爆一根弦
给定任何字符串,以三角形的形式打印它,其中文本沿每个对角线上下移动。例如,输入的"Hello World"应输出: d l r d o l W r d o l o W r d l o l l o W r d e l o l H l o W r d e l o l l o W r d l o l o W r …

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.