Questions tagged «code-golf»

Code-golf是在最小的源代码字节中解决特定问题的竞赛。

7
最重的递增子序列
子序列是可以通过删除某些元素而不更改其余元素的顺序而从另一个序列派生的序列。严格增加的子序列是每个元素都大于前一个元素的子序列。 序列中增加最重的子序列是元素数量总和最大的严格增加的子序列。 用您选择的语言实现一个程序或函数,该程序或函数查找给定的非负整数列表中最重的递增子序列的元素和。 例子: [] -> 0 ([]) [3] -> 3 ([3]) [3, 2, 1] -> 3 ([3]) [3, 2, 5, 6] -> 14 ([3, 5, 6]) [9, 3, 2, 1, 4] -> 9 ([9]) [3, 4, 1, 4, 1] -> 7 ([3, 4]) [9, 1, 2, 3, 4] -> …

8
你今天有心情吗?
Debian Linux发行版(以及基于Debian的发行版,如Ubuntu,Kali和其他发行版)使用称为APT的软件包管理器。要安装程序,foo您需要在终端中输入 sudo apt-get install foo 以下是APT的一个小复活节彩蛋: apt-get moo 键入后将产生以下输出 (__) (oo) /------\/ / | || * /\---/\ ~~ ~~ ..."Have you mooed today?"... 您必须编写一个程序,以尽可能少的字节产生此EXACT输出。(包括尾随空格和换行符) 这是与输出相同的输出,\n以表示换行符,并以a *表示尾随空格 (__)*\n (oo)*\n /------\/*\n / | ||***\n * /\---/\*\n ~~ ~~***\n ..."Have you mooed today?"...\n 根据注释中的要求,这是mooing的md5sum。 35aa920972944a9cc26899ba50024115 -

3
格式化浮点数与十进制完全相同
任何二进制浮点都可以完全以十进制格式设置。结果字符串可能有些长,但是有可能。在关于浮点的文章中,我谈到了精度的重要性,现在我需要此功能。面临的挑战是编写一个程序或函数,该程序或函数将浮点值作为输入并格式化精确的十进制字符串作为输出。 为了确保我们使用正确的浮点数,必须提供精确的格式作为程序的输入。此格式将是两个整数Significand Exponent,实际的浮点值是Significand * 2 ^ Exponent。请注意,两个值都可以为负。 细节: 必须支持至少32位浮点数的范围和精度(没有输入会超出该范围) 十进制格式的值必须是精确的表示形式(仅足够接近以保证正确的倒圆角浮点不够好) 我们不信任标准库浮点格式化功能足够正确或不够快(例如:)printf,因此可能无法使用它们。您必须进行格式化。允许使用集成格式/转换功能。 可能没有任何前导零或尾随零,除非在.没有整数部分的情况下,前面必须有一个前导零。 允许一个功能或整个程序。 例子: 1 -2 => 0.25 17 -3 => 2.125 -123 11 => -251904 17 50 => 19140298416324608 23 -13 => 0.0028076171875 3 120 => 3987683987354747618711421180841033728 3 -50 => 0.00000000000000266453525910037569701671600341796875 -3 -50 => -0.00000000000000266453525910037569701671600341796875 10 -2 => 2.5 …

1
确定有理坐标是否在右Sierpinski三角形中
所述的Sierpinski三角形是一组其通过用一个三角形起始和反复分裂的所有三角形分成四个全等三角形并除去中心三角形构造在平面上的点。右侧的Sierpinski三角形在和处有角(0,0),如下所示:(0,1)(1,0) 该集合的一些等效定义如下: n全部针对上述过程的第t次迭代n。 (x,y)带有0 <= x <= 1和的点0 <= y <= 1,对于所有正整数n,nx和y的二进制展开式中的th位都不都是1。 让 T = {(0,0),(1,0),(0,1)} 让f上套由以下定义2D点的函数: f(X) = {(0,0)} ∪ {(x+t)/2 | x∈X, t∈T} 然后右谢尔宾斯基三角形是拓扑封闭的的至少固定的点的(通过一组容纳)f。 让S是正方形{(x,y) | 0<=x<=1 and 0<=y<=1} 让g(X) = S ∩ {(x+t)/2 | x∈(X), t∈T}(T如上定义) 然后,右边的Sierpinski三角形是的最大固定点g。 挑战 编写一个程序或函数,该程序或函数接受4个整数,a,b,c,d如果(a/b,c/d)属于正确的Sierpinski三角形,则给出真实值,否则给出假值。 计分 这是代码高尔夫球。以字节为单位的最短代码获胜。 测试用例 以下是右边的Sierpinski三角形: 0 1 0 1 …

7
找到最长的音乐子串
一个音乐弦线是可以在钢琴键盘上播放任何字符串。 对于那些没有被迫在小时候学习钢琴的人来说,这就是键盘的样子。 所以该字符串feed a dead cabbage是一个音乐字符串,因为每个单个字母都对应于其中一个。 您的挑战是编写一个程序,该程序将一个字符串作为来自STDIN的输入,并找到最长的音乐子字符串。然后,您的程序必须打印子字符串及其长度。这是一些示例输入/输出。 输入:“喂我!我饿了!” 输出:提要4 输入:不不不,没有musistrin! 输出:0 输入: "A **bad** !!!fAd82342" 输出:abadfad 7 输入:“打高尔夫球好!” 输出:dg 2 规则 您的输出可以是大写或小写字母,但不能有标点或空格。 输入字符串中会有大写和标点符号,但这并不影响子字符串是否被视为“音乐”。 音乐子字符串和数字之间必须有一个空格。

2
ASCII艺术方形仿射形
编写可以创建仿射形的最小程序。您可以使用任何会产生与以下规则相同的结果的方法。您不必使用建议方法中的任何想法! 您的程序将有两个输入,第一个输入以074从0到7的三位数组成的格式定义模式。第二个输入将定义大小,3将为8x8,4将为16x16,依此类推(2 ^ n)。您的程序必须为从0(1x1)到至少5(32x32)的所有大小输出正确的结果。如果它为更高的数字生成任何输出,则它必须是正确的,即,它必须在达到一定大小之前生成正确的输出,但是如果出现错误,则不会生成超出该大小的输出。您可能会假定最大大小为15(32768x32768),因为对于ASCII艺术作品(1GB)而言,这已经是疯狂的大小! 8x8模式将如下所示(规则160)。最左边的数字代表Block A,中间的数字代表Block (请不要粗鲁!),B最右边的数字代表Block C。要构建分形,请将其在两个维度上缩小一半,然后对块应用旋转/镜像规则。要缩小图案,请将其均匀分成2x2区域。每个区域中将只有3个可见字符或无。如果有可见的字符,则在较小的块中的适当位置放置一个字符,否则放置一个空格。规则0- 3未镜像,规则4- 7已镜像。规则0和4不旋转,1并且5顺时针旋转90度,2并且6旋转180度,3然后7顺时针旋转270度。按所示顺序将三个块缝在一起,分别A在左上角,B左下角和C右下角。 AAA AA A AA A BBB CC B BBC BBCCC B CCC 按规则编号缩小,旋转和镜像: 0 1 2 3 4 5 6 7 ---- ---- ---- ---- ---- ---- ---- ---- AA BAA CCB C C BCC AAB AA A BB A …

4
us修斯的新船
These修斯之船是一个古老的问题,类似于: 如果一艘船的所有原始零件都已更换,那它还是同一艘船吗? 对于本次高尔夫,我们将逐步替换“船”上的“零件”,并查看获得一艘新船需要多长时间。 任务 一艘船至少由两部分组成。零件以正(非零)整数数组的形式给出,代表零件的状况。 在每个循环中,以统一的方式从列表中随机选择一个零件。该零件的状况将减少一。当零件的条件达到零时,将其替换为新零件。新零件以与原始零件相同的条件值开始。 在第一个周期中,所有部件(至少)被更换了一次(至少),停止并输出所花费的周期数。 例如(假设我在这里随机选择零件): 2 2 3 <- starting part conditions (input) 2 1 3 <- second part reduced 2 1 2 ... 2 1 1 2 2 1 <- second part reduced to zero, replaced 1 2 1 1 2 3 <- third part replaced …

4
精确计算概率
此任务是关于编写代码以准确计算概率。输出应该是精确的概率,以其最大简化形式的分数表示。那是它永远不应该输出4/8,而应该1/2。 对于某个正整数n,请考虑一个长度为1s和-1s的均匀随机字符串,n并将其称为A。现在将A其串联为第一个值。就是说A[1] = A[n+1]从1 A开始的索引 现在具有length n+1。现在还考虑长度的第二随机串n,其第一n值是-1,0或1的概率是1 / 4,1 / 2,1/4每并调用它B. 例如,考虑n=3。对于可能的值A,并B可能会A = [-1,1,1,-1]和B=[0,1,-1]。在这种情况下,两个内积是0和2。 现在考虑的内积A[1,...,n]和B和的内积A[2,...,n+1]和B。 您的代码必须输出两个内积均为零的概率。 对于n=1这种可能性显然是1/2。 我不介意n代码中的指定方式,但是如何更改它应该非常简单明了。 语言和图书馆 您可以使用任何喜欢的语言和库。我想运行您的代码,因此请尽可能提供有关如何在Linux中运行/编译代码的完整说明。

3
IMP:隐式乘法解析器
杰克喜欢C编程语言,但不喜欢写表达式,例如V=a*b*h; 将值相乘。 他想改写V=abh;,为什么编译器抱怨abh自int a, b, h;定义后就没有定义符号,所以我们可以得出乘法呢? 如果已知当前作用域中定义的变量集,请帮助他实现一个解析器,该解析器可解密单个乘法项。 为简单起见,2*a*b不考虑乘以数字(如中的),仅显示变量。 输入是一个乘法项T,满足正则表达式: [a-zA-Z_][a-zA-Z_0-9]* 和可变组Z。 变量集Z上的项T的解析P是满足以下条件的字符串: *从P中删除所有出现的项后,我们收到T, 要么是Z中的变量名,要么由Z中的适当变量名组成,并用单个*字符分隔。 解决方案应打印术语的所有分析。 样品: Vars a, c, ab, bc Term abc Solution ab*c, a*bc Vars ab, bc Term abc Solution - Vars - Term xyz Solution - Vars xyz Term xyz Solution xyz Vars width, height Term widthheight …

2
反转vim中一行的每个单词
您的任务是构建一个vim脚本或提供一系列击键操作,这些操作将对一行文本进行操作,该文本行最多包含140个可打印的ASCII字符(在文件中的任何位置,光标从该行中的任意位置开始)并反转每个空格-将句子中的字符串分开,同时保持字符串的顺序相同。 例如,输入: roF emos nosaer m'I gnisu a retcarahc-041 timil no siht noitseuq neve hguoht ti t'nseod evlovni .rettiwT RACECAR 应该返回: For some reason I'm using a 140-character limit on this question even though it doesn't involve Twitter. RACECAR 字符最少或按键序列最少以实现此结果的脚本是赢家。
9 code-golf  vim 

1
最短子串索引
我是一个懒惰但有效率的人,你们中的许多人也可能是如此。因此,每当我在做某事时,我都想用最少的精力去做。这就是为什么我要你为我解决这个问题。 我在这里有各种各样的文件。本文档的每一行上都有一个单词或简短的短语。该文档未排序,但是我知道所有内容都可以。我可以使用一些帮助更快地找到事物,为此,我需要第二个清单。这就是您的来历。对于本文档中的每一行文本,我都需要一些标识符。我可以CTRL+的东西F,但是它不能超过获得一个结果绝对必要的时间。 输入示例: (blank) an apple spiderman 3 7pm pick up laundry tequila fake mustache dishes on wednesday banana biscuits (blank) 输出示例: ap,3,7,q,f,w,ba,bi 我将在这里重复一遍,以确保我们在同一页面上: 输入是一个无格式的文本文件,其中包含项目列表,并用换行符分隔。我在这里以.txt格式保存,称为“ STUFF.TXT” 文档的第一行和最后一行为空。每隔一行包含一个长度> 0的条目。 该文件仅包含字母数字字符(全部为小写),空格和换行符。 所需的输出是标识符列表,其顺序与我的原始列表相同。 我不希望每个列表项都有多个搜索词。如果有多个答案,请选择一个,我不在乎。在上面的示例中,我为选择了“ ap” an apple,但您可能选择了“ n”,“ a”,“ pp”,“ pl”或“ le”。不是'an',因为它在中banana。 我可以向您保证,该文件永远不会为空,并且永远不会包含重复项。 如有必要,您可以在行终止符上进行匹配。但这是万不得已的方法,只有在没有其他方法可以区分列表项(例如“苹果”和“苹果”)时才使用。 不允许出现标准漏洞。同样,这是代码高尔夫球,因此最短的代码获胜。 再举一个例子: (blank) ban any king bean yen rake …

2
编写一个GIF编码器
是的,很好的旧GIF。GIF因其多功能性而广受青睐,由于对其专利(和专利)的局限性而讨厌其专利,因此GIF的核心是调色板和使用LZW算法压缩的调色板索引图像。 您的任务是编写一个程序,该程序从标准输入读取ASCII PPM格式的图像(“ P3”幻数),然后将GIF格式的同一图像(逐像素相同)写入标准输出。输出可以是二进制形式,也可以是ASCII文本,每个字节由0到255(含)之间的数字表示,并用空格分隔。 确保输入图像的颜色不超过256种。 得分: 您的程序将在3个样本图像上进行测试,您的得分将计算为: 程序大小+总和(输出大小-每个样本图像的参考大小) 得分最低。 要求: 您的程序必须可以处理各种尺寸的任何相似种类的图像,并且不仅限于示例图像。例如,您可以将尺寸限制为2的倍数,或假设ppm最大颜色为255,但它仍应适用于各种输入图像。 输出必须是可以与任何兼容程序一起加载的有效GIF文件(如果使用ASCII输出选项,则转换回二进制文件之后)。 您不能使用任何图像处理功能(内置或第三方),您的程序必须包含所有相关代码。 您的程序必须可以使用免费软件在Linux中运行。 源代码只能使用ASCII字符。 样本图片: 这是将用于评分的3个示例图像。您可以下载包含ppm文件的zip存档(使用该页面顶部的下载按钮)。或者,您可以使用ImageMagick通过以下命令从下面的png图像中转换它们: convert file.png -compress none file.ppm 我还提供了ppm文件的MD5校验和以供确认。 1.琥珀色 参考大小 :38055 MD5 ppm校验和:d1ad863cb556869332074717eb278080 2.蓝眼睛 参考大小: ppm的28638 MD5校验和:e9ad410057a5f6c25a22a534259dcf3a 3.辣椒 参考大小: ppm的53586 MD5校验和:74112dbdbb8b7de5216f9e24c2e1a627

2
计算最大栅栏布置
背景 我要建篱笆。为此,我收集了一堆电线杆,并将其固定在地面上。我还收集了很多木板,将它们钉在电线杆上,以制作实际的围栏。我在建造东西时往往会被带走,很可能我会一直把木板钉在电线杆上,直到没有更多的地方放它们了。我想让你列举出我最终可能会遇到的障碍。 输入项 您的输入是一个二维整数坐标列表,以任何方便的格式表示极点的位置。您可以假定它不包含任何重复项,但是不能假设有关其顺序的任何信息。 这些板由两极之间的直线表示,为简单起见,我们仅考虑水平和垂直板。如果两极之间没有其他极或板,则可以将它们连接在一起,这意味着两板不能互相交叉。如果不能在其中添加新的板,则极和板的布置是最大的(等效地,在任何两个水平或垂直对齐的极之间有一个极或一个板)。 输出量 您的输出是可以使用极点构造的最大排列数。 例 考虑输入清单 [(3,0),(1,1),(0,2),(-1,1),(-2,0),(-1,-1),(0,-2),(1,-1)] 从顶部看,杆的相应排列如下所示: o o o o o o o o 可以使用这些极点构造三种最大的排列方式: o o o o-o o|o o-o o----o o||| o o| | o o-o o|o o-o o o o 因此正确的输出是3。 规则 您可以编写函数或完整程序。最低字节数获胜,并且不允许出现标准漏洞。 测试用例 [] -> 1 [(0,0),(1,1),(2,2)] -> 1 [(0,0),(1,0),(2,0)] -> …

2
总结彩色图
在某些情况下,通常在物理学中,您必须对图形求和。您面临的挑战是以您选择的语言编写一个程序或函数,该程序或函数将多个图形作为图像,计算所有可能的总和,然后输出结果。 图表 这些图是包含白色(rgb(255, 255, 255))背景且每列中都有非白色像素的图像。例子: 脚本的值表示为彩色像素的Y位置。某个X坐标处的值等于该列中最上面的彩色像素的Y位置,坐标从左下角的0开始。出于美学原因,在这些像素下方可能有也可能没有其他彩色像素。 任务 您的任务是以您选择的语言编写一个程序或函数,该程序或函数将多个图形作为图像,计算所有可能的2^n - 1总和,然后输出结果。 图形总和是其中每列的值等于每个输入图形中相应列的值之和的图形。 图表将有多种颜色。结果图像必须包含所有可能的图和,以及其他图,包括原始图,但不包括零和。 每个总和的颜色由所包括的图表的颜色(例如颜色图表)的平均值确定,rgb(255, 0, 255)并且rgb(0, 255, 255)将生成的图表rgb(128, 128, 255)(也可以四舍五入)。 生成的图像应与适合所有图形的图像一样高。这意味着您可能必须输出比任何输入都大的图像。 将结果图绘制到结果图像的顺序无关紧要,即,如果结果图重叠,则可以选择哪一个在顶部,但它必须是图之一,而不是其颜色的组合。 您可以假定输入图像的宽度相等,图像的所有列至少具有一个非白色像素,并且图像(包括输出)的高度低于4096像素。 例 输入A: 输入B: 输出示例: (如果有人感兴趣,我从随机公司的股票图表中复制粘贴了这些数据。这是我发现以CSV格式获取真实数据的第一种方法。) 规则 您可以选择任何位图图像输入文件格式。 您可以选择任何位图图像输出文件格式,而不必匹配输入。 您可以使用图像处理库,但是禁止直接完成此任务的任何功能。 有标准漏洞。 这是 代码高尔夫球,因此以字节为单位的最短代码获胜。 图生成器脚本 这是一个生成图的Python 2脚本。输入以行形式给出,前三行作为RGB颜色,其余三行作为数据,以EOF终止。 import PIL.Image as image import sys if len(sys.argv) < 2: sys.stderr.write("Usage: graphgen.py <outfile> …

2
下坡迷宫求解器
下坡迷宫由一系列由0到9(含0)到9(含)之间的数字分隔的行组成,外加一个“ S”和一个“ X”,其中S表示起点,X表示终点。在下坡迷宫中,您只能进入北,南,东或西与您相邻的空间(无对角线),并且只能进入小于或等于您的值的空间目前处于开启状态。 程序应以与输入相同的格式输出路径,以在迷宫中导航,只有所有经过的空格都应带有“”。在它们中,所有未访问的空间中都应带有“#”。起始和结束单元格还应分别保留其“ S”和“ X”。您可以假设迷宫总是有解决方案的。 输入示例: 3 3 3 3 2 1 S 8 9 3 1 1 3 3 0 6 8 7 1 2 2 4 3 2 5 9 7 1 2 1 5 4 3 4 4 6 1 1 X 6 4 4 5 …

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.