Questions tagged «code-golf»

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

21
迭代phi序列
相关:迭代phi(n)函数。 您面临的挑战是计算迭代的phi函数: f(n) = number of iterations of φ for n to reach 1. 哪里φ是欧拉函数。 相关OEIS。 这是它的图形: 规则: 你的目标是输出f(n)从n=2到n=100。 这是代码高尔夫球,因此最短的代码获胜。 您可以检查以下值: 1, 2, 2, 3, 2, 3, 3, 3, 3, 4, 3, 4, 3, 4, 4, 5, 3, 4, 4, 4, 4, 5, 4, 5, 4, 4, 4, 5, 4, …

4
是二人的吗?
甲二分图是其顶点可分为两个不相交的集合,使得没有边缘在同一组连接两个顶点的曲线图。当且仅当图是2色时,图才是二部图。 挑战 给定一个无向简单图的邻接矩阵,您的任务是确定它是否是二部图。也就是说,如果一条边连接顶点i和j,则矩阵的(i,j)和(j,i)项均为1。 由于图是无向且简单的,因此其邻接矩阵是对称的,并且仅包含0和1。 细节 您应该采用N×N矩阵作为输入(任何形式,例如列表列表,字符串列表,类似C的字符串int**和大小,展平的数组,原始输入等)。 如果该图是二部图的,则函数/程序应返回/输出真实值,否则返回falsy。 测试用例 ['00101', '00010', '10001', '01000', '10100'] : False ['010100', '100011', '000100', '101000', '010000', '010000'] : True (divide into {0, 2, 4, 5} and {1, 3}) ['00', '00'] : True 计分 禁止直接计算答案的内建函数。 这是代码高尔夫球,因此,本月底之前最短的程序(以字节为单位)将获胜!

24
请给我勺冰淇淋
请给我冰淇淋蛋筒 在新英格兰,我们有很多很棒的冰淇淋店。他们大多数现在冬天都关闭了,所以... .-@@-. (======) (--------) (==========) (__________) \/\/\/\/\/ \/\/\/\/ \/\/\/ \/\/ \/ 目标 准确输出上述冰淇淋蛋筒。(或从函数返回) 这是代码高尔夫球,所以最短答案胜出

14
金字塔计划否定
在我的语言Pyramid Scheme中,有一个稍微有趣的结构:空三角形: ^ - 如果不提供任何参数,则返回0。要1使用此构造生成,可以使用以下代码: ^ /!\ ^--- - 这只是传递0给求反函数。我们可以继续否定这个结果: ^ /!\ ---^ /!\ ^--- - 得出0。又一个否定给出: ^ /!\ ^--- /!\ ---^ /!\ ^--- - 挑战 给定的整数Ñ ≥1,输出空金字塔被否定Ñ在所描述的方式倍。 测试用例 input output 1 ^ /!\ ^--- - 2 ^ /!\ ---^ /!\ ^--- - 3 ^ /!\ ^--- /!\ ---^ /!\ …

10
计数斐波纳契轨道
如果将类斐波那契数列定义为f k(n)=(f k(n-1)+ f k(n-2))%k,则对于某些整数k(其中%是模运算符),该序列因为(f k(n-1),f k(n-2))只有k 2个不同的值,所以它将必定是循环的。但是,此周期通常并不包括所有可能的值对,因此根据两个初始值f k(0)和f k(1),我们可能会得到不同的周期。例如,对于k = 2,根据前两个值,我们有以下四种可能性: 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0, 1, 1, 0, 1, 1, 0, 1, 1, ... 1, 0, 1, 1, 0, 1, 1, 0, 1, ... 1, 1, 0, 1, 1, 0, 1, 1, …

23
偶数的循环序列,介于
请考虑以下顺序: 1, 0, 1, 2, 4, 1, 6, 8, 0, 1, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 0, 1, ... 偶数位从0开始,并分组为长度递增的游程。它们循环排列,这意味着它们以升序排序,直到达到8,然后从0开始循环。1分隔偶数位的运行,它也开始序列。让我们直观地看一下该序列的形成方式: 1, 0, 1, 2, 4, 1, 6, 8, 0, 1, 2, 4, 6, 8, 1, 0, 2, 4, 6, …


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. …

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.