Questions tagged «compression»

与压缩或解压缩任意数据有关。与压缩单个特定输入相关的挑战应标记为[kolmogorov-complexity]

23
写大约Moby Dick
这是一个1.2Mb ASCII文本文件,其中包含Herman Melville的Moby-Dick的文本;或者,鲸鱼。您的任务是编写一个程序或函数(或类等,请参见下文),每次给该文件一个字符,并且在每个步骤中都必须猜测下一个字符。 这是代码挑战。您的分数将是 2*L + E 这里L是您以字节为单位提交的大小,并且E是猜测错误的字符数。最低分获胜。 进一步的细节 您提交的内容将是一个程序或函数(等),将被多次调用或调用或发送数据。(1215235倍要准确。)在被要求的Ñ 第一次将给出Ñ 个的字符whale.txt或whale2.txt与它必须输出其猜测为(N + 1)个字符。E分数的组成部分将是它猜错的字符总数。 大多数提交将需要在两次调用之间存储一些状态,以便它们可以跟踪它们被调用了多少次以及以前的输入是什么。您可以通过使用static或全局变量写入外部文件,提交类而不是函数,使用状态monad或其他适用于您的语言的方法来做到这一点。您的提交必须包含在首次调用之前初始化其状态所需的任何代码。 您的程序应确定性地运行,以便在输入相同的情况下始终做出相同的猜测(因此始终获得相同的分数)。 您的答案不仅必须包括您提交的内容,还必须包括您用于计算E分数部分的代码。无需使用与提交内容相同的语言编写,也不会计入其字节数。鼓励您使其可读。 关于您的提交和此计分程序之间的接口,只要您的程序在接收下一个输入字节之前始终给出一个字节的输出,就可以了。(因此,例如,您不能仅将包含所有输入的字符串传递给它,而将包含所有输出的字符串传递回去。) 在提交条目之前,您必须实际运行测试程序并计算/验证分数。如果您提交的内容运行得太慢而无法验证其分数,则即使您知道其分数原则上也没有资格参加比赛。 L分数的组成部分将根据打高尔夫球挑战赛的常规规则进行计算。如果您提交的文件包含多个文件,请在这种情况下注意评分和目录结构的规则。您的代码使用的所有数据都必须包含在您的L分数中。 您可以导入现有库,但不能加载任何其他外部文件,并且您的代码可能无法访问whale.txt或whale2.txt以上述以外的任何方式归档文件。您可能不会加载任何预先训练的神经网络或其他统计数据源。(使用神经网络很好,但是您必须在提交的数据中包含权重数据,并将其计入字节数。)如果由于某种原因,您的语言或库包含提供Moby Dick的部分或全部文本的功能,您可能无法使用该功能。除此之外,您可以使用自己喜欢的任何其他内置或库功能,包括与文本处理,预测或压缩有关的功能,只要它们是您的语言或其标准库的一部分即可。对于更特殊的,包含统计数据源的常规例程,您必须自己实现它们并将它们包括在字节数中。 某些提交可能包含其本身由代码生成的组件。如果是这种情况,请在您的答案中包括用于生成它们的代码,并说明其工作原理。(只要不需要此代码即可运行您的提交,它就不会包含在您的字节数中。) 由于历史原因,该文件有两个版本,您可以在答案中使用其中两个版本。在whale2.txt(上面链接的)文本中没有换行,因此换行符仅出现在段落末尾。在原始whale.txt文本中,文本被包装为74个字符的宽度,因此您必须预测每行的结尾以及文本。这使挑战变得更加挑剔,因此whale2.txt建议新的答案。两个文件的大小相同,均为1215236字节。 总而言之,所有答案都应包括以下内容: 您的提交本身。(代码以及它使用的所有数据文件-如果它们很大,可以作为链接。) 有关代码工作方式的说明。请说明I / O方法以及它如何预测下一个字符。您对算法的解释很重要,好的解释将为我带来很多帮助。 您用来评估分数的代码。(如果与以前的答案相同,则可以链接到它。) 您用于生成提交内容的任何代码,以及对该代码的说明。这包括用于优化参数,生成数据文件等的代码。(这不计入字节数,但应包含在答案中。) 排行榜 显示代码段 var QUESTION_ID=152856,OVERRIDE_USER=21034;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 r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var …

30
以1kB的代码客观地绘制星夜
注意:安德斯·卡塞格(Anders Kaseorg)已被接受,以吸引人们注意他的出色答案,但挑战还没有结束!对于在不使用内置压缩的情况下获得最高分的任何人,该产品仍然提供400点奖励。 下图是386x320梵高《星夜》的png表示形式。 您的目标是以不超过1024字节的代码尽可能地重现此图像。出于此挑战的目的,图像的接近度通过RGB像素值的平方差来衡量,如下所述。 这是代码挑战。使用下面的验证脚本计算分数。最低分获胜。 您的代码必须遵守以下限制: 它必须是一个完整的程序 它必须以我的计算机上运行的以下验证脚本可以读取的格式输出图像。该脚本使用Python的PIL库,该库可以加载各种文件格式,包括png,jpg和bmp。 它必须是完全独立的,不输入任何文件,也不加载任何文件(允许导入的库除外) 如果您的语言或图书馆包含一个输出Starry Night的功能,则不允许您使用该功能。 它应该确定地运行,每次都产生相同的输出。 输出图像的尺寸必须为 386x320 为避免疑问:有效答案必须使用按照常规PPCG规则的编程语言。它必须是一个输出图像的程序,而不仅仅是图像文件。 某些提交本身可能是由代码生成的。如果是这种情况,请在您的答案中包括用于生成提交内容的代码,并说明其工作方式。以上限制仅适用于您提交的1kB图像生成程序;它们不适用于生成它的任何代码。 计分 要计算分数,请获取输出图像和上面的原始图像,并将RGB像素值转换为介于0到1之间的浮点数。像素的分数为 (orig_r-img_r)^2 +(orig_g-img_g)^2 + (orig_b-img_b)^2,即两个图像之间RGB空间中的平方距离。图像的分数是其像素分数的总和。 以下是执行此计算的Python脚本-如果有任何不一致或含糊之处,则最终分数是由在我的计算机上运行的该脚本计算出的分数。 请注意,分数是根据输出图像计算得出的,因此,如果使用有损格式会影响分数。 分数越低越好。原始“星夜”图像的分数为0。在天平上不太可能发生的平局中,票数最多的答案将决定获胜者。 奖金目标 因为答案是使用内置压缩的解决方案所主导,所以我为使用其他技术的答案授予了一系列赏金。下一个将获得400点奖励奖励,如果不使用内置压缩的答案在整体上排名。 先前获得的奖金奖励如下: nneonneo的答案获得了100分的赏金,因为它是当时得分最高,未使用内置压缩的答案。当时它的得分为4852.87分。值得一提的是2012rcampion,他勇敢地尝试使用基于Voronoi tesselation的方法击败nneonneo ,得分为5076分,而Sleafar的答案一直领先,直到接近尾声,他的得分为5052分,使用类似的方法Nneonneo。 Strawdog的入场奖励200点赏金。这是因为它是一种基于优化的策略,该策略在非内置压缩答案中处于领先地位,并持续了一周。它采用了令人印象深刻的巧妙方法,获得了4749.88分。 评分/验证脚本 以下Python脚本应与上图放置在相同的文件夹中(应命名ORIGINAL.png),并使用形式的命令运行python validate.py myImage.png。 from PIL import Image import sys orig = Image.open("ORIGINAL.png") img = Image.open(sys.argv[1]) if img.size …

30
从较小的“ H”创建一个“ H”
挑战 创建一个函数或程序,当给定整数时size,该函数或程序将执行以下操作: 如果size等于1,则输出 H H HHH H H 如果size大于1,则输出 X X XXX X X X程序/功能的输出在哪里size - 1 (只要您愿意,0只要您在答案中指定,就可以使基本情况与相对应) 可以使用以下任何一种输出格式,以您更方便的方式: 所需结构的字符串,其中任意两个不同的字符分别对应于H和space 具有所需结构的二维数组,其中任意两个不同的值分别对应于H和space 字符串的数组/列表,每个字符串中有一行输出,并且与H和对应的任意两个不同的值space 只要每行上有恒定数量的前导空格,就可以使用前导空格。两个不同的输出字符可以取决于您选择的任何内容,只要它们不同即可。 指定代码返回的输出格式。 测试用例 1 H H HHH H H 2 H H H H HHH HHH H H H H H HH HH H HHHHHHHHH H HH HH …
73 code-golf  ascii-art  fractal  code-golf  code-golf  string  code-golf  string  matrix  code-golf  graph-theory  maze  binary-matrix  code-golf  kolmogorov-complexity  random  code-challenge  metagolf  test-battery  brain-flak  text-processing  code-golf  matrix  code-golf  number-theory  primes  code-golf  string  matrix  code-golf  binary  bitwise  code-golf  number  factorial  floating-point  code-golf  number  sequence  code-golf  sequence  cops-and-robbers  code-golf  sequence  cops-and-robbers  code-golf  string  code-golf  math  decision-problem  number-theory  integer  code-golf  number  decision-problem  functional-programming  code-golf  array-manipulation  matrix  code-golf  string  classification  string  code-challenge  binary  compression  decode  code-golf  string  string  code-challenge  balanced-string  encode  code-golf  number-theory  integer  base-conversion  code-golf  math  number-theory  geometry  abstract-algebra  code-golf  array-manipulation  sorting  optimization  code-golf  math  geometry  image-processing  generation  code-golf  string  cops-and-robbers  repeated-transformation  grammars  cops-and-robbers  repeated-transformation  grammars  code-challenge  restricted-source  tips  source-layout  javascript  code-challenge  kolmogorov-complexity  restricted-source  code-golf  combinatorics  counting  math  fastest-code  linear-algebra  code-golf  math  permutations  matrix  linear-algebra  code-golf  string  decision-problem  restricted-source  code-golf  number  array-manipulation  subsequence  code-golf  number  array-manipulation  matrix  code-golf  brainfuck  code-golf  color  code-golf  quine  source-layout  code-golf  subsequence  code-golf  string  ascii-art  code-golf  string  ascii-art  alphabet  code-golf  decision-problem  interpreter  hexagonal-grid  halting-problem  code-golf  string  polynomials  calculus  code-golf  math  decision-problem  matrix  complex-numbers  code-golf  random  code-golf  number  arithmetic 

10
将图像编码成推文(极端图像压缩版)
基于Stack Overflow 上非常成功的Twitter图像编码挑战。 如果一张图像值1000个字,那么您可以在114.97字节中容纳多少图像? 我要求您提出一种通用方法,将图像压缩为仅包含可打印ASCII文本的标准Twitter注释。 规则: 您必须编写一个可以拍摄图像并输出编码文本的程序。 程序创建的文本最长不能超过140个字符,并且只能包含代码点在32-126(含)范围内的字符。 您必须编写一个程序(可能是同一程序),该程序可以获取编码的文本并输出照片的解码版本。 您的程序可以使用外部库和文件,但是不需要Internet连接或与其他计算机的连接。 解码过程无法以任何方式访问或包含原始图像。 您的程序必须接受以下格式中的至少一种(不一定是其他格式)的图像:位图,JPEG,GIF,TIFF,PNG。如果某些或所有示例图像的格式不正确,则可以在程序压缩之前自行转换它们。 评判: 这是一个比较主观的挑战,所以获胜者将(最终)由我来评判。我的判断将集中在几个重要因素上,下面列出这些重要性逐渐降低的因素: 能够合理地压缩各种图像,包括未列为样本图像的图像 能够保留图像中主要元素的轮廓 能够压缩图像中主要元素的颜色 能够保留图像中次要细节的轮廓和颜色 压缩时间。尽管不像压缩图像的程度那么重要,但是速度更快的程序要比速度相同的慢程序更好。 您的提交应包括解压后的结果图像,以及生成的Twitter评论。如果可能,您还可以提供指向源代码的链接。 样本图片: 兴登堡, 山地景观, 蒙娜丽莎, 2D形状

10
小钱德勒很伤心。画他的云,使他振作起来
小钱德勒很伤心。画他的云使他振作起来。 注意:画云实际上不会使他振作起来。 圆可以定义为三元组(x,y,r),其中x是圆在笛卡尔平面上的x位置,是圆在笛卡尔平面y上的y位置以及圆r的半径。x并y可能是负面的。r永远是积极的。输入是以空格分隔的三元组形式的圆的列表。例如: 3,1,1 3,2,1.5 1,2,0.7 0.9,1.2,1.2 1,0,0.8 的3,1,1意思是“在与中心点的圆3,1与1个半径。3,2,1.5是指”在与中心点的圆3,2用1.5半径。 如果我们在图形上绘制输入的所有这些圆,则看起来像这样(我仅出于清晰起见添加了网格线和标签;它们不是必需的): 注意所有的圆是如何凝聚的。也就是说,它们全部重叠在一起,从而形成一个大的组,而没有其他的小圈子。输入保证是内聚的。 假设现在绘制一条绕这些圆形成的“边界”行进的线,而没有其他任何线。就像绘制所有圆组成的轮廓的边界一样。生成的云看起来像这样: 因此,仅通过在输入中绘制形成边界的圆弧来形成单一形状即可形成此云。换句话说,仅通过绘制不在另一个圆内的圆弧来形成云。您的程序将以上述形式接受输入,并输出显示结果云的图像。云的整体形状必须正确,但是比例,颜色,线条粗细以及在顶点处的外观取决于您。请注意,云必须是可见的,因此您不能拉出类似“此程序在白色背景上绘制白色云”,“此程序以无限小的比例绘制云”,“此程序以0绘制云”之类的内容。线宽”等。还请注意,边框的颜色必须与填充或背景的颜色不同。 另一个例子。输入: 1,4,2 5,2,1 3,1,1 3.5,2,1.2 3,3,0.7 1,2,0.7 输出: 如果云中存在“洞”,则也应绘制该洞。输入: 0,5,4 3,4,4 4,3,4 5,0,4 4,-3,4 3,-4,4 0,-5,4 -3,-4,4 -4,-3,4 -5,0,4 -4,3,4 -3,4,4 输出: 这是一条重要规则:您的程序必须仅绘制形成边框的线。这意味着您不能简单地完全绘制圆,然后用白色填充将圆绘制得稍小一些,因为该方法仍会绘制不形成边界的线,之后只会将其覆盖。该规则的目的是防止“绘制圆,然后用白色填充再次绘制圆”的实现或类似的方法。预计答案将在绘制之前实际计算出绘制对象的位置。 这是代码高尔夫球,因此最短的字符数获胜。

30
构造身份矩阵
挑战非常简单。给定整数输入n,输出n x n单位矩阵。单位矩阵是1从左上角到右下角的s 矩阵。您将编写一个程序或函数来返回或输出您构造的身份矩阵。您的输出可能是2D数组,或者是由空格/制表符和换行符分隔的数字。 输入和输出示例 1: [[1]] 2: [[1, 0], [0, 1]] 3: [[1, 0, 0], [0, 1, 0], [0, 0, 1]] 4: [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] 5: [[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], …

16
最小的棋盘压缩
编写可以对棋盘进行编码和解码的算法或程序。目标是制作棋盘的最小表示,可用于确定(一旦解码)棋手在该回合中的所有移动可能性。 编码必须能够显示: 轮到谁了。 玩家是否可以在两侧守城堡。 玩家是否可以执行陪练,如果可以,则执行哪一个棋子? 所有作品的位置。 关于cast皮的重要说明:如果白色将其国王移动一圈,然后再将其向后移动一次,则必须明确的是,此后他们无法在任一侧守城堡。如果他们移动左车子或右车子,情况​​也会一样。尽管棋盘在视觉上处于与两个回合之前相同的状态,但游戏状态已更改。此处提供更多信息:http : //en.wikipedia.org/wiki/Chess#Castling 有关通行证的重要说明:这也是一个转弯敏感动作。阅读规则以获取更多信息。http://en.wikipedia.org/wiki/Chess#En_passant 根据需要确定输入和输出。压缩力最大的道具! 您的分数取决于最坏的情况-最大可能的大小(以位为单位)。确保显示如何计算该数字以及所占金额。拍摄最小的最坏情况!

9
文本压缩和解压缩-“再也没有”。
随着最近有关在代码高尔夫中使用压缩工具的讨论,我认为编写自己的文本压缩器和解压缩器将是一个不错的挑战。 挑战: 编写两个程序:一个程序将ASCII文本压缩为一个字节序列,另一个程序将其解压缩。程序不必使用相同的语言。 第一个程序应读取一段ASCII文本(从文件或标准输入,或使用该语言最自然的任何机制),并输出其压缩版本。(压缩的输出可以包含任意字节,也可以是任意字节;它不必可读。)第二个程序应读取第一个程序的输出并重新创建原始输入文本。 得分: 解决方案的分数将是以下三个计数的总和: 压缩程序的长度(以字符为单位)。 的输出的长度给出下面的测试输入,以字节为单位的压缩机。 解压缩程序的长度(如果与压缩程序不同),以字符为单位。 您应该在回答中记下所有三个计数及其总和。由于这是标准高尔夫,得分越低越好。 规则和限制: 您可能不会使用任何预先存在的压缩或解压缩工具或库,即使它们与您选择的语言捆绑在一起也是如此。如果不确定是否允许使用给定的工具或功能,请询问。 您的压缩程序必须能够处理由任何可打印ASCII文本组成的输入,包括制表符(ASCII 9)和换行符(ASCII 10)。您可能但不是必须处理任意Unicode和/或二进制输入。 您的解压缩程序必须产生与作为输入的压缩器完全相同的输出。特别是,如果输入中没有尾随换行符,请注意不要输出。(下面的测试输入确实包含尾随换行符,因此您需要对此进行单独测试。GolfScript提示:'':n。) 您的压缩器和解压缩器可能是同一程序(选择了适当的模式,例如使用命令行开关)。在这种情况下,其长度仅计算一次。 程序不应过慢或占用大量内存。如果压缩或解压缩测试输入在不是很新的台式机(2.2GHz AMD Athlon64 X2)上花费了超过一分钟,或者消耗了超过1 GB的RAM,那么我将裁定该解决方案无效。这些限制是故意放宽的-请尽量不要推动它们。(请参阅下面的修订:在这些限制之内,您必须至少能够处理100 kB的输入。) 即使仅测试输入对评分很重要,您也至少应努力压缩任意输入文本。仅针对测试输入即可达到不错的压缩比的解决方案在技​​术上是有效的,但不会对我不利。 您的压缩程序和解压缩程序应该是独立的。特别是,如果它们依赖于能够读取不属于所选语言的标准运行时环境的一部分的文件或网络资源,则该文件或资源的长度应计为程序长度的一部分。(这是不允许“压缩器”将输入与网络上的文件进行比较,如果匹配则输出零字节。对不起,但这不再是新技巧了。) 修订和澄清: 您的压缩器必须能够在合理的时间和内存使用量(最多一分钟,一GB内存)内处理至少100 kB的典型英文文本。您的解压缩器必须能够在相同限制内解压缩结果输出。当然,能够处理比该时间更长的文件是完全可以的,值得称赞。可以将长输入文件分成多个块并分别进行压缩,也可以使用其他方法来权衡压缩效率,以提高长输入的速度。 您的压缩器可能需要使用首选平台的本机换行符表示形式(LF,CR + LF,CR等)来提供其输入,只要您的解压缩器在其输出中使用相同的换行符表示形式即可。当然,只要您的解压缩器输出与原始输入中相同类型的换行符,压缩器也可以接受任何类型的换行符(甚至不考虑平台,甚至仅接受Unix换行符)也是可以的。 测试输入: 为了判断答案的压缩效率,将使用以下测试输入(Edgar Allan Poe撰写的The Raven,由Gutenberg项目提供): Once upon a midnight dreary, while I pondered, weak and weary, Over many a …

2
音乐推特挑战赛
这是Twitter图像编码挑战的音频版本。 设计一种音频压缩格式,该格式可以以140字节或更少的可打印UTF-8编码文本表示至少一分钟的音乐。 通过编写一个命令行程序来实现它,该程序采用以下3个参数(在程序本身的名称之后): 字符串encode或decode。 输入文件名。 输出文件名。 (如果首选的编程语言缺乏使用命令行参数的能力,则可以使用其他方法,但必须在答案中进行解释。) 该encode操作将从您选择的音频格式转换为压缩的“ tweet”格式,并且该decode操作将从“ tweet”格式转换为原始音频格式。(当然,您应该实现有损压缩,因此输出文件不必与输入文件相同,只是格式相同。) 包括在您的答案中: 程序的源代码完整。(如果此页面太长,则可以将其托管在其他位置并发布指向该页面的链接。) 有关其工作原理的说明。 至少一个示例,具有到原始音频文件的链接,将其压缩为“ tweet”文本,并通过解码tweet获得音频文件。(Answerer对版权“合理使用”主张负责。) 规则 我保留随时关闭竞赛规则中任何漏洞的权利。 [4月24日编辑]对于encode函数的输入(和函数的输出decode),可以使用任何合理的通用音频格式,无论是: 未压缩的波形,例如WAV。 压缩波形,例如MP3。 “ Sheet music”风格,例如MIDI。 压缩的“ tweet”格式必须在输入文件中实际编码声音。因此,以下类型的输出不计算在内: 提供实际输出存储位置的URI或文件路径。 数据库表的键,实际输出存储为Blob。 任何类似的东西。 您的程序必须设计为压缩通用音乐文件,因此请勿执行明显与您的特定示例歌曲相关的事情。例如,如果要演示“眨眼,眨眼,小星星”,则您的压缩例程不应为do-do-so-so-la-la-so序列硬编码特定符号。 您程序的输出实际上应该能够通过Twitter并毫发无损地输出。我没有支持的确切字符列表,但是请尽量使用字母,数字,符号和标点符号。并避免使用控制字符,组合字符,BIDI标记或类似的其他怪异内容。 您可以提交多个条目。 评审标准 这是一次人气竞赛(即,大多数净投票获胜),但敦促选民考虑以下事项: 准确性 歌曲被压缩后还能识别吗? 听起来不错吗? 您还能识别正在演奏的乐器吗? 你还能认出歌词吗?(这可能是不可能的,但是如果有人做到这一点将给人留下深刻的印象。) 复杂 示例歌曲的选择在这里很重要。 [4月24日添加]对于MIDI或类似格式,此挑战最为容易。但是,如果您付出额外的努力使其与波形类型的格式一起使用,则值得您多加赞扬。 有什么结构?当然,只需将相同的4个小节重复任意次数即可满足一分钟的要求。但是,更复杂的歌曲结构值得更多关注。 格式可以同时处理很多音符吗? 代码 使其尽可能简短。但是,这不是代码高尔夫,因此可读性比字符数更重要。 只要有提高结果质量的理由,聪明,复杂的算法也可以。

19
支架扩展!
您面临的挑战是在程序的输入中扩展一些括号,如下所示: 在两个匹配的括号和之间找到一个字符串s,在括号后面加上一个数字n。[] 卸下支架。 重复s次,将其自身替换n次。(如果n为0,只需删除s。) 转到步骤1,直到输入中没有匹配的括号为止。 附加规则和说明: 您将接受输入并通过任何允许的方式提供输出。 在输出中允许尾随换行符。 您只需要在输入中处理可打印的ASCII。 您可以假定所有括号都匹配,即您将永远不会收到输入[]]]]或[[[[]。 您可以假定每个右括号]后面都有一个数字。 测试用例: Input -> Output [Foo[Bar]3]2 -> FooBarBarBarFooBarBarBar [one]1[two]2[three]3 -> onetwotwothreethreethree [three[two[one]1]2]3 -> threetwoonetwoonethreetwoonetwoonethreetwoonetwoone [!@#[$%^[&*(]2]2]2 -> !@#$%^&*(&*($%^&*(&*(!@#$%^&*(&*($%^&*(&*( [[foo bar baz]1]1 -> foo bar baz [only once]12 -> only once2 [only twice]23456789 -> only twiceonly twice3456789 [remove me!]0 -> before [in …

9
帮我认出我的怪物
背景 NetHack电脑游戏的历史可以追溯到1987年,当时在电脑游戏中广泛使用图形技术。游戏中有很多怪物,并且可能一次需要在屏幕上放置很多怪物,因此怪物的绘制方式非常简单:将怪物简单地以ASCII字符的形式绘制在屏幕上。 除了有很多怪物外,还有很多类型的怪物。知道哪个是很重要的。您看到小猫和龙时必须做出不同的反应。因此,大多数ASCII用来表示怪物。例如,一只小猫是f,一条红龙是D。这意味着了解给定怪物的外观会非常有帮助,因为如果您稍后在游戏中遇到它,它将帮助您识别它。(请注意,怪物的类型多于ASCII字符,因此它们中的一些共享;红色龙和蓝色龙都是D。) 任务 您的程序必须以NetHack怪兽的名称作为输入,并在游戏中产生表示它的ASCII字符作为输出。允许程序假定输入实际上是NetHack怪兽的名称。如果输入无效,则可能希望崩溃,产生无意义的结果等。 以下Stack Snippet是一个JSON对象,提供了可能的输入到其对应输出的完整映射: 显示代码段 { "Aleax": "A", "Angel": "A", "Arch Priest": "@", "Archon": "A", "Ashikaga Takauji": "@", "Asmodeus": "&", "Baalzebub": "&", "Chromatic Dragon": "D", "Croesus": "@", "Cyclops": "H", "Dark One": "@", "Death": "&", "Demogorgon": "&", "Dispater": "&", "Elvenking": "@", "Famine": "&", "Geryon": "&", "Grand Master": "@", …

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 …

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 

29
它是前缀代码吗?
在信息论中,“前缀代码”是一个字典,其中所有键都不是另一个的前缀。换句话说,这意味着没有一个字符串以其他任何字符串开头。 例如,{"9", "55"}是前缀代码,但{"5", "9", "55"}不是。 这样做的最大优点是,可以将编码的文本记下来,并且它们之间没有分隔符,并且仍然可以唯一地解密。这在诸如Huffman编码之类的压缩算法中得到了体现,该算法始终会生成最佳的前缀代码。 您的任务很简单:给定一个字符串列表,确定它是否是有效的前缀代码。 您的输入: 将是任何合理格式的字符串列表。 仅包含可打印的ASCII字符串。 将不包含任何空字符串。 您的输出将是一个true / falsey值:如果是有效的前缀代码,则为True,否则为falsey。 这是一些真实的测试用例: ["Hello", "World"] ["Code", "Golf", "Is", "Cool"] ["1", "2", "3", "4", "5"] ["This", "test", "case", "is", "true"] ["111", "010", "000", "1101", "1010", "1000", "0111", "0010", "1011", "0110", "11001", "00110", "10011", "11000", "00111", "10010"] 以下是一些错误的测试案例: ["4", "42"] …

8
拉丁方压缩
一个拉丁方是一个没有重复的行或列符号的方形:。 13420 21304 32041 04213 40132 正如许多Sudoku玩家所知道的那样,您不需要所有数字即可推断出剩余数字。 您面临的挑战是将拉丁方压缩为尽可能少的字节。 您需要提供一个或两个压缩/解压缩程序。 各种信息: 使用的数字将始终为0..N-1,其中N是正方形边缘的长度,以及N<=25 减压时,拉丁方必须与输入相同。 您的程序应该能够解压缩任何拉丁正方形(在最大正方形大小之内),而不仅仅是我提供的。压缩率也应相似。 您实际上必须运行压缩和解压缩器才能获得分数(无宇宙结束时间) 测试用例可以在github上找到。 您的分数是压缩测试用例的总大小。 编辑:从7月7日20:07开始,我更新了测试用例(以解决生成问题)。请在新的测试用例上重新运行您的程序。 谢谢Anders Kaseorg。

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.