Questions tagged «code-golf»

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

12
解码热图
热图 考虑一个矩形的房间,在其天花板上有一个热像仪指向下方。在房间里,有一些强度较高的热源1-9,背景温度为0。热量从每个源消散,每步(非对角线)降低一个单位。例如20x10房间 ...........1........ .................... ...8................ ..5...............2. .................... .1.................. ................1... .................65. .................... ............2....... 包含9个热源,热像仪显示的温度梯度为 34565432100100000000 45676543210000000000 56787654321000000110 45676543210000001221 34565432100000012321 23454321000000123432 12343210000001234543 01232100000012345654 00121000000011234543 00010000000121123432 在图形形式下,它可能类似于: 根据梯度,我们可以推断出某些热源的位置和强度,但并非全部。例如,由于所有9s都具有最高温度,因此总是可以推断出,因此8在这种情况下也可以推断出,因为它会在梯度中产生局部最大值。在2靠近右边框也可以推断,即使它是不是在当地最大的,因为它没有其他2的邻居。该5S,而另一方面,不推断,因为它们的热量还不如由靠近他们更加激烈的来源产生。所述0s的已知含有无热源,但所有其它瓦片可以潜在地包含一个。让我们用连字符表示不确定的图块-,某些热源用相应的数字表示,某些空白区域按句号表示.: ---------..1........ ----------.......... ---8-------......--. ----------......--2- ---------......----- --------......------ -------......------- .-----......-----6-- ..---.......-------- ...-.......-2------- 您的任务是从温度梯度产生这种推断的模式。 规则 输入将以换行符或竖线分隔的字符串形式给出|,以较方便的方式为准,并且输出形式应相同。输入和/或输出中可能有尾随定界符,但前面没有定界符。输入的大小可能有所不同,但其宽度和高度始终至少为4。功能和完整程序都可以接受。最低字节数获胜,并且禁止标准漏洞。 其他测试用例 输入: 898778765432100 787667654321100 677656543211210 678765432112321 567654321123210 图形形式如下所示: 输出: -9---8-------.. -------------.. --------------. …

14
解决全球债务,规范高尔夫的方式
世界各国领导人开会并最终承认,解决全球经济困境的最佳方法(也是唯一的方法)是盘算彼此的欠款,并以巨额支票相互偿还。他们雇用了您(具有讽刺意味的是,以最低的合同价格聘请您)来找到这样做的最佳方法。 经过深思熟虑,并要求某人绘制一个简单的示例,他们提出了以下规范。 每个国家/地区均以其ISO 3166-1 alpha-2代码表示:US美国,AU澳大利亚,JP日本,CN中国等等。 将分类帐作为一系列国家分录和每个国家的欠款进行草拟。 每个国家/地区的条目均以其域ID开始,即冒号,其盈余/赤字有多少(十亿欧元),然后是分号,然后是逗号分隔的国家/地区列表,以及有多少(十亿欧元)欧元)。 如果一个国家不欠另一个国家,则在该分号分隔符之后不输入该国家的任何提述。 赤字表示为负数,盈余表示为正数。 值也可以是浮点数。 分类帐必须来自STDIN。分类帐的结尾由空白行上的回车符指示。提示必须传送到STDOUT。 分类帐的示例: Input: AU:8;US:10,CN:15,JP:3 US:14;AU:12,CN:27,JP:14 CN:12;AU:8,US:17,JP:4 JP:10;AU:6,US:7,CN:10 然后,系统计算出每个国家的欠款和欠款,并确定其盈余/赤字,例如对于非盟: AU = 8(当前盈余)-10(至美国)-15(至CN)-3(至JP)+12(来自美国)+8(来自CN)+6(来自JP)= 6 完成所有计算后,必须显示一个提示: Output: AU:6 US:-5 CN:35 JP:8 您的工作就是创建一个系统,该系统能够为任何数量的国家采用任何数量的分类帐分录,并能够确定在支付所有费用后每个国家有多少赤字/盈余。 最终测试是让您使用代码来解决以下测试案例中以下国家之间的债务。这些数字取自2011年6月的BBC新闻。(http://www.bbc.com/news/business-15748696) 出于练习的目的,我将其各自的GDP用作其当前的盈余...请记住,这严格是代码质量保证的一项练习...在此问题中,将不讨论全球经济解决方案...如果您想谈论经济学,我敢肯定SE中还有另一个子域可以处理它... US:10800;FR:440.2,ES:170.5,JP:835.2,DE:414.5,UK:834.5 FR:1800;IT:37.6,JP:79.8,DE:123.5,UK:227,US:202.1 ES:700;PT:19.7,IT:22.3,JP:20,DE:131.7,UK:74.9,US:49.6,FR:112 PT:200;IT:2.9,DE:26.6,UK:18.9,US:3.9,FR:19.1,ES:65.7 IT:1200;JP:32.8,DE:120,UK:54.7,US:34.8,FR:309,ES:29.5 IE:200;JP:15.4,DE:82,UK:104.5,US:39.8,FR:23.8 GR:200;DE:15.9,UK:9.4,US:6.2,FR:41.4,PT:7.5,IT:2.8 JP:4100;DE:42.5,UK:101.8,US:244.8,FR:107.7 DE:2400;UK:141.1,US:174.4,FR:205.8,IT:202.7,JP:108.3 UK:1700;US:578.6,FR:209.9,ES:316.6,IE:113.5,JP:122.7,DE:379.3 现在,成为世界的经济救星! 规则: 最短的代码胜出...这毕竟是代码高尔夫... 请提供主要测试用例的输出以及代码答案...
32 code-golf  math 

30
伸展单词
编写一个程序或函数来复制单词中的字母,以便该单词中从左到右排列的所有重复字母都将构成输入数组。 例如: input: chameleon, [c,a,l,n] output: cchaamelleonn 输入值 起始词(例如chameleon) 字符数组([c,a,l,n])或表示数组(caln)的字符串,或类似的东西 输入可以通过功能参数,STDIN或等效语言进行 所有输入均为小写字母(az) 输出量 改变的词 如果有多种解决方案,则可以打印任何解决方案 input: banana [n,a] possible outputs: bannaana, banannaa |-|---------|-|--->[n,a] 您可以假设输入单词(不一定是数组)在数组中将有字母(按顺序) 您可能还假设输入没有相同的连续字母(不是苹果,怪胎,绿色,玻璃,门...) 例子 input: abcdefghij, [a,b,c] output: aabbccdefghij input: lizard, [i,a,r,d] output: liizaarrdd input: coconut, [c,o] ouput: ccooconut or coccoonut or ccocoonut input: onomatopoeia, [o,o,a,o,o] output: oonoomaatoopooeia …

9
柯尔莫哥洛夫躁狂症
字符串s 的Kolmogorov复杂度定义为输出s 的最短程序 P 的长度。如果P的长度短于s的长度,则称s是可压缩的,否则s是不可压缩的。大多数字符串是不可压缩的... 编写输出此字符串的最短程序(无空格和无换行符): d9 a6 b6 33 56 a7 95 4b 29 b0 ac 7f 2a aa 6d 19 b8 4b 4c f8 b6 2a ac 95 a1 4b 4e a5 9d b3 e7 c9 4c 49 59 ec 94 b3 aa 6c 93 8f 11 5a …

16
平衡三元转换器
有关挑战构想的功劳归@AndrewPiliser。他最初在沙盒中的提议被放弃了,因为他已经几个月没有活跃在这里了,所以我已经接受了挑战。 平衡三进制是非标准数字系统。这就像在数字的3倍的价值增加,因为你进一步去左边三元-所以100是9和1001是28。 但是,数字的值为-1、0和1而不是0、1和2 。(您仍然可以使用它来表示任何整数。) 对于此挑战,数字含义+1将被写为+,-1将被写为-,并且0是just 0。平衡三进制-不像其他数字系统那样使用数字前面的符号来取反它们-请参见示例。 您的任务是编写一个完整的程序,该程序将32位十进制带符号的整数作为输入并将其转换为平衡三进制。不允许任何类型的内置基本转换函数(Mathematica可能有一个...)。输入可以是标准输入,命令行参数等。 前导零可能出现在输入中,但不会出现在输出中,除非输入为0,在这种情况下,输出也应该为0。 例子 这些是从平衡三进制到十进制的转换;您将不得不进行另一种转换。 +0- = 1*3^2 + 0*3^1 + -1*3^0 = 9 + 0 + -1 = 8 +-0+ = 1*3^3 + -1*3^2 + 0*3^1 + 1*3^0 = 27 + -9 + 0 + 1 = 19 -+++ = -1*3^3 + 1*3^2 + …

19
矮人和硬币
情况: 几个M矮人发现了一个地精的箱子,上面放着N金币,必须将它们分开。由于古代规则控制着按优先级分配战利品给海盗,因此,最老的矮人应该比下一个最矮的矮人多获得一个硬币,依此类推,以便使最小的小矮人M-1比最老的矮人得到更少的硬币。另外,没有矮人必须投掷任何硬币(即,没有对任何矮人的负面硬币) 帮助矮人以这种方式分割硬币,或者告诉他们这是不可能的。 优胜者的代码必须始终正确回答(此挑战是确定性的),并遵循通用的代码高尔夫球规则。 输入值 硬币数的整数为N(3≤N≤1000),矮数的整数为M(3≤M≤N),以空格分隔。 输出量 如果无法按照矮人想要的方式分割硬币,则打印-1(减一)。否则,打印从最旧到最年轻的每个小矮人将获得的硬币数量。用空格分隔数字。 样品: 输入 3 3 输出 2 1 0 输入 9 3 输出 4 3 2 输入 7 3 输出 -1 输入 6 4 输出 3 2 1 0
32 code-golf 

7
桥梁和隧道
您负责建立新的高速公路。但是,它穿过山区,因此需要许多桥梁和隧道。高速公路本身应保持在单一水平。 输入值 您将获得有关标准输入中的山脉外观的ASCII粗略描述,例如: /\ / \ /\ / \ /\ / \/ \ / \ / \ /\ / \/ \ / \ _ / \ /\ / \ \ / \ / \ / \ /\ \ / \ / \/ \/ \ \ / \ / \/ \/ …

13
用ASCII艺术画一个立方体
任务描述: 在大致的橱柜投影中绘制ASCII艺术形式的立方体。 Monospaced fonts通常字符的宽度大约是宽度的两倍。由于输入的是垂直线的长度(不包括角),因此绘制的水平线的字符数是原来的两倍,因此生成的图像实际上大约是一个立方体。后退线的绘制长度是机柜投影所要求的一半。 用表示立方体的角,用+水平线表示,用-垂直线表示,用|对角线表示/。 总结:设输入为n,则 立方体的水平边缘用-2 n个字符组成,并由2 个n字符组成。 立方体的垂直边缘绘制有n个字符|,并由n个字符组成。 立方体的对角线边缘用n / 2个字符/组成,并由n / 2个字符组成。 用绘制立方体的角+。如上所述,不计算边沿长度的角(也​​请参见下面的示例)。 输入: 输入,在标准输入给定,是一个正,偶数Ñ(2≤ Ñ ≤30),使该立方体的垂直线的长度。它后面是一个换行符。 输出: 输出是遵循上述规则的标准输出上的多维数据集。行尾的空白将被忽略。 样本输入1: 2 样本输出1: +----+ / /| +----+ | | | + | |/ +----+ 样本输入2: 4 样本输出2: +--------+ / /| / / | +--------+ | | | | …

14
画算盘算盘
编写最短的程序,以单个整数作为输入并打印出算盘算盘 测试用例 输入: 314159 输出: |\======================================/| || (__) (__) (__) (__) (__) (__) || || (__) (__) (__) (__) || || || || || || || || || || || || || || || || (__) (__) || |<======================================>| || (__) (__) (__) (__) || (__) || || (__) || …

12
在vim中打高尔夫球的技巧
最近,我意识到vim如何很好地打高尔夫球,尤其是对于kolmogorov-complexity。同样,至少对于本网站而言,根据meta vim,它是一种完全可以接受的“编程语言”。 您在Vim打高尔夫球有哪些一般提示?我正在寻找可以应用于代码高尔夫球问题的想法,并且这些想法至少也特定于Vim(例如,“删除注释”不是答案)。 请为每个答案发布一个提示。
32 code-golf  tips  vim 

30
计算Adler-32校验和
背景 Adler-32是Mark Adler在1995年发明的32位校验和,它是被广泛使用的zlib库的一部分(也由Adler开发)。Adler-32不像32位循环冗余校验那样可靠,但是–至少在软件中–它更快,更容易实现。 定义 令B = [b 1,,b n ]为字节数组。 B的Adler-32校验和定义为low + 65536×high的结果,其中: 低:=(((1 + b 1 +⋯+ b n)mod 65521) 高:=((((1 + b 1)+(1 + b 1 + b 2)+⋯(1 + b 1 +⋯+ b n))mod 65521) 任务 给定一个字节数组作为输入,请遵循以下条件计算并返回其Adler-32校验和。 您可以将输入作为字节或整数数组或字符串。 在这两种情况下,输入中只会出现对应于可打印ASCII字符的字节。 您可以假设输入的长度将满足0 <length≤4096。 如果选择打印输出,则可以使用不超过256的正数。 如果选择一元,确保解释器可处理多达2个32 - 983056字节输出的机器上的RAM 16吉布。 禁止计算Adler-32校验和的内置函数。 …


19
改良的凯撒猪拉丁密码
凯撒密码的问题在于,所产生的单词通常不发音。Pig Latin的问题在于它易于解码。为什么不将它们结合起来? 输入值 由26个英文字母组成的单词。 输出量 首先,将单词中的每个辅音更改为字母表中的下一个辅音。因此,b转到c,d转到f,z转到b。然后,将每个元音更改为字母表中的下一个元音(u转到a)。最后,仅当单词的第一个字母为辅音时,才将该字母移到单词的末尾并在单词的末尾添加“ ay”。 例子: cat -> evday dog -> uhfay eel -> iim 这是代码高尔夫球,因此最短的代码获胜。 大小写无所谓。 将使用的元音是A,E,I,O和U

29
按自己的方式加倍
涉及源代码加倍的挑战很多:here和here。我们在这里要做的任务比较艰巨,但是应该可以用几乎所有语言来完成。 在此挑战中,您将输入一个任意正整数。你的程序必须输出整数一倍。当源代码加倍时,它将接受一个正整数,并将其输出为squared。 您的源代码如何增加一倍?好吧,你可以按照自己的方式去做。也就是说,你可以分割你的源代码成字节或字符的字符串(或标记化LANGS令牌)的任何等于你想要的长度,并且连续重复每个块的两倍。 对于初始程序ABCDEFGHIJKL,(长度为12),以下是所有可能的加倍程序: Chunk length | Doubled source code -------------+------------------------- 1 | AABBCCDDEEFFGGHHIIJJKKLL 2 | ABABCDCDEFEFGHGHIJIJKLKL 3 | ABCABCDEFDEFGHIGHIJKLJKL 4 | ABCDABCDEFGHEFGHIJKLIJKL 6 | ABCDEFABCDEFGHIJKLGHIJKL 12 | ABCDEFGHIJKLABCDEFGHIJKL 请注意,这意味着素数长度的程序只能以两种方式加倍:每个字符加倍,或者整个程序重复两次。 规则: 代码必须是完整的程序或功能。 禁止出现标准漏洞。 允许使用标准I / O方法。 所有字符/字节(包括空格和换行符)都计入代码的长度,并有助于组成块。 您可以假设输入及其平方可以由您语言的int / integer类型表示。 您可能不假定尾随换行符或其他字符。 在字节数后的标题中提供块大小。 这是代码高尔夫,所以程序越短越好!如果两个程序的长度相同,则使用较小块长度的程序将获胜。(如果您有一个较长的程序,而该程序使用的块长度较小,那也值得发布!) 如果您的程序需要第二个输入/行,则可以不对其值进行任何假设。特别是,如果第二个输入为空,与第一个输入相同或为另一个整数,则您的程序应该可以工作。如果您的程序不需要第二个输入/行,则可以忽略此限制。 沙盒链接

21
我的扫雷瓷砖周围是什么?
扫雷(Minesweeper)是一款益智游戏,其中地雷被隐藏在一块非描述性瓷砖周围,目的是识别所有地雷的位置。单击一个地雷会导致游戏失败,但是单击任何其他图块都会显示一个介于0到8之间的数字,表示有多少个地雷直接围绕在它周围。 给定一个数字,您必须显示一个随机的*可能的组合,其中包含空砖和包围它的地雷。这应该是3x3数组的形式。中心磁贴应为输入的地雷数量。 *所有组合发生的机率都必须为非零。 例子 _ = blank square X = mine 0 ___ _0_ ___ 1 _X_ _1_ ___ 1 ___ _1_ X__ ___ _1_ __X 4 _X_ X4X _X_ 4 X_X _4_ X_X 4 ___ X4X X_X 8 XXX X8X XXX 输入值 中心磁贴周围的地雷数量(0-8) 输出量 显示3x3瓦片阵列的任何合理形式的输出 其他规定 每种组合都不必具有均等的发生机会。执行程序时,每种组合都必须存在非零的机会。 可以选择2个字符作为地雷和空瓦。 这是代码高尔夫,以最少的字节数获胜的程序。

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.