Questions tagged «array-manipulation»

通过使用和操纵数组来解决特定问题的竞赛。

30
整数矩阵的行列式
给定一个平方整数矩阵作为输入,输出矩阵的行列式。 规则 您可以假设矩阵中的所有元素,矩阵的行列式以及矩阵中元素的总数在您的语言可表示的整数范围内。 允许输出分数为0的十进制/浮点值(例如42.0代替42)。 允许使用内置函数,但是建议您包括不使用内置函数的解决方案。 测试用例 [[42]] -> 42 [[2, 3], [1, 4]] -> 5 [[1, 2, 3], [4, 5, 6], [7, 8, 9]] -> 0 [[13, 17, 24], [19, 1, 3], [-5, 4, 0]] -> 1533 [[372, -152, 244], [-97, -191, 185], [-53, -397, -126]] -> 46548380 [[100, -200, …

30
展平阵列!
在这个挑战中,您的任务是创建一个程序,该程序接受一个嵌套数组并返回一维扁平化数组。例如[10,20,[30,[40]],50]应该输出[10,20,30,40,50]。 输入项 输入将是一个嵌套数组(例如[10,20,[[[10]]]])。它仅包含整数(负数和正数),字符串和数组。您可以将输入作为函数参数STDIN或任何适合您的语言的参数。您可以假设输入数组将没有空数组。 输出量 输出将是一个扁平的一维数组,具有与嵌套数组中相同类型的相同元素,并且顺序相同。 测试用例 [10,20,30] -> [10,20,30] [[10]] -> [10] [["Hi"],[[10]]] -> ["Hi",10] [[[20],["Hi"],"Hi",20]] -> [20,"Hi","Hi",20] [[["[]"],"[]"]] -> ["[]","[]"] 随时要求使用注释进行任何澄清。这是代码高尔夫球,因此以字节为单位的最短代码胜出! 注意: 如果您的语言中包含内置语言,则不得使用它。 编辑 另请提供指向可以执行您的代码的网站的链接。

30
Yahtzee小直检测
在Yahtzee游戏中,玩家掷出五个六面骰子,并尝试制造某些手以得分。这样的一手牌是小顺子:四个连续的数字,不一定是顺序的。三种可能的小直道是1, 2, 3, 4,2, 3, 4, 5和3, 4, 5, 6。 例如,[3, 5, 6, 1, 4]包含小笔直[3, 4, 5, 6]。 输入项 五个整数的未排序列表,每个整数在1到6之间(包括1和6),表示Yahtzee手。 输出量 如果手牌有小笔直则为真值,否则为假值。 测试用例 真相: [[1, 2, 3, 3, 4], [1, 2, 3, 4, 5], [3, 5, 6, 1, 4], [1, 5, 3, 4, 6], [4, 5, 2, 3, 5], [1, …

18
展开数组
这个挑战是由有关Mathematica.SE的一个问题引起的。 假设您有一些任意结构的嵌套列表/数组(每个级别的列表不一定具有相同的长度)。为简单起见,我们假设节点是非负整数或空数组。举个例子 [[[1, 3], 2], [1, 4], 12, [[0, [], 0], [5, [7]]]] 有时,将列表展平以对节点执行一些操作更为方便,例如 --> [1, 3, 2, 1, 4, 12, 0, 0, 5, 7] --> [1, 1, 0, 1, 0, 0, 0, 0, 1, 1] 但是最后,您实际上想要保留原始结构,因此您想将其转换为 --> [[[1, 1], 0], [1, 0], 0, [[0, [], 0], [1, [1]]] 您的任务是执行最后一步。 …

9
“排序”算法
有一种“排序算法”,有时也称为Stalin排序,在该算法中,为了对列表进行排序,您只需从列表中删除元素,直到其按升序进行排序即可。例如清单 [1, 2, 4, 5, 3, 6, 6] 当使用斯大林排序进行“排序”时 [1, 2, 4, 5, 6, 6] 这三个被删除,因为它故障。 现在显然有许多方法可以删除元素以对列表进行排序。例如,任何少于两个元素的列表都必须进行排序,因此只要盲目地删除足够的元素,我们就可以对列表进行排序。既然是这种情况,我们只在乎斯大林排序可能的最长结果。 您的任务将是获取一个正整数列表,并输出可以通过从原始列表中删除元素而得出的最长排序(递增)列表的长度。那就是找到最长排序的(可能是非连续的)子列表的长度。 排序的列表可以连续多次具有相同的元素。除非程序本身为空,否则不需要支持空列表。 计分 您的答案将根据其可能的最长斯大林排序长度进行评分。程序将被解释为字节序列而不是字符序列,并且它们的顺序将是通过将字节解释为数字而产生的自然顺序。分数越低越好。 这不是代码高尔夫 这是一个简洁的工具,可帮助您对答案进行评分。 测试用例 [1, 2, 4, 5, 3, 6, 6] -> 6 [19, 2] -> 1 [3, 3, 4, 3] -> 3 [10] -> 1 [1, 2, 4, 9] …

30
是我的矩阵箭头吗?
定义 一个箭头矩阵是一个矩阵,其具有所有条目等于0,除了在主对角线,顶行和最左一列的那些。换句话说,矩阵应如下所示: * * * * * * * * 0 0 0 0 * 0 * 0 0 0 * 0 0 * 0 0 * 0 0 0 * 0 * 0 0 0 0 * 其中每个*是任何非零条目。 任务 给定非负整数的方阵,请根据上面的定义检查其是否为箭头。 除非您的语言等效于数组,例如指针和长度(例如C),否则您可能不将矩阵的大小作为输入。始终至少为3 x 3。 每种语言中以字节为单位的最短代码获胜。 输入输出 您可以选择以下任何一种格式来接收输入: 本机矩阵类型的矩阵(如果您的语言有一种) 2D数组1(1D数组的数组,每个数组对应于一行) 一维数组(因为矩阵始终为正方形) …

8
没有同质邻居
给定一个正整数列表,输出其中每个相邻的整数对是否共享一个素数。换句话说,当且仅当列表中没有两个相邻的整数互质时,才输出true。 换句话说:给定正整数列表[a 1 a 2 …a n ],输出是否 gcd(a 1,a 2)> 1 && gcd(a 2,a 3)> 1 &&…&& gcd(a n-1,a n)> 1。 该列表将始终包含至少两个元素(n≥2)。 然而… 这个挑战也是受限制的:在您的答案中的代码点(无论它在哪个代码页中)都必须满足程序检查的条件。 例如,print 2是一个有效程序。作为Unicode代码点的列表,它是[112 114 105 110 116 32 50],它满足以下条件:112和114共享因子2;和114和105的共用一个因子3,等 然而,main能不能在一个有效的程序产生(对不起!),为的Unicode代码点m和a,即109和97,是互质。(非常感谢,您的提交不必是一个完整的程序!) 您的程序不允许包含代码点0。 测试用例 真相: [6 21] -> 1 [502 230 524 618 996] -> 1 [314 112 …

22
排序攀登成绩
我的第一个代码高尔夫球场,对任何错误表示歉意... 语境 在攀岩(特别是抱石)中,V / Vermin(美国)攀爬等级从“ VB”(最简单的等级)开始,然后是“ V0”,“ V0 +”,“ V1”,“ V2”,“ V3” ,“ V4”,“ V5”等,直至“ V17”(最难的等级)。 任务 您将输入一个爬坡等级的列表/数组,并且必须返回或打印从最简单到最困难的爬坡等级的列表/数组。 如果输入为空,则返回一个空的数据结构;否则为0。否则,输入将始终是有效的。 测试用例 Input | Output [] | [] ['V1'] | ['V1'] ['V7', 'V12', 'V1'] | ['V1', 'V7', 'V12'] ['V13', 'V14', 'VB', 'V0'] | ['VB', 'V0', 'V13', 'V14'] ['V0+', 'V0', 'V16', 'V2', 'VB', …

30
合并阵列
任务很简单:整合一个整数数组。合并此数组包括以下内容: 所有0实例都需要移到数组的末尾。 非零整数之间不应有0。 所有非零索引都应保留其顺序。 挑战 以最少的字节数合并数组。 您正在合并一个随机长度的数组,该数组的大小最大为您的语言的最大值,并包含随机整数。输入可能是您语言的任何自然方式。 例子 输入项 0 5 8 8 3 5 1 6 8 4 0 3 7 5 6 4 4 7 5 6 7 4 4 9 1 0 5 7 9 3 0 2 2 4 3 0 4 8 7 3 1 …

29
它是前缀代码吗?
在信息论中,“前缀代码”是一个字典,其中所有键都不是另一个的前缀。换句话说,这意味着没有一个字符串以其他任何字符串开头。 例如,{"9", "55"}是前缀代码,但{"5", "9", "55"}不是。 这样做的最大优点是,可以将编码的文本记下来,并且它们之间没有分隔符,并且仍然可以唯一地解密。这在诸如Huffman编码之类的压缩算法中得到了体现,该算法始终会生成最佳的前缀代码。 您的任务很简单:给定一个字符串列表,确定它是否是有效的前缀代码。 您的输入: 将是任何合理格式的字符串列表。 仅包含可打印的ASCII字符串。 将不包含任何空字符串。 您的输出将是一个true / falsey值:如果是有效的前缀代码,则为True,否则为falsey。 这是一些真实的测试用例: ["Hello", "World"] ["Code", "Golf", "Is", "Cool"] ["1", "2", "3", "4", "5"] ["This", "test", "case", "is", "true"] ["111", "010", "000", "1101", "1010", "1000", "0111", "0010", "1011", "0110", "11001", "00110", "10011", "11000", "00111", "10010"] 以下是一些错误的测试案例: ["4", "42"] …

20
卓越的通过时间
有时候,当我真的很无聊时,我喜欢取一个非负整数数组的总和。我只取长度为2的幂的数组的总和。不幸的是我经常犯错误。幸运的是,我通过以下方式跟踪自己的工作: 我添加成对的相邻数字,直到只剩下一个。例如: 6 + 18 + 9 + 6 + 6 + 3 + 8 + 10 = 24 + 15 + 9 + 18 = 39 + 27 = 66 您的工作是确定我是否在某个地方犯了错误。您既可以将输入传递给函数,也可以从标准输入中读取。可以打印或返回输出。 输入:数组/列表/等。非负整数,如果您的语言需要,还可以包含该数组的长度。该数组将是从左到右然后从上到下读取的所有数字。例如,上面的数组将变为: [[6, 18, 9, 6, 6, 3, 8, 10], [24, 15, 9, 18], [39, 27], [66]] 或者, [6, …

30
是真的吗 问果冻!
背景 受到Octave(以及扩展为MATL)对真/伪矩阵的非常方便的解释的启发,Jelly得到了Ȧ(所有八度音阶)原子。 Ȧ将数组作为输入,如果数组为非空并且在树结构中的任何位置都不包含数字0(整数,浮点数或复数),则返回1;否则,返回0。 例如,数组[[]]是真实的,因为它是非空的并且不包含零。而[[0]]是虚假的,因为它在最内层包含0。 任务 用您选择的编程语言编写一个完整的程序或函数,该函数或函数将可能为空的,可能是锯齿状的整数数组作为输入,并打印或返回一个真值或伪值,该值指示a 分别返回1还是0。 您的提交必须遵守以下规则。 真值和伪值对于所有输入必须一致,即,Ȧ返回1的所有数组必须映射到相同的真值,而Ȧ返回0的所有数组必须映射到相同的伪值。 由于完整程序只能将数组的字符串表示形式作为输入,因此允许这样做。但是,您必须使用语言的规范表示形式,由repr或类似形式返回。 特别是,您不能假定数组的第一个元素前面将带有空格。 如果(且仅当)您的语言不能本地表示锯齿状数组,则可以使用任何现有编程语言的规范语法对输入进行字符串表示。 如果您的语言有几种表示锯齿数组的方式(例如,列表和元组),则只需支持其中一种。 如果您的语言具有内置语言,并且本身就是对此挑战的有效提交,那么您可以不在答案中使用它。允许所有其他内置插件。 鼓励您使用数组和字符串操作发布答案,即使其中一个比另一个短得多。 所有标准代码高尔夫球规则均适用。 可能以字节为单位的最短代码获胜! 真实的测试案例 [1] [10] [[]] [[[[1]]]] [[], [1], [1, 2]] [[1], [1, [2]], [1, [2, [3]]]] [[8], [8, [9]], [8, [9, [10]]]] 虚假的测试用例 [] [0] [0, -1] [-1, 0] [[[[0]]]] [[0], [1, 2], [3, …

16
谁最高?
N个孩子按一定顺序排列,没有两个孩子分享他们的确切大小。每个人只能将身高与其近邻比较。当老师大喊“如果你最高,举手”时,如果他们比两个邻居都高,他们就会高声喊叫,并且他们会同时举高声。如果只有一个人举手,他将获胜。如果不止一个举手,则将他们全部从该行中淘汰(保留其余孩子的顺序),然​​后重复该过程。 编写一个程序,该程序采用一组不同的整数(可以假定它们严格为正),并输出此游戏的获胜者。这是代码高尔夫球,因此最短的代码获胜。 示例(显示了中间阶段): 5 3 9 8 7→3 8 7→8 1 2 9 4→9 9 3 8 7 4 12 5→3 7 4 5 →3 4 →4 现任领导人: 果冻:17个字节[作者:Dennis♦] MATL:20个字节[作者:Luis Mendo] APL:28个字节[voidhawk] k:40个字节[Paul Kerrigan撰写] 还有一场Python之战。仍在等待更多的高尔夫语言出现。 我目前接受Dennis♦的回答-如果有新的获奖者,我将更新选择。

14
数组转义-离开那里
有一天,您醒来只是发现自己陷入了阵列。您尝试走出那里,同时获取一个索引,但是似乎还有其他规则: 该数组完全用自然数填充。 如果发现自己在索引上n,请转到该索引array[n],除了: 如果您发现自己n是素数索引,则可以array[n]退后一步 示例:您4从此数组中的index开始(起始索引为0): array = [1,4,5,6,8,10,14,15,2,2,4,5,7]; -----------------^ you are here 由于您所在的字段的值为,因此第一步8将进入索引8。您登陆的字段包含值2。然后,您进入索引2作为第二步。作为2质数,您需要向后退5步,这是您的第三步。由于没有索引-3,您总共分了3个步骤成功地对数组进行了转义。 您的任务是: 编写一个程序或函数,该程序或函数接受一个数组和一个起始索引作为参数,并输出逃逸该数组的步骤数。如果无法转义数组(例如,[2,0,2]使用start-index 2=>,则不断从index 2转到0),则输出错误的值。您可以使用基于1的索引或基于0的索引,但是请指定要使用的索引。 测试用例 输入: [2,5,6,8,1,2,3], 3 输出: 1 输入: [2, 0, 2], 2 输出: false 输入:[14,1,2,5,1,3,51,5,12,3,4,41,15,4,12,243,51,2,14,51,12,11], 5; 输出: 6 最短的答案将获胜。

9
旋转反对角线
背景 在大多数合理的编程语言中,旋转2D数组的行或列非常容易。在此挑战中,您的任务是改为旋转对角线。回想一下,二维数组的反对角线是在东北方向↗上获取的一维切片。 输入值 非空矩形2D数组,以任何合理格式显示。请注意,该数组可能不是正方形。 输出量 相同的阵列,但每个反对角线向右旋转了一步。 例 考虑3x4输入数组 0 1 2 3 4 5 6 7 8 9 0 1 该数组的反对角线是 0 4 1 8 5 2 9 6 3 0 7 1 它们的旋转版本是 0 1 4 2 8 5 3 9 6 7 0 1 因此正确的输出是 0 4 5 …

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.