Questions tagged «code-golf»

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

4
有没有特别擅长ASCII艺术的语言?
我想知道是否有任何针对文本输出和ASCII艺术的深奥或高尔夫语言? 例如,05AB1E至少从定位基本转化开始。是否有任何针对文本输出和文本输出美术的高尔夫语言? 如果是这样,他们是否在这里有提示页,并且它们是常用的吗? 注意:我不是在寻找能够输出ASCII艺术的语言,而是在寻找一种有意设计成能够以相对简短的方式完成ascii艺术挑战的语言。

29
找到最大偏差
此问题是从最初在Quora上提出的问题(不是针对代码高尔夫球)“启发”而来的。我只想对你们挑战(这是我在这里提交的第一个问题)。 给定一个整数元素数组v和一个整数d(我们假设d小于或等于数组的长度),请考虑该数组中所有d连续元素的序列。对于每个序列,计算该序列中元素的最大值和最小值之间的差,并将其命名为偏差。 您的任务是编写一个程序或函数,以计算上述所有序列的所有偏差中的最大值,然后返回或输出该值。 解决的示例: v: (6,9,4,7,4,1) d: 3 The sequences of length 3 are: 6,9,4 with deviation 5 9,4,7 with deviation 5 4,7,4 with deviation 3 7,4,1 with deviation 6 Thus the maximal deviation is 6, so the output is 6. 这是代码高尔夫,所以最短的答案以字节为单位。

18
多键排序
给定一个索引列表和零个或多个整数列表,输出按升序排列的整数列表,键优先级来自第一个输入。 例 令键输入为[1, 0, 2],列表输入为[[5, 3, 4], [6, 2, 1], [5, 2, 1]]。这些列表需要按其第二元素,然后是第一个元素,然后是第三个元素,以升序排序: 首先,我们按index处的值排序1:[[6, 2, 1], [5, 2, 1], [5, 3, 4]] 接下来,我们使用index处的值打破第一个排序的关系0:[[5, 2, 1], [6, 2, 1], [5, 3, 4]] 最后,我们用索引处的vlues打破所有剩余的联系2(这实际上并没有改变任何东西,因为没有剩余的联系)。 细节 排序是稳定的:如果两个元素相对于给定的排序键比较相等,则它们必须在输出中保持相同的相对顺序。例如,在给定的排序键下,如果A和B相等,则输入was为[..., A, ..., B, ...],A必须放在B输出中。 排序键永远不会引用输入列表之一中不存在的元素。 不会重复排序键。因此,[1, 2, 1]不是排序键的有效列表。 排序键未引用的任何元素均不计入排序顺序。只有初始相对顺序和排序键引用的元素的值才能确定输出顺序。 您可以选择排序键是零索引还是一索引。 排序键中将没有负值。如果选择使用单索引,则排序键中也不会有零。 整数值不会超出您的语言的本机表示范围。如果您选择的语言具有本地固有的任意精度整数(例如Python)的能力,则输入整数可以存在任何整数值,但要受内存限制。 参考实现(Python 2) #!/usr/bin/env python …

25
爆炸后缀
给定一个ASCII字符串,输出它的爆炸后缀。例如,如果字符串是abcde,则有5个后缀,按从长到短的顺序排列: abcde bcde cde de e 然后,每个后缀都会爆炸,这意味着每个字符将被复制与其后缀中的一个索引位置一样多的次数。例如,展开后缀abcde, abcde 12345 abbcccddddeeeee bcde 1234 bccdddeeee cde 123 cddeee de 12 dee e 1 e 总之,的爆炸后缀abcde是 abbcccddddeeeee bccdddeeee cddeee dee e 规则 这是代码高尔夫球,因此最短的代码获胜。 输入将包含可打印的ASCII字符。(这不包括换行符,但包括空格。) 输出将每个字符串放在单独的行中。 每行都允许使用尾随空格,并且末尾可能会有多余的换行符。 测试用例 '' 'a' a 'bc' bcc c 'xyz' xyyzzz yzz z 'code-golf' coodddeeee-----ggggggooooooollllllllfffffffff oddeee----gggggoooooolllllllffffffff dee---ggggooooollllllfffffff e--gggoooolllllffffff -ggooollllfffff …
20 code-golf  string 

16
在序列中找出奇数
挑战: 考虑以下函数F(N) = 2^N + 1,其中N的正整数小于31。该函数定义的顺序是: 3, 5, 9, 17, 33, 65, 129, 257, 513, 1025, 2049, 4097, 8193, 16385, 32769, 65537, 131073, 262145, 524289, 1048577, 2097153, 4194305, 8388609, 16777217, 33554433, 67108865, 134217729, 268435457, 536870913, 1073741825 输入将生成如下: 从上面的序列中获取5 个连续的整数。 用不同的正整数替换它们之一(该整数可能会或可能不会成为上述序列的一部分)。 (可选)对5个结果数字重新排序。 给定这样一个由5个整数组成的列表,找到被交换的一个,因此不属于原始5个连续整数的一部分。 例: 原始子列表:5, 9, 17, 33, 65。 替换为:5, 7, …

3
舍入为n个Sig图
挑战 给定一个数字x和一个数字n,将数字四舍五入x为n有效数字并输出结果。 重要数字 数字的有效数字是带有含义的数字,有助于其测量分辨率。这包括除前导零以外的所有数字。 请记住,小数点后的前导零仍然是微不足道的数字。 四舍五入一个数字时,如果以下数字大于或等于五,则必须四舍五入。 小数点后的所有尾随零均视为有效。 输入值 第一个数字为x,要舍入的数字。第二个数字将是n,您应舍入x到的有效数字数。 x将是介于-1,000,000,000到1,000,000,000(含)之间的数字(您的代码应同时处理整数和浮点数)。n将是介于1和50之间(含1和50)的正整数。n永远不会大于中的数字位数x。 输入将永远不是0或任何形式0,例如0.000或000。 例子 Inputs: 2.6754, 2 Output: 2.7 的输出2.7000将无效,因为小数点后的零将被视为有效数字。 Inputs: 0.00034551, 4 Output: 0.0003455 Inputs: 50237.1238, 3 Output: 50200 请注意,它不能有小数点。 Inputs: 2374905, 1 Output: 2000000 Inputs: 543.0489, 4 Output: 543.0 Inputs: 15, 1 Output: 20 Inputs: 520.3, 3 Output: 520 如果您愿意,可以520.改为输出,但不能输出520.0。 …
20 code-golf  math 

4
验证茎叶图
甲茎叶情节显示在组一串数值的,这是由所有,但最后一位决定。例如,假设我们有以下数据集: 0, 2, 12, 13, 13, 15, 16, 20, 29, 43, 49, 101 我们可以生成此茎叶图: 0|02 1|23356 2|09 3| 4|39 5| 6| 7| 8| 9| 10|1 第一行的主干为0,因此其“叶子”(位于-之后的数字)|代表0(含0)和10(不含)之间的值。每个茎上的叶子都经过分类。没有叶子的茎(如3)仍出现在图中。101的值在100包含和110之间,因此它的词干为10(100除以10)。 您面临的挑战是检查一段文字是否是有效的茎叶图。有效地块满足以下规则: 数据范围内的每个茎(即10个宽的组)正好有一行(包括中间没有叶子的茎) 没有茎超出范围 所有叶子按升序排列 所有茎都按升序排列 仅包含数字字符(除分隔符外|) 您不必处理具有小数部分的数字。您可以批准或拒绝词干中多余的前导零,但不允许使用空白词干。至少会有一个值。您只能在每行的叶子后面假设多余的空格。您可以假设前导和/或尾随换行符。所有字符均为可打印ASCII。 您的函数或程序应返回或输出(到屏幕或标准输出)有效绘图的真实值,或无效绘图的错误值。您可以将标准输入,文件中的输入当作一个大字符串,作为一个字符串数组-最为方便。 以下是一些有效的测试用例(用空行分隔): 2|00003457 3|35 4|799 5|3 99|3 100|0556 101| 102| 103|8 0|0 这是一些无效的测试用例,在右边有注释: |0 Blank stem 5|347 …

5
好奇心杀死了那只猫?
有人说,好奇心杀死了那只猫。有人说这是箱子和毒药。RSPCA称ErwinSchrödinger必须失去拥有宠物的权利。 与动物权利活动家在他家门外。该猫凶手科学家薛定谔终于拿出了他最伟大的发明。锑和hand的特殊放射性混合物,可以具有任何半衰期,并且一克产品能够杀死任何生物。不幸的是,当他尝试在他的最后一只猫:鲍勃(Bob)上进行测试时,他忘记了猫有9条生命,因此需要9克来杀死。有了一些水但没有食物,可怜的鲍勃如果不先杀了他就可以活1周(7天)。 任务:给定以毫克为单位的质量和以毫秒为单位的半衰期的输入-这两个整数都可以超过2 ^ 31,编写一个程序,输出神秘的超级产品是否杀死了猫,或者是1周时间限制先过期。假设答案是true / yes / 1 /,是指他没有死于饥饿。 为了使产品杀死他,总共必须腐烂9克。因此,在18克样品中,必须经过1个半衰期。如果样品中的含量小于或等于9克,将永远无法实现,因此可以立即假定9克腐烂之前要经过1周。 您可以假设: 鲍勃死了,微秒下降了9克。 由于衰减而变化的质量无关紧要。 所有的日子和时间都遵循公认的地球时间。 鲍勃被密封的盒子是牢不可破且无法打开的,因此不会有其他原因导致的死亡。 氧气也没有问题。 如果两者在同一时间发生,则任何一个输出都是可以接受的。 所有输入应低于2 ^ 63-1 测试用例: 例: 18000 604800001 要使9克衰减,必须准确地通过一半的寿命(18000/2 = 9000毫克或9克)。1个半衰期是604800001毫秒,即168小时1毫秒,或者正好是1周零1毫秒。由于Bob正好在1周内死于饥饿,因此输出结果是错误的,因为他在达到9克产品上限之前死于饥饿 8000 40000 false 70000 800 true 18000 604800000 either 18000 604800001 false 18000 604799999 true 1 1 false 100000 1 true 1000000000 …
20 code-golf  math 

9
Hexplosive ASCII艺术挑战
在策略游戏“ Hexplode”中,玩家轮流将令牌放置在六角形板上。一旦令牌的数量等于相邻图块的数量,该图块h就会爆炸,并将其上的所有tokes移至周围的邻居。您可以在此处在线玩游戏。 我喜欢这个游戏,但有时很难确切知道在特定图块上有多少令牌。我一直在计算邻居的数量。如果我有ASCII艺术来帮助我记住每个图块上有多少令牌,那将真的很方便。 您需要编写一个程序或函数,将正整数作为输入,并生成大小为N的六边形的ASCII表示形式。每个图块将是该图块具有的邻居数。由于1是一个奇怪的极端情况,邻居数为零,因此您只需要处理大于1的输入。 您可以采用任何合理的格式(例如STDIN,函数参数,命令行参数,来自文件等)的数字。输出也可以采用任何合理的格式,例如打印至STDOUT,写入文件,返回字符串列表,换行符分隔的字符串等。 这是前5个输入的一些示例输出: 2) 3 3 3 6 3 3 3 3) 3 4 3 4 6 6 4 3 6 6 6 3 4 6 6 4 3 4 3 4) 3 4 4 3 4 6 6 6 4 4 6 6 6 6 4 …

14
我的三角形需要更多节点
考虑标准等边三角形,其节点使用重心坐标标记: 我们可以通过添加3个顶点的新线(比原来的3节点三角形的一侧多一个),将3节点三角形变成6节点三角形,删除任何内部边缘(但不包括内部节点),然后重新标准化坐标: 重复此过程,从6个节点的三角形变为10个节点的三角形,添加一行4个顶点(同样,比原始6个节点三角形的一侧多一个),删除所有内部边缘(但不包括内部节点) )并重新标准化坐标: 此过程可以无限期重复。挑战的目标是给一个整数,N代表执行此过程的次数,并在重心坐标中输出关联三角形的所有节点。 输入值 您的程序/函数应采用一个非负整数作为输入,该整数N代表已应用此过程的次数。请注意,对于N=0,您应该输出具有3个节点的原始三角形。 输入可以来自任何来源(功能参数,标准输入输出等)。 输出量 您的程序/函数应以归一化的重心坐标输出所有节点。节点的顺序无关紧要。可以将数字指定为分数(不需要减少分数)或浮点数。您也可以输出“缩放”向量来指定节点。例如,以下所有3个输出都是等效的并被允许: 0.5,0.5,0 1/2,2/4,0 [1,1,0]/2 如果使用浮点输出,则您的输出应精确到1%以内。输出可以是所需的任何接收器(stdio,返回值,返回参数等)。请注意,即使重心坐标唯一地由每个节点2个数字确定,您也应该输出每个节点所有3个数字。 例子 示例案例的格式为: N x0,y0,z0 x1,y1,z1 x2,y2,z2 ... 其中第一行是input N,所有随后的行形成一个节点x,y,z,该节点应在输出中恰好一次。所有数字均以近似浮点数形式给出。 0 1,0,0 0,1,0 0,0,1 1 1,0,0 0,1,0 0,0,1 0.5,0,0.5 0.5,0.5,0 0,0.5,0.5 2 1,0,0 0,1,0 0,0,1 0.667,0,0.333 0.667,0.333,0 0.333,0,0.667 0.333,0.333,0.333 0.333,0.667,0 0,0.333,0.667 0,0.667,0.333 3 1,0,0 0.75,0,0.25 0.75,0.25,0 0.5,0,0.5 …

7
外观顺序:罗马数字版
挑战说明 我们遇到了一些涉及外观序列的挑战。快速提醒: 序列开头1, 该序列的后续项是通过枚举上一项中的每组重复数字而产生的, 因此,前几个术语是: 1 "one" 11 "one one" (we look at the previous term) 21 "two ones" 1211 "one two, one one" 111221 "one one, one two, two ones" 312211 "three ones, two twos, one one" 现在让我们做同样的事情,但是要使用罗马数字。我们从开始I并遵循相同的规则(我们将数字计数规则应用于字符,因此我们将其读IVX为one one, one five, one ten而不是one four, one ten或某种其他方式): I "one" II …

6
你能击败英国情报局吗?(非图求解器)
现在是时候进行一场艰险的任务,击败英国情报局。这项挑战的目的是编写最短的代码来解决Nonogram。 什么是非图? 规则很简单。您有一个正方形网格,必须用黑色填充或保留为空白。在网格的每一行旁边,列出了该行上黑色正方形的游程长度。在每列上方列出了该列中黑色正方形的游程长度。您的目标是找到所有黑色方块。在这种拼图类型中,数字是离散层析成像的一种形式,可测量给定行或列中有多少个实心正方形的连续线。例如,线索“ 4 8 3”表示按此顺序有四个,八个和三个填充正方形的集合,在连续的组之间至少有一个空白正方形。[ 1 ] [ 2 ] 因此,上述Nonogram的解决方案是: 实施细节 您可以根据需要选择表示Nonogram,并以您认为适合其语言的任何方式将其作为输入。输出也一样。挑战的目的是从字面上完成工作。如果您可以使用程序提供的任何输出来解决非图问题,那是有效的。一个警告是您不能使用在线求解器:) 这个问题在算法上非常具有挑战性(np-complete),因为它没有完全有效的解决方案,因此,您将不会因无法解决较大的问题而受到惩罚,尽管如果您的回答是正确的,则将得到极大的回报。能够处理大案件(请参阅奖金)。作为基准,我的解决方案在5到10秒内可达到大约25x25的分辨率。为了在不同语言之间提供灵活性,对于25x25的非图形,少于5分钟的解决方案就足够了。 您可能总是以正方形NxN非图形式感到困惑。 您可以使用此在线非图拼图制造商来测试您的解决方案。 计分 当然,您可以自由使用任何您想要的语言,并且由于这是代码高尔夫球,因此条目将按以下顺序排序:accuracy -> length of code -> speed.但是,请不要因代码高尔夫球语言而气,,所有显示高尔夫球手尝试的语言的答案以一种有趣的方式将被投票! 奖金 其实,我从英国情报部门发布的加密圣诞卡了解Nonograms 这里。第一部分基本上是一个25x25的大型Nonogram。如果您的解决方案能够解决此问题,您将获得荣誉:) 为了使您的数据输入生活更轻松,我提供了如何表示此特定难题的数据,供您免费使用。前25行是行线索,其后是'-'分隔线,随后是25行的col线索,然后是'#'分隔线,然后是填充有正方形线索的网格表示。 7 3 1 1 7 1 1 2 2 1 1 1 3 1 3 1 1 3 1 1 3 …

12
更改时区
挑战 给定一个时间和一个时区作为输入,输出该时区中的时间。 时间 时间将以24小时格式给出,如下所示: hh:mm 其中hh是两位数的小时,mm是两位数的分钟。请注意,小时和分钟总是用零填充,如下所示: 06:09 给定的所有时间均为UTC + 00:00。 输出中的小时数不必用零填充,但您的时间必须为24小时格式 时区 时区将以以下格式给出: UTC±hh:mm 其中±将是+或--和hh,是两位数字的小时,mm是两位数字的分钟(同样,这些数字将用零填充)。 要查找该时区的时间,您可以从输入时间中加(如果符号为+)或减去(如果符号为-)UTC±之后的时间。 例如,如果输入为24:56和UTC-02:50,则从24:56减去2小时50分钟: 24:56 02:50 - ----- 22:06 输出将是 22:06。 例子 芝加哥 Input: 08:50 and UTC-06:00 Output: 02:50 加德满都 Input: 09:42 and UTC+05:45 Output: 15:27 萨摩亚 Input: 06:42 and UTC+13:00 Output: 19:42 夏威夷 Input: 02:40 and …
20 code-golf  date 

30
画一个ASCII矩形
给定两个整数作为数组中的输入,使用第一个整数作为宽度,第二个作为高度,绘制一个矩形。 或者,如果您的语言支持,则可以将两个整数作为单独的输入给出。 假设宽度和高度永远不会小于3,并且始终会给出。 输出示例: [3,3] |-| | | |-| [5,8] |---| | | | | | | | | | | | | |---| [10,3] |--------| | | |--------| 这是代码高尔夫球,因此以字节数最少的答案为准。

13
它是词条吗?
使用任何编程语言来查看输入是否为词条的最短方法是什么? 单词是包含长度为1到原始单词长度的单词的单词。例如, 箱子 “我”是单词 “中”是单词 “ bin”是单词 要么, 阶段 'a'是单词 'ta'是单词(是的) 'age'是单词 'stag'是单词 'stage'是单词 输入值 您的代码应采用任何合理格式的单词和字典作为输入。 输出量 输出应为一个值,该值指示对或错,以告诉我们该单词是否为单词。 有关单词学家的更多信息,请单击此处。 这是我将用作输入和子单词的单词列表。另外,作为对@xnor的响应,它必须包含每个长度的子字,而不是一个子字链。注意,只有一个词将用作输入。

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.