编程拼图和代码高尔夫

编程益智爱好者和代码高尔夫球手的问答

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个字符作为地雷和空瓦。 这是代码高尔夫,以最少的字节数获胜的程序。

6
对课本进行排序
对课本进行排序 学校即将开始(如果还没有开始的话),所以是时候准备好我们的教科书了。您需要按字母顺序对书籍进行排序,但是这花了太长时间,因此您决定编写一个程序来实现。 例子 输入: _ | | _ |F| | | |o|_|P| |o|B|P| | |a|C| | |r|G| |_|_|_| 输出: _ | |_ |F| | _|o|P| |B|o|P| |a| |C| |r| |G| |_|_|_| 输入值 输入将是需要按字母顺序重新排列的一组书籍。这将只包含:|,_,,和A-Za-z。书籍的标题是从上至下垂直阅读的。 您可以选择假定输入用空格填充以适合矩形。如果选择用空格填充输入,请在答案中指定。 您的程序需要处理的最大书本高度为5,120行,而不会失败。 书籍将始终为1层,输入中的书籍将始终至少为一本书 输出量 输出结果必须是按字母顺序组织的同一套书籍。重新排列时,书的高度必须保持相同,书名与顶部的间距必须相同。 书籍应按字母顺序排序。如果您的语言具有排序功能,则可以使用该功能。否则,您可以按照此处所述使用字母排序。 书名示例 _ | | | | |F| |o| |o| | | …

9
整数的qvolume
古老的知识是,每个非负整数都可以重写为四个平方整数的总和。例如,数字1可以表示为。或者,通常,对于任何非负整数,存在整数使得02+02+02+1202+02+02+120^2+0^2+0^2+1^2nnna,b,c,da,b,c,da,b,c,d n=a2+b2+c2+d2n=a2+b2+c2+d2n = a^2+b^2+c^2+d^2 Joseph-Louis Lagrange proved this in the 1700s and so it is often called Lagrange's Theorem. This is sometimes discussed in relation to quaternions – a type of number discovered by William Hamilton in the 1800s, represented as w+xi+yj+zkw+xi+yj+zkw+x\textbf{i}+y\textbf{j}+z\textbf{k} where w,x,y,zw,x,y,zw,x,y,z are real numbers, and i,ji,j\textbf{i}, \textbf{j} …

7
我们忘记了什么?
您的任务是编写一个由一些字节序列组成的非空计算机程序。如果我们在程序中选择一个特定的字节并将其所有实例从程序中删除,则修改后的程序应输出删除的字节。 例如,如果我们的程序是 aabacba 然后bcb将输出a,aaaca将需要输出b并且aababa将输出c。 未经修改的程序做什么无关紧要。 答案将以字节计分,目标是最大程度地减少字节数。

23
我转置源代码,您转置输入!
敲竹杠一个的敲竹杠一个的敲竹杠一个的敲竹杠。去投票那些! 您的任务(如果希望接受)是编写一个程序/函数,该程序输出/返回其输入/参数¹。棘手的部分是,如果我转置您的源代码²,那么输出/结果也必须转置。 您可以选择解决方案可以接受的2D数据类型。例如,列表列表,矩阵,字符串列表等。说明要处理的列表。您可以假设输入将始终为矩形,并且每个尺寸的长度为1或更大。 为了进行转置,源代码中的短行将被视为用尾随空格填充,直到它变成矩形为止,但是,这些尾随空格不会影响您的代码长度。 由于这是代码高尔夫,因此目标是优化原始源代码(而不是转置版本)的字节数。 例子 假设您的解决方案采用数字矩阵,而您的源代码为 AB DEF 其输入/参数为[[1,2],[3,4],[5,6]]。如果我写 AD BE F 而是运行它,输出/结果必须为[[1,3,5],[2,4,6]]。 假设您的解决方案采用换行符分隔的字符串,而您的源代码为 ABC 其输入/参数为"96\n"。如果我写 A B C 而是运行它,输出/结果必须为"9\n6\n"。

22
下雨了
灵感来自这个聊天迷你挑战。 给定一个字符串作为输入(仅ASCII可打印字符),输出带有“ raining”字母的字符串。每个字母必须是向下随机排列的行(0字符串之间和字符串的长度之间的随机性,每个字符串具有非零的概率),并且每列只能包含一个字符。所有可能的输出必须再次具有非零的发生概率。 这可能有点令人困惑,所以这是一个示例(摘自该CMC): Hello World d H o llo l W e r 请注意,如何H向下减小一个空格,向下减小d零,然后llo所有行都对齐。该r最远下来,9但仍小于字符串长度从顶部离开。这只是一个例子,还有许多其他输入的可能性Hello World。 其他示例可能是: test t e s t PP&CG & G P P C 输入和输出可以通过任何方便的方法给出。 输入保证为非空的(即,您将永远不会收到""输入)。 您可以将其打印到STDOUT或将其作为功能结果返回。 完整的程序或功能都是可以接受的。 只要字符适当排列(例如,随意填充为矩形),任何数量的外部空格都是可以接受的。 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常见的高​​尔夫规则都适用,并且最短的代码(以字节为单位)获胜。

28
计数车移动1D
给定一个具有一排车行和/或空白空间的位置,输出可能有多少个不同的车行移动。一个新车可以向左或向右移动到一个空白处,但不能移到需要越过另一个新车的地方。当一个新手移动时,其他新手保持在原位。 例如,从该位置开始,可以进行6次移动: .R..RRR. 第一个(最左侧)菜鸟可以向左移动1个空间,或者向右移动1或2个空间(3个移动) 下一个车队只能向左移动1或2个空格(2个移动) 第三只车根本无法移动,因为它被挤压在另外两个新车之间(0步) 最后一个小车只能向右移动1个空格(移动1个空格) 请注意,一个职位可能根本没有白痴,或者根本没有空白。 输入:白名单和空白区域的非空列表(字符串,数组等)。您可以将它们表示为True/ False,1/ 0,'R'/ '.'或任意两个一致的不同单字节字符或您选择的一位数字。由您决定,哪一个表示新手,哪一个表示空白。 输出:一个非负整数。整数浮点数也可以。 测试用例 输出是左侧的数字。 6 .R..RRR. 0 . 0 R 4 R..RR 3 ...R 8 ..R..R.. 0 ...... 对于更多的测试用例,以下是所有输入,最长为5。 0 . 0 R 0 .. 1 .R 1 R. 0 RR 0 ... 2 ..R 2 .R. 1 .RR …

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.