编程拼图和代码高尔夫

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


10
交易一个ASCII牌组
从未出现过确定的ASCII卡挑战AFAIK。因此,使用以下ASCII卡组: .------..------..------..------..------..------..------..------..------..------..------..------..------. |2.--. ||3.--. ||4.--. ||5.--. ||6.--. ||7.--. ||8.--. ||9.--. ||T.--. ||J.--. ||Q.--. ||K.--. ||A.--. | | (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) | | :\/: || :\/: || :\/: || …

16
发生率最高还是最低?
挑战: 输入: 包含可打印ASCII的字符串(不包括空格,制表符和换行符) 布尔† 输出: 字符串的部分分为四组: 小写字母 大写字母 位数 其他 基于布尔值,我们要么输出这四个组中一个(或多个)中出现次数最高的一个,要么输出最低的,将所有其他内容替换为空格。 例如: 输入:"Just_A_Test!" 包含: -3个大写字母:JAT -6个小写字母:ustest -0个数字 -3个其他:__! 这些将是true或的输出false: true: " ust est " // digits have the lowest occurrence (none), so everything is replaced with a space false: " " (注意:您可以忽略尾随空格,因此输出也可以分别为" ust est"和""。) 挑战规则: 输入将永远不会为空或包含空格,并且只能由范围为33-126或'!'到的可打印ASCII组成'~'。 如果需要,可以将输入和/或输出作为字符数组或列表。 †允许布尔值有两个一致且不同的值:true/ false; 1/ …
13 code-golf  string 

5
折叠矩阵!
给定一个矩阵,向上/向下或向左/向右累加其值以形成一个X,向上折叠,然后返回列表。我在这里描述算法: 算法 您的输入将是您语言的合理数值范围内的整数的奇数方阵。 让我们以下面的矩阵为例: 1 2 3 2 1 0 3 2 3 0 4 2 5 6 3 7 4 7 9 4 0 6 7 2 5 首先,将每个数字加到主对角线或反对角线上最接近的数字。也就是说,将矩阵沿主对角线和反对角线分为四个部分,然后将每个部分中朝向中心的所有数字相加,如下所示: 1 2 3 2 1 ↓ ↓ ↓ 0 → 3 2 3 ← 0 ↓ 4 → 2 → …
13 code-golf  matrix 

17
十行条形图
这是APL CodeGolf 秋季比赛的 Hole-1 。我是该问题的原始作者,因此可以在此处重新发布。 给定一个数字列表,请生成一个水平的#字符条形图,以显示十个相等大小的组中每个组可容纳多少个数字。例如,如果数据的范围是0-100,则范围将是0–9.9、10–19.9,…,90–100。(通常为[0,10),[10,20),…,[90,100]。)您可能会假设至少会有两个数字,并且并非所有数字都相同。 例子: [1,0,0,0,0,0,0,0,0,0] 给出: ######### # [0,1,2,3,4,5,6,7,8,9] 给出: # # # # # # # # # # [0,1,2,3,4,5,6,7,8,9,10] 给出: # # # # # # # # # ## [0,1,2,3,4,5,6,7,8,9,10,11] 给出: ## # # # # # # # # ## [0,-0.5,-1,-1.5,-2,-2.5,-3,-3.5,-4,-4.5,0.5,0,-0.5,-1,-1.5,-2,-2.5,-3,-3.5,-4,1,0.5,0,-0.5,-1,-1.5,-2,-2.5,-3,-3.5,1.5,1,0.5,0,-0.5,-1,-1.5,-2,-2.5,-3,2,1.5,1,0.5,0,-0.5,-1,-1.5,-2,-2.5,2.5,2,1.5,1,0.5,0,-0.5,-1,-1.5,-2,3,2.5,2,1.5,1,0.5,0,-0.5,-1,-1.5,3.5,3,2.5,2,1.5,1,0.5,0,-0.5,-1,4,3.5,3,2.5,2,1.5,1,0.5,0,-0.5,4.5,4,3.5,3,2.5,2,1.5,1,0.5,0] 给出: ### …

7
在山坡上的小盒子
马尔维娜·雷诺兹(Malvina Reynolds)最初写了一首讽刺歌曲,名为Little Boxes,讲述郊区蔓延,歌词如下: 在山坡上的 小盒子,由发粘的小盒子做成的, 在山坡上的 小盒子,同样的小盒子。 有一个绿色的和一个粉红色的一个 ,一个蓝色的和一个黄色的, 它们都是由粘性的制成的, 它们看起来都一样。 在给定n>1代表房屋大小的整数输入的情况下,您的工作是使用以下颜色(以0xRRGGBB表示)输出四个“小盒子”: Green -- 0x00FF00 Pink --- 0xFF00FF (technically magenta) Blue --- 0x0000FF Yellow - 0xFFFF00 如果您的特定控制台没有这些确切的颜色,则可以使用最接近的可用颜色(例如ANSI转义码)。 这些房屋的建造n _代表着地板和屋顶。它们被代表墙壁的n/2(向上)|字符包围。屋顶总是2很高的,/在左边缘是两个,在右边缘是两个\,n-2 -代表了屋顶峰。随着房屋的变大,屋顶的相对大小也变小。这是有意的。 这是一间大小的房子2: /\ /__\ |__| 这是尺寸3: /-\ /___\ | | |___| 这是尺寸7: /-----\ /_______\ | | | | | | |_______| …

4
拉伸数组
之前我定义了粉碎数组的过程 迷恋我们从左到右读取数组。如果在某一点上我们连续遇到两个相同的元素,则将第一个删除,将第二个加倍。 例如,这是粉碎以下数组的过程 [5,2,2,4] ^ [5,2,2,4] ^ [5,2,2,4] ^ [5,4,4] ^ [5,4,4] ^ [5,8] ^ 请注意,同一元素可以折叠多次。在该示例中,2,2,4一次折叠就崩溃了8。 现在,粉碎阵列很容易,但要取消粉碎却很困难。您的任务是将一个正整数数组作为输入,并输出在重复压碎后可以形成输入的最大数组。例如,阵列[4]通过压碎形成,而压碎[2,2]又通过压碎形成[1,1,1,1]。由于我们不能有非整数值,[1,1,1,1]因此无法进一步展开,这就是我们的答案。 您将永远不会0在输入数组中收到a ,因为此类数组可以无限扩展。您也永远不会收到两个奇数彼此相邻的案件,这些案件不可能是压碎的结果。 这是代码高尔夫,因此答案将以其来源的大小(以字节为单位)进行评分,而字节越少越好。 在开始回答之前,我只想说这个挑战比看起来要困难得多。在进行过程中检查您的直觉,并确保您的答案通过了所有测试用例。 测试用例 [] -> [] [5] -> [5] [6] -> [3,3] [8] -> [1,1,1,1,1,1,1,1] [4,8] -> [1,1,1,1,1,1,1,1,1,1,2] [2,8] -> [1, 1, 1, 1, 2, 1, 1, 1, 1] [4,4] -> …

16
指数序列
波兰最古老的盐矿位于Bochnia *,始于1248年,我们可以认为这是一个神奇的数字。从求幂序列中可以看到它等于4位数字。 由于日期实际上是序列中的4位数字,因此我们可以将其延长。我们可以重复此过程,直到达到无穷大。如果我们将其限制为数字,则序列看起来像这样2048 124816326412825651210242048 为了使外观更好一点,我们可以将数字分开: 1|2|4|8|16|32|64|128|256|512|1024|2048 让我们尝试一个比日期更长的自定义序列。假设我们希望它有5位数字-可能性不止一种: 24816 81632 64128 或3位数字: 124 248 816 我们也可以在上面加上3位数字,但是,说一个序列必须至少有两个数字。 *英文维基百科上没有关于此的信息。如果您输入波兰语版本-那就有。如果您参观该矿,工人也会告诉您,该矿始于1248年。 挑战 像上面的示例一样,以2为基数创建一个幂序列。 给定范围为2-27的数字,请输出该序列的所有可能部分(如果需要,可以为2048或更大),且位数等于输入。您无法截断数字,因此输出之类481的无效,因为16被截成两半。 规则: 禁止出现标准漏洞。 您可以假设输入的数字是范围内的数字。 您的程序可以接受大于范围(28+)的输入,但是不会增加/减少得分。 输出中的空格将被忽略。您可以输出like 124或like 4 8 16。 列表中的任何字符应分隔不同的可能性:,./|或换行。 您可以输出为数组。 每种可能性都应至少包括2个不同的数字。 您必须输出序列的一部分,不能混合不相邻的数字,例如:14。 不允许硬编码输出,但是,您可以硬编码包含完整序列的字符串/数字/数组。 输入27应该返回完整的2048序列。 如前所述,请勿减少数字。例如 16必须停留16-您不能使用481-您必须使用4816。 编辑:我可能在那说错了;2048是您的程序应支持的最后一个数字,您可以添加对更大int的支持。 测试用例 输入: 2 12, 24, 48 输入: 3 124, 248, 816 输入: 4 …

2
构建比赛支架
给定一个非空字符串的输入列表,请根据以下绘制规则输出比赛的ASCII艺术表示形式: 字符串数保证为数量 2,4,8,16,etc. 前两个字符串互相演奏,后两个字符串互相演奏,依此类推。这是第一轮。 对于每个游戏,均等概率随机选择获胜者。 对于下一轮,第一场比赛的获胜者扮演第二场比赛的胜者,第三场比赛的胜者扮演第四场比赛的胜者,依此类推。随后的回合遵循该模式。 最终有一个总冠军。 为了获得漂亮的输出(必需),必须在所有字符串之前加上一个下划线_。 为了使方括号正确对齐,必须在每个条目中填充每个条目_的长度相同。 您可以选择填充是预先添加还是附加,只要一致即可。 取而代之的是,您可以选择将所有字符串预填充为相同的长度,而不是每回合一次。以您的代码为准。 进一步规则 前导或尾随的换行符或空格都是可选的,只要字符本身正确对齐即可。 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。 如果可能,请提供一个在线测试环境的链接,以便其他人可以尝试您的代码! 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常用的高尔夫规则都适用,并且最短的代码(以字节为单位)获胜。 例子 城市示例['Boston', 'New York', 'Charlotte', 'Atlanta', 'St. Paul', 'Chicago', 'Los Angeles', 'Phoenix']: _Boston______ \_New York____ _New York____/ \ \_New York_ _Charlotte___ / \ \_Charlotte___/ \ _Atlanta_____/ \ \_St. Paul_ _St. Paul____ / \_St. …

11
求和一个立方体的脸
手动求和Cubically多维数据集的脸是繁琐且耗时的,有点像用Cubically本身编写代码。 在“ 最有效的优化器”中,我要求您将ASCII转换为Cubically源。答案之一是使用多维数据集初始化序列,然后根据预初始化的多维数据集之和修改所得的多维数据集。此后,该方法已在许多与Cubub相关的程序中使用。测试新的初始化序列时,必须将所有面上的所有值加起来,通常需要两到三分钟。 您的任务是为我们自动化此过程! 您将接受两个输入,一个整数n和一个字符串c。这些可以从命令行参数,函数参数,标准输入,文件或它们的任何组合中读取。c将是一个立方大小的存储多维数据集,其大小n由解释程序漂亮地打印出来。 Cubically解释器在程序终止时将其多维数据集转储到STDERR,格式正确,易于查看。在Cubically解释器中运行一个空程序,然后打开debug部分以查看已初始化多维数据集的多维数据集转储。添加参数4以查看4x4x4或55x5x5等。 如果n为3,c将遵循以下格式(整数将是可变的): 000 000 000 111222333444 111222333444 111222333444 555 555 555 空格,换行符以及所有内容。如果n为4,c则将如下所示(也带有可变整数): 0000 0000 0000 0000 1111222233334444 1111222233334444 1111222233334444 1111222233334444 5555 5555 5555 5555 等等。 您的程序将输出六个整数。第一个整数将是顶面上所有数字的总和。 000 000 top face 000 111222333444 left, front, right, and back faces, respectively 111222333444 111222333444 555 555 bottom face …

28
数组分解
给定一个正整数数组,输出这些整数的不同素数的稳定数组。换句话说,对于输入中的每个整数,按顺序获取其质数因子,对其进行排序,然后将输出中尚未存在的任何质数附加到输出中。 测试用例 [1,2,3,4,5,6,7,8,9,10] -> [2,3,5,7] [10,9,8,7,6,5,4,3,2,1] -> [2,5,3,7] [100,99,98,1,2,3,4,5] -> [2,5,3,11,7] [541,60,19,17,22] -> [541,2,3,5,19,17,11] [1,1,2,3,5,8,13,21,34,45] -> [2,3,5,13,7,17] [6,7,6,7,6,7,6,5] -> [2,3,7,5] [1] -> [] [8] -> [2] [] -> [] 输出可以是整数或字符串的数组或列表,定界输出或输出数字的有序列表的任何其他标准方式。 这是代码高尔夫球,因此最短答案以字节为单位。

4
九头蛇杀手的归来
自从您杀死那只九头蛇以来已经有一段时间了,您沉浸在荣耀中已有好几年了,但是现在人们都在呼唤您,被洗净了。好了,现在您可以证明它们是错误的,您已经听说了另一只蛇蝎的下落。杀死它,您将获得应有的所有荣耀。 您到达军械库时会收到您的剑,但它们全都是普通剑,只剩下部门。一个n扇区将九头蛇的头数除以n,但仅当头数可被n整除时才能使用。 再一次,您将要编写一些代码来帮助您杀死hydra。您的代码将输入九头蛇的头数,开始战斗,九头蛇每回合增加的头数,以及可以使用的n个扇区的列表。您的代码将输出最佳移动方式,以尽快消灭水蛇 战斗的每一回合,您都可以选择一把剑来使用,如果在一片水after之后只有一个头赢得了您,如果没有,您会长出头。您可能永远不会采取任何行动,如果没有可能采取的行动,您将会输掉。 如果没有解决方案,您可能会输出除解决方案以外的任何内容,例如,空列表,无内容,数字零等。 这是代码高尔夫球,因此答案将按字节数计分,少者更好。 测试用例 这是一些超级基本的测试用例,如果需要,可以添加更多的测试用例。 24 heads, 1 heads per turn, [2,3] -> [3,3,2,3] 25 heads, 2 heads per turn, [2,3] -> No solutions 4 heads, 2 heads per turn, [2] -> No solutions 4 heads, 3 heads per turn, [2,5] -> [2,5] 10 heads, 17 heads …
13 code-golf  math  number  game 

5
辐射终端黑客
这里有人是贝塞斯达的忠实粉丝吗?也许您更喜欢黑曜石娱乐公司?好吧,如果您属于上述两种情况之一,那么您应该相对熟悉下图。 我已经准备了一个非常独特的ASCII艺术挑战赛,因此这是我要做什么的第一个线索: _____________________________________________________ / \ | _____________________________________________ | | | | | | | Welcome to ROBCO Industries (TM) Termlink | | | | Password Required | | | | Attempts Remaining: | | | | | | | | 0x01 | 0x0D | | | | 0x02 | 0x0E …

1
成为九头蛇杀手
您是该地区最好,最著名的英雄。最近,有传言说九头蛇一直在附近的峡谷中闲逛。作为您的勇敢和善良的英雄,您会发现今天晚些时候可以去检查一下。 水合物的问题在于,每当您尝试切断其头部时,都会有一些新的头部长回来。幸运的是,您拥有可以一次切断多个头部的剑。但是要注意的是,如果九头蛇的头部少于刀口,那么您将无法攻击九头蛇。当九头蛇的头部完全为零时,您就杀死了它。 还有一把特殊的剑,叫做“平分器”,可以切断九头蛇一半的头,但前提是头数是偶数。当头数为奇数时,完全不能使用平分线。这与切断零头不同。 因此,您已经决定要编写一个计算机程序,以找出消灭九头蛇的最佳方法。 任务 您将获得输入 九头蛇开始的头数 九头蛇每回合的头数 可供使用的剑列表(每把都是平分线或每回合切割固定数目的刀头) 您应该输出一个动作列表,该动作将在尽可能少的回合时间内杀死九头蛇。如果没有办法杀死九头蛇,那么您必须输出其他值来指示这样做(如果您的语言是强类型的,则可以使用空列表)。如果有多种消灭九头蛇的最佳方法,您可以输出其中任何一种或全部。 这是一个代码问题,因此答案将以字节计分,而字节越少越好。 测试用例 可根据要求提供更多 5 heads, 9 each turn, [-1,-2,-5] -> [-5] 12 heads, 1 each turn, [/2,-1] -> No solution 8 heads, 2 each turn, [-9, -1] -> [-1,-9] 3 heads, 23 each turn, [/2,-1,-26] -> [-1,-1,-26,-26,-26,-26,-26,-26,-26,-26] 16 heads, 1 …
13 code-golf  math  game 

5
秩相关系数
常用的相关系数(在2d中)用于衡量一条线对一组点的描述程度,如果是,则其符号指示我们是正相关还是负相关。但这是假设这些点的坐标实际上可以定量地解释为例如测量值。 如果你不能做到这一点,但你仍然可以订购的坐标,有秩相关系数:它测量如何好点可以通过描述单调函数。 挑战 给定一个二维点列表,确定它们的等级相关系数。 细节 您可以假定输入是正整数(但不必这样做)或任何其他“可排序”值。 这些点可以当作一个点的列表,也可以当作两个x和y坐标列表,矩阵或2d数组等。 输出必须是浮点数或有理数类型,因为它应表示介于0和1之间的实数。 定义 等级:给定数字列表,X=[x(1),...,x(n)]我们可以为每个条目分配一个rx(i)称为等级的正数x(i)。我们通过对列表进行排序并x(i)在已排序的列表中分配的索引来实现rx(i)。如果两个或两个以上x(i)具有相同的值,则仅使用所有相应索引的算术平均值作为等级。例: List: [21, 10, 10, 25, 3] Indices sorted: [4, 2, 3, 5, 1] 该数字10在此出现两次。在排序的列表中,它将占据索引2和3。这些的算术平均值2.5是 Ranks: [4, 2.5, 2.5, 5, 1] 秩相关系数:设[(x(1),y(1)),(x(2),y(2)),...,(x(n),y(n))]在给定的点,其中每个x(i)和y(i)是实数对于每一个(wlog你可以认为它是一个整数。)i=1,...,n我们计算的秩 rx(i)和ry(i)的x(i)和y(i)分别。 让d(i) = rx(i)-ry(i)是等级差别,让S被总和S = d(1)^2 + d(2)^2 + ... + d(n)^2。然后秩相关系数 rho为 rho = 1 - 6 * …

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.