Questions tagged «kolmogorov-complexity»

非正式地,Kolmogorov复杂度是描述或产生恒定对象(例如字符串或图像)所花费的代码量。在此类别中发布挑战时,请确保它为现有挑战添加了新内容。

30
“你好,世界!”
所以...嗯...有点尴尬。但是我们并没有一个简单的“世界,你好!” 挑战(尽管有35个标记为hello-world的变体,并且还在计数)。尽管这不是通用语言中最有趣的代码,但是在某些esolang中找到最短的解决方案可能是一个严峻的挑战。例如,据我所知,还不知道是否找到了最短的Brainfuck解决方案。 此外,虽然所有Wikipedia(Wikipedia条目已被删除,但在archive.org上都有一个副本 ),但esolangs和Rosetta Code的列表为“ Hello,World!”。程序,这些都没有兴趣让每种语言都有最短的语言(还有GitHub存储库)。如果我们想成为代码高尔夫社区中的重要站点,我认为我们应该尝试创建最短的“ Hello,World!”最终目录。程序(类似于我们的基本quine挑战如何包含各种语言中最短的已知quines)。所以,让我们做吧! 规则 每个提交都必须是完整程序。 该程序必须不输入任何内容,并打印Hello, World!到STDOUT(此确切的字节流,包括大写和标点符号)加上可选的尾随换行符,并且不能输出其他任何内容。 该程序不得向STDERR写入任何内容。 如果有人想通过创建一种在空程序打印时使用的语言来滥用它Hello, World!,那么恭喜,他们只是为一个非常无聊的答案铺平了道路。 请注意,必须有一个解释器,以便可以测试提交。允许(甚至鼓励)自己为以前未实现的语言编写此解释器。 提交的得分上字节,在合适的(预先存在的)编码,通常(但不一定)UTF-8。某些语言(例如Folders)在评分上有些棘手-如果有疑问,请在Meta上提问。 这是不是发现了用最短的语言“你好,世界!” 程序。这是关于查找最短的“ Hello,World!”。用每种语言编程。因此,我不会将任何答案标记为“已接受”。 如果您选择的语言是已经有答案的另一种(可能更受欢迎的)语言的琐碎变体(请考虑使用BASIC或SQL方言,Unix shell或琐碎的Brainfuck派生词(例如Alphuck)),请考虑在现有答案中添加注释在其他语言中,相同或非常相似的解决方案也是最短的。 附带说明一下,请不要在没有太多兴趣的语言中用枯燥(但有效)的答案打分-这些问题对于此问题会尽可能地完善目录,因此仍然有用。然而,这样做在那里的作者确实不得不把精力投入到高尔夫球的代码语言主要是给予好评的答案。 要获取灵感,请查看Hello World Collection。 目录 这篇文章底部的Stack Snippet会根据答案a)生成目录,a)作为每种语言最短解决方案的列表,b)作为整体排行榜。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,则可以通过打败旧分数来保持标题。例如: ## Ruby, <s>104</s> <s>101</s> 96 bytes 如果要在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: ## Perl, 43 + 2 (-p flag) = …

8
上升还是下降?
给定山羊的图像,您的程序应该最好尝试识别山羊是否倒置。 例子 这些是输入可能是什么的示例。不是实际的投入 输入: 输出: Downgoat 规格 您的程序最多应为30,000个字节 输入将包含完整的山羊 图片将始终包含山羊 如果山羊倒立,输出Downgoat,否则Upgoat 输入将是您可以将图像作为输入(文件名,图像的base64等)。 要点文件名仅供参考,不要依赖于包含“ Upgoat”或“ Downgoat”的图像名称或其他元数据。 请不要硬编码。这很无聊,我无法完全执行它,但是我可以很好地询问。 测试用例 要点与图像。开头的图像downgoat具有Downgoat输出和图像开始与upgoat有Upgoat输出。 第二批测试用例 确保在所有测试用例上测试图像。这些图像是jpgs。图像大小确实有所不同,但没有说太多。 注意:在接受答案之前,可以添加一些测试用例,以避免使用硬编码的答案并检查程序的总体性能。 正确获得我的头像的奖励积分:P 计分 分数是可以通过以下方式计算的百分比: (number_correct / total) * 100

30
我们对打高尔夫球并不陌生,您知道规则,我也是
编写最短的程序,打印出瑞克·阿斯特利(Rick Astley)的“ Never Gonna Give You Up”的全部歌词。 规则: 必须完全按照上面的pastebin *中的显示输出歌词。这是原始转储:http : //pastebin.com/raw/wwvdjvEj 不能依赖任何外部资源-所有歌词必须由代码生成/嵌入在代码中。 除非您在代码中包含完整的算法,否则不要使用现有的压缩算法(例如gzip / bzip2)。 使用任何语言,以最短的代码为准。 2012年6月1日更新: 对于包含非ASCII文本的解决方案,解决方案的大小将基于UTF-8编码以字节为单位。如果您使用无法在UTF-8中编码的代码点,则不会将您的解决方案视为有效。 更新,2012年6月7日: 谢谢大家的出色解决方案!明天下午我将接受最简短的回答。现在,彼得·泰勒(Peter Taylor)的GolfScript答案正在获胜,因此,如果您想击败他,就可以取得一些进步!:) * Pastebin中有一个错字(第46行,“知道”应为“已知”)。您可以决定是否复制它。

30
1,2,嘶嘶声4,4,嗡嗡声
介绍 在我们最近为标准编程练习收集最短解决方案目录的努力中,这是PPCG有史以来第一个香草FizzBu​​zz挑战。如果您希望看到其他目录方面的挑战,请访问“ Hello World!”。和“这个数字是素数吗?” 。 挑战 编写一个程序,打印从1到100(含1和100)之间的十进制数字。但是,对于三倍打印“ Fizz”而不是数字,对于五倍打印“ Buzz”。对于三和五的倍数的数字,请打印“ FizzBu​​zz”。 输出量 输出将是由换行符(\n或\r\n)分隔的数字(以及Fizzes,Buzzes和FizzBu​​zzes)列表。尾随换行符是可接受的,但前导换行符是不可接受的。除了您选择的换行符之外,输出应类似于以下内容: 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz 31 32 Fizz 34 Buzz Fizz 37 38 …

27
安抚您的Google霸主:绘制“ G”徽标
编写一个程序或函数,该程序或函数采用正整数N,并根据以下*构造输出Google的“ G”徽标的N×N像素图像: 例如,如果N为400,则应输出400×400像素的徽标,并带有正确的尺寸和颜色: 无论N的大小如何,它都应该看起来准确。例如,这里是N = 13: 您的代码不需要连接到互联网。例如,不允许缩放外部托管的svg。(不过,缩放在代码中编码的svg会很好。) 是否可以使用抗锯齿。由你决定。 请注意,“ G”的水平条并未一直延伸到图像的右边缘。圆在切掉之前通常在右边缘向内弯曲。 以字节为单位的最短代码获胜。 *徽标的结构已针对此挑战进行了简化。正确的构造可以在这里和这里看到。

30
如此真实的键盘,几乎可以品尝到
...不是那样的,对吧?任务很简单,输出以下文本: ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ________ ||` |||1 |||2 |||3 |||4 |||5 |||6 |||7 |||8 |||9 |||0 |||- |||= |||BS || ||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||__|||______|| |/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/__\|/______\| ________ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ||TAB |||Q |||W |||E …

30
用您喜欢的编程语言唱生日快乐
您最喜欢的编程语言刚刚度过了生日。保持友善并唱生日快乐歌曲。 当然,您应该通过使用该语言编写程序来完成此任务。该程序不输入任何内容,并将以下文本写入标准输出或任意文件: Happy Birthday to You Happy Birthday to You Happy Birthday Dear [your favourite programming language] Happy Birthday to You 您应该替换方括号中的部分(并省略方括号)。 这是一场代码高尔夫-最短的代码胜出。 更新 我很高兴这个问题引起了极大的兴趣。让我添加一些有关得分的额外信息。如最初所述,这个问题是代码高尔夫球,因此最短的代码将获胜。优胜者将在本周末(10月19日)被选出。 但是,我也会用其他投票方式奖励其他机智的人(我也鼓励大家也这样做)。因此,尽管这是一场代码高尔夫比赛,但也欢迎不太简短的答案。 结果 祝贺Optimizer,他以42字节长的CJam 提交赢得了比赛。

30
这是我的生日:D
介绍 去年是我的生日(真的!),可惜我不得不组织自己的聚会。好吧,现在你知道了,你至少不能做蛋糕吗? 挑战 给定一个整数n作为输入,编写一个完整的程序以输出带有n蜡烛的生日蛋糕。 输出量 放着一支蜡烛的小菜一碟是: $ | --- ~~~ --- 放着三个蜡烛的小菜一碟是: $ $ $ | | | ------- ~~~~~~~ ------- 我敢肯定你可以解决这个问题 但是,对于input0,必须输出以下内容: Congratulations on your new baby! :D 如果输入小于0,则应输出无烛蛋糕: --- ~~~ --- 不允许将任何内容输出到STDERR。 尾随换行符和空格是允许的。 获奖 以字节为单位的最短代码获胜。 排行榜 var QUESTION_ID=57277;OVERRIDE_USER=30525;function answersUrl(e){return"http://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"http://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 …

7
指数史莱姆编程:堆叠Minecraft史莱姆
泥是立方体形的敌人在我的世界被杀时分解成多个更小版本的自己。出于这一挑战的目的,我们将它们描述为具有3种颜色的8×8像素图像: ←真正的8×8版本。 精确的RGB颜色是: 0, 0, 0 眼睛和嘴巴 110, 170, 90 为中央,深绿色 116, 196, 96 外部较浅的绿色 挑战 编写一个程序或函数,该程序或函数接受一个正整数N,并输出一个打包成矩形的N个大小的粘液图像。从左到右,图像应遵循以下模式: 一叠2 (N-1)个 8×8的粘液。 一叠2 (N-2)个16×16的粘液。 一叠2 (N-3)个32×32的粘液。 依此类推,直到堆栈仅包含一个粘液。 大于8×8版本()的粘液图像是通过最近邻居的上采样(即,将所有像素加倍)生成的。请注意,您必须使用此处给出的确切的粘液设计和颜色。 最终图像将包含2个N -1粘液,宽度为2 (N + 3) -8像素,高度为2 (N + 2)像素。 图像可以以任何常见的图像文件格式输出,保存到文件或作为原始数据流打印/返回或在运行时直接显示。 以字节为单位的最短代码获胜。 例子 您的程序应产生这些确切的结果。 N = 1: N = 2: N = 3: N = …

30
画冰岛国旗
今年的UEFA Euro 2016已经结束,除了一些负面新闻外,冰岛国家足球队也带来了非常积极的惊喜。让我们画他们的国旗。 输入值 好吧,显然,这一挑战没有任何投入。 输出量 以至少100 x 72像素或25 x 18字符的任何适用视觉格式绘制冰岛国旗。 将输出保存到文件或立即呈现-示例格式为:png,jpg等图像,矢量图形,在HTML画布上绘制,甚至使用非空格字符进行可视化。 使用这些颜色:蓝色:#0048e0,白色:#ffffff和红色:#d72828。 如果你的语言不支持特定的颜色值,使用标准值,红色,蓝色和白色从ANSI颜色代码。 按照正确的比例绘制标志,如下图所示: 样板 您可以编写程序或函数。如果它是一个匿名函数,请举例说明如何调用它。 这是代码高尔夫球,因此最短答案以字节为单位。 不允许出现标准漏洞。 排行榜 显示代码段 var QUESTION_ID = 85141; // Obtain this from the url // It will be like https://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe"; var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk"; var …

30
正在载入…永远
您的挑战是制作一个无限的加载屏幕,如下所示: 或者,更具体地说: 不输入任何内容。 输出Loading...,带有尾随空格,但没有尾随换行符。 通过字符无限循环|,/,-和\:每0.25秒,覆盖最后一个与序列中的下一个。您可以只覆盖最后一个字符,或者删除并重写整行,只要Loading...保持不变即可。 规则 输出文本必须与指定的外观完全相同。尾随换行符/空格是可以接受的。 应该不最初显示输出之前等待0.25秒-第一帧应当被尽快程序运行打印。 您的程序应该可以无限期地运行。例如,如果您将计数器用于帧,则计数器绝不能超过您所用语言的最大值而不会导致错误。 尽管每个“帧”之间的等待时间应该为0.25秒,但显然这永远都不是精确的-允许10%左右的误差范围。 您可以提交功能,但必须将其打印到stdout。 您可以在非控制台(但仍基于文本)的环境中提交答案,只要它能够生成加载动画即可。 这是代码高尔夫球,因此最短的解决方案(以字节为单位)获胜。适用标准代码高尔夫球漏洞。 如有可能,请提供您正在使用的加载屏幕的gif。 例 这是我用来创建示例(unolfed)的C ++代码: #include <iostream> #include <string> #include <thread> using namespace std; int main() { string cycle = "|/-\\"; int i = 0; cout << "Loading... "; while (true) { // Print current character cout << …

30
画法国国旗
已经有许多发布的其他标志的挑战,但没有一个是国旗的法国。这周似乎是合适的时间。 以尽可能少的字节产生此标志: 图片的比例必须为3:2,且尺寸至少应为78像素宽和52像素高。 每个条纹占据宽度的三分之一。 条纹的颜色从左至右分别为RGB: ,(0, 85, 164),。(255, 255, 255)(239, 65, 53) 可以将图像以任何常见的图像文件格式保存到文件中,或通过原始方式通过管道传输到STDOUT,或者可以显示它。 或者,使用ANSI颜色代码为标志输出一个至少由78个字符宽的文本块,该文本块由非空白字符组成,用于描述该标志。(使用标准的蓝色,白色和红色。) 不允许内置标志图像/库。 以字节为单位的最短代码获胜。 排行榜 这篇文章底部的堆栈摘录从答案a)生成排行榜,答案是每种语言的最短解决方案列表,b)则是总体排行榜。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 ## Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,则可以将旧分数保留在标题中,方法是将它们打掉。例如: ## Ruby, <s>104</s> <s>101</s> 96 bytes 如果您想在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: ## Perl, 43 + 2 (-p flag) = 45 bytes 您还可以将语言名称设置为链接,然后该链接将显示在代码段中: ## [><>](http://esolangs.org/wiki/Fish), 121 bytes 显示代码段 <style>body { …

12
证明俄罗斯密码标准过于结构化
这一挑战的目标是找到一个不可能短期实现以下功能p,在您选择的langage。这是实现它的C代码(请参阅 此TIO链接,也将输出其输出)和包含该代码的Wikipedia页面。 unsigned char pi[] = { 252,238,221,17,207,110,49,22,251,196,250,218,35,197,4,77, 233,119,240,219,147,46,153,186,23,54,241,187,20,205,95,193, 249,24,101,90,226,92,239,33,129,28,60,66,139,1,142,79, 5,132,2,174,227,106,143,160,6,11,237,152,127,212,211,31, 235,52,44,81,234,200,72,171,242,42,104,162,253,58,206,204, 181,112,14,86,8,12,118,18,191,114,19,71,156,183,93,135, 21,161,150,41,16,123,154,199,243,145,120,111,157,158,178,177, 50,117,25,61,255,53,138,126,109,84,198,128,195,189,13,87, 223,245,36,169,62,168,67,201,215,121,214,246,124,34,185,3, 224,15,236,222,122,148,176,188,220,232,40,80,78,51,10,74, 167,151,96,115,30,0,98,68,26,184,56,130,100,159,38,65, 173,69,70,146,39,94,85,47,140,163,165,125,105,213,149,59, 7,88,179,64,134,172,29,247,48,55,107,228,136,217,231,137, 225,27,131,73,76,63,248,254,141,83,170,144,202,216,133,97, 32,113,103,164,45,43,9,91,203,155,37,208,190,229,108,82, 89,166,116,210,230,244,180,192,209,102,175,194,57,75,99,182, }; unsigned char p(unsigned char x) { return pi[x]; } 什么是 p p是两个俄罗斯密码标准的组成部分,即哈希函数Streebog和块密码Kuznyechik。在本文中(以及在ISO会议期间),这些算法的设计者声称他们pi通过选择随机的8位排列来生成数组。 “不可能”的实现 有8位上的排列。因此,对于给定的随机置换,不应期望实现该置换的程序需要少于1683位。256 !≈ 21684256!≈21684256! \approx 2^{1684} 但是,我们发现了多个异常小的实现(我们在此处列出),例如以下C程序: p(x){unsigned char*k="@`rFTDVbpPBvdtfR@\xacp?\xe2>4\xa6\xe9{z\xe3q5\xa7\xe8",l=0,b=17;while(--l&&x^1)x=2*x^x/128*285;return l%b?k[l%b]^k[b+l/b]^b:k[l/b]^188;} 它仅包含158个字符,因此适合1264位。单击此处查看它是否有效。 我们谈论“不可能”的简短实现是因为,如果排列是随机过程的输出(如其设计者所声称的那样),那么这种简短的程序将不存在(有关更多详细信息,请参见本页)。 参考实施 以前的C代码的可读性更高的版本是: …

30
为了纪念亚当·韦斯特
亚当·韦斯特(Adam West)去世了,我想在此纪念他在PPCG上的记忆,尽管我怀疑他知道我们的存在。尽管这个人以许多不同的事物而闻名,但没有比他作为原始蝙蝠侠的角色更突出的了。我将永远记得我的继父至今仍在观看老式的蝙蝠侠和罗宾。这个挑战本质上是简单的,根本不符合亚当·韦斯特这个复杂的人。但是,这是我能想到的最好的方法,因为这是该男子职业生涯中最具标志性的形象。 我想早些发布,但是我在等待有人提出更好的建议。 输出以下内容(带或不带尾随空格/换行符): * * **** * * **** **** ******* **** ****** ******* ****** ********* ********* ********* *********************************************** ************************************************* ************************************************* ************************************************* *********************************************** ***** ********************* ***** **** *** ***** *** **** ** * *** * ** 这是代码高尔夫球,最低字节数将获胜。

30
5个最喜欢的字母
挑战实际上非常简单。选择5个不同的字母(如果愿意,您可以选择5个最短的字母)并将它们输出到控制台。但是,不同之处在于它们必须来自以下列表: AAA BBBB CCCC DDDD EEEEE FFFFF GGG H H A A B B C D D E F G H H AAAAA BBBB C D D EEEE FFFF G GG HHHHH A A B B C D D E F G G H H A A BBBB CCCC DDDD …

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.