Questions tagged «code-golf»

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

11
颜色计数,按出现次数排序
这是一个简单的描述,我简直不敢相信这是以前没有打过的: 对于给定的图像(您的语言支持的任何格式),找到唯一的颜色并输出颜色列表。 打印十六进制RGB的颜色代码,即一个哈希符号,#后跟R的2位数字,G的2位数字和B的2位数字(#xxxxxx其中x可以是0-9,AF和/或af)。 十六进制代码后跟一个空格和十进制像素数,然后是换行符(\n或\r\n)。 该列表应按计数降序排序(最常见的颜色在顶部)。 如果有领带(两种颜色的颜色相同),顺序并不重要。 该图像将不包含透明度,因此任何alpha值都不重要。Alpha值可能不是输出的一部分。 必须支持4000x3000的图片尺寸(这可能与类型定义有关) 示例图像“ 10red 20blue 30black 40white”: 预期产量: #FFFFFF 40 #000000 30 #0000FF 20 #FF0000 10 样本图片“蓝色渐变”: 预期的输出之一(因为相同颜色的顺序可能有所不同): #718DFF 19 #5571FF 15 #3855FF 11 #8DAAFF 11 #1C38FF 7 #AAAAFF 7 #8D8DFF 6 #AAC6FF 6 #C6C6FF 5 #C6E2FF 4 #001CFF 3 #E2E2FF 3 #FFFFFF 3 …

11
什么是二进制时间?
什么是二进制时间? 每个人都知道正常时间。它位于屏幕的右上角(或放置在任何位置)。但是人们似乎很少会问自己一个问题:这是二进制时间? 二进制时间 二进制时间(True Binary Time)通过首先读取数字的最高有效位(MSB)来工作。如果该数字为0,则表示的时间是中午之前。如果该数字为1,则表示的时间是中午之后。下一位将第一位表示的半天分成两个相等的一半,这次是6小时。接下来的部分分为3小时,接下来的90分钟,依此类推。12:00:00似乎不应该发生的时代变得如此1。 我只能理解这种奇怪的计时系统,因此我需要一个程序来转换为我的程序。但是由于二进制数是Base-2,而2是小数,因此您的程序必须尽可能短。 要求 您的程序应以一个时间(24小时制)作为输入,并输出相应的二进制时间数字。 输出数字应具有16位精度(该数字应为16位长)。 您不能使用为您完成所有转换的内置函数。 如果需要四舍五入,则应设下限。 规则 标准漏洞禁止出现。 您的程序不应向写入任何内容STDERR。 测试用例 00:00:00==> 0000000000000000 12:00:00==> 1000000000000000 01:30:00==> 0001000000000000 10:33:06==> 0111000010001101 09:57:30==> 0110101000111000 06:00:00==>0100000000000000 18:00:00 ==>1100000000000000 计分 如前所述,要赢,您必须拥有最少的字节数。 意见书 为了确保您的答案显示出来,请使用以下Markdown模板以标题开头。 # Language Name, N bytes N您提交的文件大小在哪里。如果您提高了分数,可以将旧分数保留在标题中,方法是将它们打掉。例如: # Ruby, <s>104</s> <s>101</s> 96 bytes 如果您想在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字: # Perl, 43 + …

9
计算CRC32哈希
学分 这个挑战源自@miles。 创建一个计算输入字符串的CRC32哈希的函数。输入将是任意长度的ASCII字符串。输出将是该输入字符串的CRC32哈希。 说明 CRC32和其他CRC的算法本质上是相同的,因此这里仅展示CRC3。 首先,您需要生成多项式,它实际上是4位[n + 1]整数(在CRC32中为33位)。 在此示例中,生成多项式为1101。 然后,您将具有要哈希的字符串,在此示例中为00010010111100101011001101。 00010010111100101011001101|000 (1) append three [n] "0"s 1101 (2) align with highest bit 00001000111100101011001101|000 (3) XOR (1) and (2) 1101 (4) align with highest bit 00000101111100101011001101|000 (5) XOR (3) and (4) 1101 (6) align with highest bit 00000011011100101011001101|000 (7) XOR (5) …

16
阵列中最小的组
介绍 让我们观察以下数组: [1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1] 甲组由相同的位数彼此相邻。在上面的数组中,有5个不同的组: [1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1] 1, 1, 1 2, 2 1, 1, 1, 1 2, 2, 2 1, 1, 1 这些是最小的一组[2, 2],因此我们输出[2, …

16
最短的唯一子串
给定(在STDIN上,作为命令行参数或作为函数参数)两个截然不同的非空字符串,查找并返回第一个字符串的最短子字符串,而不是第二个字符串的子字符串。如果不存在这样的子字符串,则可以返回空字符串,返回不是原始字符串的子字符串的任何字符串,或者引发异常。如果要从函数返回,则在这种情况下也可能返回null(或未定义,None等)。如果将多个这样的子字符串捆绑在一起,则您可以返回其中的任何一个。 字符串可以包含任何可打印的ASCII字符。 在STDIN上给出的输入将在每一行上给出一个字符串。根据您的要求,可以在输入末尾添加一个空行。 这是代码高尔夫球,因此最短的有效程序将获胜。 一些测试案例 输入: STRING ONE STRING TWO 输出: E 输入: A&&C A&$C 有效输出: && &C 输入: (两个随机生成的80个字母的字符串) QIJYXPYWIWESWBRFWUHEERVQFJROYIXNKPKVDDFFZBUNBRZVUEYKLURBJCZJYMINCZNQEYKRADRYSWMH HAXUDFLYFSLABUCXUWNHPSGQUXMQUIQYRWVIXGNKJGYUTWMLLPRIZDRLFXWKXOBOOEFESKNCUIFHNLFE 所有有效输出: AD BJ BR CZ DD EE ER EY EY FF FJ FW FZ HE IJ IN IW JC JR JY KL KP KR KV LU MH MI …
14 code-golf  string 

6
ASCII艺术玛雅数字
这个挑战很简单。给定一个数字,请使用Mayan Base-20数字系统输出该数字的科学表示形式。 什么是玛雅系统? 玛雅人以20为底来存储数字,因此第一个位置是1s位置,第二个位置是20s位置,然后是400s,依此类推。 因此,玛雅编号以10 1为1底,但10实际上20以10 207为807底,以10 为底,依此类推。 他们用象形文字表示数字,并用特殊符号表示0。 ------------------- | | | | | | | | | | |-------------------| | | | | ------------------- 那是他们的零。(至少一半的picascii一半我的艺术性ascii艺术版本) 那是玛雅零符号的真实图片。1个 这是他们的五个: -------------------------------- | | -------------------------------- 还有一个4: ---- ---- ---- ---- | | | | | | | | | | | | …

3
创建一个饼图
挑战很简单: 根据许多输入值创建一个饼图。 输入将是一个由正数,十进制或整数组成的列表,输出将是一个饼图,其中每个输入值都由单独的颜色表示,并且每个区域之外的百分比值。 规则: 颜色必须在视觉上可以区分(确切的颜色是可选的) 至少会有两个,最大为10个输入值 圆的半径必须在[100 300]像素 范围内 只要默认输出给出[100, 300]像素半径,矢量图形就可以 百分比值应为整数 没有严格的规则说明应将百分比值放在何处,但必须容易看出它属于哪个区域 最接近的字符和圆的外边缘之间的距离必须在[5, 40]像素范围内 字体是可选的 该图可能有也可能没有黑线分隔每个区域 不允许创建用于创建饼图的函数,例如MATLAB:pie,Python:matplotlib.pyplot.pie和Mathematica:PieChart 正常的舍入规则(如果为(1.00, 0.5],则为up,如果为,则为down (0.5, 0.00)) 如果切片的百分比值小于0.5%,则输出0%。切片必须仍包含在图中。 请提供检查用地(或指向口译员的链接)。仅显示带有10个输入值的图就足够了(避免很长的答案) 例子 请使用下面的示例值。您可以使用列表转换成合适的格式数字列表转换器,例如这27个字节一个由jimmy23013。 x = [0.3, 1.2] x = [3, 6, 2, 10] x = [0.4387, 0.3816, 0.7655, 0.7952, 0.1869, 0.4898, 0.4456, 0.6463, 0.7094, 0.7547]

4
切换重力
挑战 您可以通过任何合理的方法为您提供平面上字符的ASCII艺术表示形式。它仅包含: [a-z]表示可移动字符。每个字母最多会出现在板上一次。 # 代表不动的墙壁 . 代表空白 例如: abcdef.gh#.. .......ij.#. #..#.......# ...#.#...### .#.......#q# .........### 您还会得到一个表示重力变化的字符串。它仅包含: > 代表向右引力的变化 < 代表向左引力的变化 ^ 代表向上重力的变化 v 代表向下重力的变化 例如: v>^ 您的程序必须依次模拟重力的每个变化,直到所有角色停止移动(他们撞到墙壁或另一个角色)为止。“掉落在地图边缘”的字符将被永久删除,并且字符可以“堆叠”在彼此之上。 在这个例子中,在开始时有向下重力(v),因此c,e,g,h,i,和j脱落的地图的底部。所有其他字符都向下滑动,直到碰到墙,这样留下地图: .........#.. a..d......#. #..#.f.....# .b.#.#...### .#.......#q# .........### 然后,我们继续向右移动重力(>),这使我们有了:注意a旁边的堆栈如何d。 .........#.. ........ad#. #..#......f# ..b#.#...### .#.......#q# .........### 最后,我们模拟了向上的重力(^),在此期间a和b跌落了地图。 .........#.. .........d#. #..#......f# ...#.#...### .#.......#q# .........### 您的任务是在重力转移后输出其余字符。它们可以以任何顺序给出。对于此示例,您可以输出的任何排列dfq。 测试用例 对于以下地图: …
14 code-golf 

6
将半排序插入未排序的数组
欢迎来到PPCG Inc.的第一天。作为我们最新的初级助理文件分类机,您有责任确保我们发送给您的所有文件都按字母顺序存档。猴子很容易做到。好吧,隐喻地说,就像我们确实雇用了一只猴子来做那样。你猜怎么了?原来猴子对我们的字母缺乏理解。无论如何,现在没有时间修复现在的混乱局面,所以请尽量不要使情况变得更糟,好吗?然后去吧!如果饿了,水冷却器旁会放着香蕉。祝好运! 职位描述 输入值 您将收到一个字符串列表(档案)和一个需要添加到该列表的字符串(文档) 所有字符串将仅包含大写字母,小写字母和空格 字符串始终以字母开头和结尾 任务 确定文档的目标位置:应在存档中接收的位置。目标位置可以如下确定: 对于每个职位: 计算该位置之前存档中字符串的数量(按字母顺序排列) 计算该位置之后档案中按字母顺序排列的字符串数量 将职位的分数定义为以上两个计数之和 文档的目标位置是得分最高的位置 在平局的情况下,所有得分最高的职位均有效地充当目标职位。只需要选择一个。 排序时: 大写和小写字母是等效的 字母前有空格 输出量 以任何形式添加了文档的存档 要么 基于0或1的索引中文档的目标位置 工作评估 最小字节获胜! 示例I / O Archive: Applebuck Season Friendship is Magic The Ticket Master Griffon the BrushOff Boast Busters Bridle Gossip Document: Dragonshy Position scores (0-based index): 0: …

7
绘制索引分形
介绍 在这个挑战中,索引2×2的矩阵是这样的: 0 1 2 3 我们定义了一系列类似分形的图案F(L),其中L是n这些索引的长度列表,并且F(L)具有size 。2n-1 × 2n-1 如果L == [],F(L)则为1×1模式#。 如果L != [],则F(L)构造如下。取P为L删除第一个元素后获得的图案。取4个大小充满周期的网格,并用模式替换用索引的网格。然后,使用网格之间的一层哈希将网格粘合在一起。这是四种情况的图表:2n-1-1 × 2n-1-1.L[0]P# L[0]==0 L[0]==1 L[0]==2 L[0]==3 #... ...# ...#... ...#... [P]#... ...#[P] ...#... ...#... #... ...# ...#... ...#... ####### ####### ####### ####### ...#... ...#... #... ...# ...#... ...#... [P]#... ...#[P] ...#... ...#... #... ...# …

7
把绳子变成风车
该站点上的代码正在迅速耗尽。我们需要投资可再生能源。因此,您必须编写一个使用字符串并将其转换为风车的程序。 挑战 让我们以一个简单的风车弦为例。拿弦abc。该枢纽为中心的性格,在这种情况下b。由于字符串的长度为3个字符,因此每个输出将恰好是三行高和三个字符宽。这是步骤1的输出。(请注意空格) abc 要进行下一步,请顺时针旋转每个字符。这是步骤2: 一种 b C 这是步骤3-8: 一种 b C 一种 b C cba C b 一种 C b 一种 C b 一种 在第九步中,它绕到原始字符串整圈: abc 注意b整个时间都停留在同一地点。这是因为b是关键人物。您必须编写一个将字符串作为输入的程序或函数,并重复打印此序列,直到关闭该程序。 澄清说明 所有输入字符串将具有奇数个字符。(以便每个风车都有一个枢轴) 为了简化挑战,所有字符串将仅包含大写和小写字母字符。 输出必须是len(input_string)宽而高的字符。 只要您继续旋转并永远循环,就从序列的哪一步开始无关紧要。 更多测试IO: 由于帖子已经很长了,因此以下是“ windmill”输出的链接: 边注: 由于这应该是风车,所以如果您包含一些样板代码以使其具有较小的时间延迟或在每个步骤之间由用户输入动画效果,那就太好了。但是,由于某些语言没有内置时间,因此这不是强制性的。您提交内容的竞争部分可以尽快打印序列。

5
确定乔木满意的点集
一个arborally满意点集是2D点集,使得对于可在所述一组作为相对的角通过两个点来形成,该矩形包含或触摸至少一个其它点的任何轴对齐矩形。这是维基百科的等效定义: 如果具有以下属性,则可以说是满足点集要求的点:对于不都位于同一条水平线或垂直线上的任何一对点,都存在第三个点,该点位于前两个点所跨的矩形中(在边界内或边界上)。 下图说明了矩形的形成方式。不能任意满足此点集,因为此矩形还需要再包含至少一个点。 在ASCII技术中,此点集可以表示为: ...... ....O. ...... .O.... ...... 稍作修改就可以使它满足: ...... ....O. ...... .O..O. ...... 在上方,您可以看到所有矩形(其中只有一个)至少包含三个点。 这是乔木满足的更复杂点集的另一个示例: 对于可以跨越两个点绘制的任何矩形,该矩形至少包含一个其他点。 挑战 给定的点的矩形网格(其余与代表O)和空的空间(我所代表与.),输出一个truthy值,如果它是arborally满足,或falsey值,如果它不是。这是代码高尔夫球。 附加规则: 您可以选择使用这些字符,O并.与任何其他可打印的ASCII字符对互换。只需指定程序使用哪个字符映射即可。 网格将始终为矩形。尾随换行符是允许的。 更多例子 乔装满意: .OOO. OO... .O.OO .O..O ....O ..O.. OOOO. ...O. .O.O. ...OO O.O. ..O. OOOO .O.O OO.. ... ... ... ... ..O ... O..... O.O..O .....O OOO.OO …

2
做一个蛇解析器!
蛇看起来像这样: >>>v @ ^ v ^ >>>^ v ^ v ^<<<<<<<<< 在这种情况下,蛇可以越过自身: @ ^ >^>v ^<< 为了使交叉有效,两侧的字符必须沿相同方向移动。的情况下 @ >^v ^< 可以认为不清楚和无效。 输出是WASD代表从头到尾(@)的字符串。 给定一条不会回溯且不模糊的蛇,您是否可以编写一个程序来输出蛇执行的一系列动作? 这是代码高尔夫球,所以最短的答案会成功! 测试用例: (注意:@可以用以外的任何字符替换v^<>) 输入: >>>>v v v<< @ v ^ >>>>>^ 输出: ddddssaassdddddww 输入: @>>v ^ v ^ v ^<<< 输出: dddsssaaawww 输入: >>>v v @ v …

10
我走了几步?
一个简单的计步器可以用一个摆锤来建模,该摆锤在相对的两侧具有两个开关-一个在x = 0处,一个在x = 1处。当摆锤接触到远处的开关时,可以认为步行者走了半步。当它接触附近的开关时,该步骤完成。 给定代表摆锤位置的整数列表,请确定计步器上记录的完整步数。 输入值 的整数升 > 0,轨道的长度。 代表每次计步器摆的位置的整数列表。 输出量 测量的完整步骤数。当摆锤接触远开关(x> = l),然后接触近开关(x <= 0)时,将采取步骤。 测试用例 8, [8, 3, 0, 1, 0, 2, 2, 9, 4, 7] 1 摆在t = 0时立即在x = 8处与远端开关接触。然后,它在t = 2和t = 4处触摸接近开关,完成一个步骤。此后,它在t = 8时再次触及x = 9的远处开关,但再也没有触及近处的开关。 1, [1, 5, -1, -4, -1, 1, …

8
仅用0-9和四个运算符来表示数字
说明 Befunge是使用stack的二维程序。 这就是说,做5 + 6,你写56+,意思是: 56+ 5 push 5 into stack 6 push 6 into stack + pop the first two items in the stack and add them up, and push the result into stack (to those of you who do not know stacks, "push" just means add and "pop" …

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.