Questions tagged «array-manipulation»

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

19
生成所有子列表分区
给定一个非空的整数列表,输出列表的每个可能分区,其中每个分区都是一个非空子列表。 因此,对于列表[1, 2, 3, 4],结果为: [[1, 2, 3, 4]] [[1, 2, 3], [4]] [[1, 2], [3, 4]] [[1, 2], [3], [4]] [[1], [2, 3, 4]] [[1], [2, 3], [4]] [[1], [2], [3, 4]] [[1], [2], [3], [4]] 列表在输出中的顺序无关紧要,因此[[1, 2, 3, 4]]可以是第一个,最后一个或任何位置。元素的顺序必须保留。 这是代码高尔夫球,所以最短的答案会获胜。 相关:对列表进行分区!

18
排序并重新应用阵列的增量
看来,任何简单的 修改使用一致的功能三角洲的几乎总是可以做一些其他的更短的 方式,丹尼斯。因此,我能想到的唯一使它变得更困难的解决方案是引入某种不一致的功能。 排序。 您的任务是获取一个整数数组,对它们的增量进行排序,然后重新编译以提供新的整数数组。 例如。 对于输入: 1 5 -3 2 9 获取以下增量: 4 -8 5 7 然后,对这些增量进行排序,得出: -8 4 5 7 并重新应用它们,将得到: 1 -7 -3 2 9 输入输出 您将得到一个列表/数组/表/元组/堆栈/等。通过任何标准输入法输入的带符号整数的数量。 您必须按照上述增量排序方法,以任何可接受的形式再次输出修改后的数据。 您将收到N个输入,0 < N < 10其中每个数字都在该范围内-1000 < X < 1000 测试用例 1 5 -3 2 9 -> 1 -7 -3 …

16
繁琐的7条规则
破败不堪 创建一个程序,该程序生成带有随机数的随机长度数组,然后应用一系列更改数组的规则。应用规则后,除非另有说明,否则打印数组的总和 阵列设定 数组的长度必须在5到10之间(包括1和20),并且必须是1到20之间的随机整数。每个数组长度应具有相等的发生概率,每个整数应具有相等的概率被每个元素拾取。 7条规则 规则应像按顺序应用一样起作用(例如:规则1在规则2之前执行),并且仅应用一次。对于规则应用证明,必须在每个规则应用之后且应用任何规则之前将阵列打印到控制台一次。 如果数组包含7,则从每个元素中减去1 如果应用了规则1,并且数组现在包含0,则向每个元素添加1 如果数组包含13,则从数组中排除13及其后面的所有元素 如果数组包含2,则排除所有奇数 如果数组包含20,并且第三个元素为偶数,则返回20作为总和,然后终止。如果存在20并且第三个元素为奇数,则返回数组长度的20倍作为总和,然后终止。 如果总和大于50,请重复删除最后一个元素,直到小于或等于50 如果数组包含16,则用十进制和十六进制打印总和。 例 这是一个初始数组, [20, 2, 5, 7, 14, 8] 可以应用规则1: [19, 1, 4, 6, 13, 7] 接下来应用规则3: [19, 1, 4, 6] 不需要其他规则,因此程序返回30作为总和。 笔记 我不是一位经验丰富的代码高尔夫球手,尽管我可以说我的个人记录是369个字节的 Python 3 。 规则不必按顺序实际应用,而必须像它们一样应用。

3
预购+后购到有序
任务 给定完整二叉树的前遍历和后遍历,返回其有序遍历。 遍历将表示为两个列表,两个列表均包含n个不同的正整数,每个列表唯一地标识一个节点。您的程序可能会采用这些列表,并使用任何合理的I / O格式输出结果顺序遍历。 您可以假设输入是有效的(也就是说,列表实际上表示对某些树的遍历)。 这是code-golf,因此以字节为单位的最短代码获胜。 定义 一个满二叉树是有限的结构节点,这里由唯一的正整数表示。 完整的二叉树是由单个节点组成的叶子: 1 或一个分支,由一个带有两个子树的节点组成(称为左子树和右子树),每个子树又是一个完整的二叉树: 1 / \ … … 这是完整的二叉树的完整示例: 6 / \ 3 4 / \ / \ 1 8 5 7 / \ 2 9 该前序遍历的满二叉树的递归定义如下: 包含节点n的叶子的预遍历是列表[ n ]。 包含节点n和子树(L,R)的分支的预排序遍历是列表[ n ] + 预排序(L)+ 预排序(R),其中+是列表串联运算符。 对于上面的树,就是[6,3,1,8,2,9,9,4,5,7]。 完整二叉树的后遍历定义如下: 包含节点n的叶子的后序遍历是列表[ n ]。 …

14
最大千里马!
受此问题启发,路易斯·门多(Luis Mendo)对此进行了完善。 挑战 给定一个2D整数矩阵,每一行都有一个最大值。每行的一个或多个元素将等于其相应行的最大值。您的目标是确定哪些列包含的条目数最多,这些条目等于其各自行的最大值以及在这些列中找到的按行最大值。 输入值 输入将是非空Mx N矩阵(M> 0和N> 0),其格式非常适合您选择的语言。 输出量 您的程序应返回包含最大行最大数(作为单独的值或列表)的每列的索引。可以使用基于0或基于1的索引(在说明中指定)。 您的程序还应该返回这些列中存在的最大值(单个数字)。 输出的顺序/格式是灵活的,但应在答案随附的文本中进行说明。 附加信息 输入矩阵中的所有条目均为正整数。 如果某行的最大值由该行中的多个元素共享,则该值的所有出现都将计入其列的总计。 如果多个列包含相同的最大值,则应返回具有该最大值的所有列的列表。 一个例子 考虑输入 7 93 69 35 77 30 第1行的最大值为93,仅出现一次,即在第2列。第2行:出现在第1列。第3行:也在第1列。所以获胜者的列为1,最大值为2。因此输出将是[1] [2]。如果我们将输入更改为 7 93 69 35 77 77 输出为[1 2] [2],因为两列的最大值均为2。 测试用例 input => output ( [1-based index array], [nMaxima] ) ---------------------------------------------- 7 93 69 …

8
画一个phi三角形
澄清:基本上,你需要这个 欧拉的totient函数的名称为phi。 让我们尝试计算phi(8) 首先,向后列出所有数字8,且不包括0或以下 8 7 6 5 4 3 2 1 现在找出哪些数字与8不共享因数(1不计数),并#在其位置放置a 。 8 # 6 # 4 # 2 # 删除数字。 # # # # - 现在执行此操作,但是将输出串成三角形 9 88 777 6666 55555 444444 3333333 22222222 111111111 --------- 123456789 # 排除非要素共享数 9 8# 7## 6#66 5#### 4#4#4# 3##3##3 2#2#2#2# …

3
旋转矩阵中的每个2x2块
挑战 给定一个n x m矩阵,n > 1并m > 1 用整数填充 1 2 3 4 5 6 以及具有与2x2矩阵中的块数量一样多的值的整数列表((n-1)*(m-1)如果需要确切的数字) [1,2] 2x2以给定的顺序输出矩阵,其中每个块按列表中的当前值旋转。上面的例子会产生 4 6 2 5 3 1 第一块向右旋转一次,第二块向右旋转两次。 笔记 正整数表示您向右旋转了许多步。 负整数表示您向左旋转了这么多步。 零表示您不旋转。 您逐行旋转块。这意味着您从第一行开始,然后转到右侧。旋转该行中的每个块后,您将转到下一个块。最后,每个程序块仅旋转一次。 请记住,这些块相互重叠。上述第一矩阵具有块[[1,2],[4,5]]和[[2,3],[5,6]]例如。 块的每次旋转都会影响相邻块的旋转。这就是为什么您必须按照上述模式进行旋转。 规则 您可以采用最方便的格式输入。请在您的答案中指定使用哪一个。这并没有让你读矩阵逐块虽然。 允许功能或完整程序。 输入/输出的默认规则。 有标准漏洞。 这是代码高尔夫球,因此最低字节数获胜。Tiebreaker是较早提交的内容。 测试用例 输入格式是矩阵列表和值的常规列表。 [[1,2],[3,4]],[-3]-> [[4,1],[3,2]] [[1,1,1],[1,1,1]],[-333,666]-> [[1,1,1],[1,1,1]] [[1,2,3],[4,5,6]],[1,2]-> [[4,6,2],[5,3,1]] [[1,2,3],[4,5,6],[7,8,9]],[4,0,12,-20]-> [[1,2,3],[4, 5,6],[7,8,9] [[1,2,3,4,5],[5,4,3,2,1],[1,2,3,4,5]],[2,-3,4,1,6, …

9
一个经典的排序代码高尔夫球问题
这是一个代码问题。 输入值 以最方便的格式列出非负整数。 输出量 以任何格式排序的相同列表最方便。 限制 在最坏的情况下,您的代码必须以O(n log n)的时间运行,这n是输入中整数的数量。这意味着例如随机快速排序。但是,还有许多其他选项可供选择。 不要使用任何排序库/函数/类似函数。另外,不要使用任何可以为您完成大部分排序工作的东西,例如堆库。基本上,无论您实施什么,都应从头开始实施。 您可以根据需要定义一个函数,但是请在实际运行的完整程序中显示该函数的示例。它应该在下面的所有测试案例中成功且快速地运行。 测试用例 In: [9, 8, 3, 2, 4, 6, 5, 1, 7, 0] Out:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] In: [72, 59, 95, 68, 84] Out:[59, 68, 72, 84, 95] In: [2, 2, 1, 9, 3, …

5
平均两个清单
平均两个清单 挑战 给定两个正整数列表,请确定是否有可能将元素重新排列为两个新列表,以使新列表具有相同的算术平均值(平均值)。 输入值 输入可以通过STDIN或作为函数参数获取。输入可以视为列表,或者如果您的语言不支持列表(或类似的数组/字典),则可以将输入作为逗号或空格分隔的字符串。那是, "1 4 8 2 5,3 1 5 2 5" 是相同的: [ [1,4,8,2,5], [3,1,5,2,5] ] 所有输入列表的长度将相同。 输出量 如果可以创建两个具有相同平均值的新列表,则程序/函数应打印或返回平均值。如果不能,则程序应输出一张悲伤的脸:(。 请注意,具有相等均值的重新排列的列表(如果存在)不必具有相同的长度。可以进行任意数量的交换以创建新列表。 例子 1 4 8 2 5,3 1 5 2 5 -> 1 4 8 2 3,5 1 5 2 5 (swapped 3 and 5) -> 3.6 1 …

1
Golfscript对角阵列
Golfscript中是否可以将数组的所有对角线合并为一个数组? 例如,对于数组 [[1 2 3][4 5 6][7 8 9]] 返回 [[7][4 8][1 5 9][2 6][3]] (不一定按该顺序)和 ["ABCD""EFGH""IJKL"] 返回 ["I""EJ""AFK""BGL""CH""D"] (不一定按此顺序)。假设数组的长度相同。 我正在努力解决这个问题。我尝试对字符串=的(length+1)th个字符进行处理并对其进行迭代,但这没有用。有人能帮我吗? 如果可能的话,我想用最短的方法做到这一点。

7
交叉序列
交叉序列 给定一个正整数列表,如果每个元素大于或等于前一个A,则称其为递增序列;否则,将其称为递增序列。如果每个元素小于或等于前一个元素,则将其称为递减序列。 一些增加的顺序: [1,2,4,7] [3,4,4,5] [2,2,2] [] 一些递减顺序: [7,4,2,1] [5,4,4,3] [2,2,2] [] 甲交叉序列是可以分解成两个不相交的子序列,一个增加的序列和其他的递减序列的列表。 例如,列表: [3,5,2,4,1] 是交叉序列,因为它可以分解为: [3, 4 ] [ 5,2, 1] 哪里[3,4]是增加的子序列,[5,2,1]是减少的子序列。我们将这样的一对(递增,递减)子序列称为交叉序列的分解。 名单: [4,5,2,1,3] 不是交叉序列;没有办法将其分解为增加和减少的子序列。 您的任务是编写一个程序/函数,将正整数列表作为输入;如果是交叉序列,则以其分解之一返回两个列表;或一些一致的“假”值(如果列表不是交叉序列)。 这是代码高尔夫球;每种语言中最短的程序/功能就是赢家。 规则: 输入是灵活的。 通常的漏洞是被禁止的。 如果有多种分解输入的有效方法,则可以输出其中一种或全部。 分解的输出格式很灵活;但是在两个子序列之间的区别上必须是明确的。 您可以使用任何一致的输出值来表示输入不是交叉序列。只要与任何交叉序列的输出相比,它都是明确的。您应该在答案中指定falsey值。 测试用例: 使用False,以指示不交叉的序列: [3, 5, 2, 4, 1] => [3, 4], [5, 2, 1] [3, 5, 2, …

7
具有奇特秘密力量的阵列战斗
这是一个相对简单的二维数组挑战。 想象一下一个有625英尺长士兵的战场。您指挥奇数部队,但不幸的是,偶数部队的力量使您不堪重负。值得庆幸的是,您的士兵拥有秘密力量:如果每个奇兵和周围同伴的力量可以被秘密力量数字整除,那么他们将发动最终的进攻并取得胜利!您必须尊重每位胜利的士兵。 规则 给定一个25 x 25的整数数组,其中每个元素都包含其x和y位置加1的乘积,返回满足以下条件的每个“胜利”奇数元素的坐标: 元素值及其相邻奇数元素(上,下,左和右)的总和可被输入(秘密幂数)整除。它必须在所有四个侧面上与其相邻且不能在边缘上。 提交可以是需要单个输入的功能或完整程序。输出可以是任何顺序。 我们的25 x 25阵列(战场)如下所示: 1, 1, 1, 1,... 1, 2, 3, 4,... 1, 3, 5, 7,... 1, 4, 7, 10,... etc. 例 这是一个3 x 3的示例: 43, 57, 71 46, 61, 76 49, 65, 81 为了确定某个元素(居中的61)是否获胜,我们将其值与相邻的奇数元素相加。 61 + 57 + 65 = 183 如果总计可被输入整除,则打印元素的x和y位置。如果我们的输入为3,则因为183可被3整除,所以将打印“ …

2
高尔夫我的Ada阵列
背景 Ada是一种编程语言,其简洁性并不十分出名。 但是,其数组文字语法在理论上可以允许相当简洁的数组规范。这是数组文字 语法的简单EBNF描述(可传递到bottlecaps.de: array ::= positional_array | named_array positional_array ::= expression ',' expression (',' expression)* | expression (',' expression)* ',' 'others' '=>' expression named_array ::= component_association (',' component_association)* component_association ::= discrete_choice_list '=>' expression discrete_choice_list ::= discrete_choice ('|' discrete_choice)* discrete_choice ::= expression ('..' expression)? | 'others' 为了简单起见,我们将自己限制为一维整数数组。这意味着我们将仅对表达式值使用整数。也许在将来的挑战中,我们可以尝试更高级的方法(例如声明变量和多维数组)。你不会有高尔夫整数文字。 为了清楚起见,以下是Ada数组文字和python式等效表示形式的一些示例: (1, 2, …

6
一致的开销字节填充(COBS)
令我惊讶的是,这还没有发布! 在一致的开销字节填充(COBS)算法用于分隔字节流。 我们选择一个帧标记(我们将使用0x00),并且在流中出现0x00的任何地方都将其替换为字节数,直到下一个出现0x00为止(我们将其称为里程碑)。这将值的范围从0..255减小到1..255,从而使0x00可以明确地界定流中的帧。 在一个里程碑,如果下一个255B不包含0x00,则超出最大里程碑长度-算法必须“停顿”在255B并放置另一个里程碑。这是“一致的开销”。 第一个字节将是第一个里程碑,最后一个里程碑将是直到帧标记的字节数。 维基百科的一些示例(最好阅读彩色文章): 0x00 as frame marker Unencoded data (hex) Encoded with COBS (hex) 00 01 01 00 00 00 01 01 01 00 11 22 00 33 03 11 22 02 33 00 11 22 33 44 05 11 22 33 44 00 11 00 00 …

11
映射作弊者!
提交所有作业后,将创建一个字典,将学生编号映射到其文件的哈希。 该字典,哈希表或映射(无论您的语言叫什么)将如下所示: {100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"} 关键是学生编号,而值是哈希。 我们的任务是挑选作弊者!作弊者是具有相同哈希值的作弊者。 给定输入后{100: "aabb", 104: "43a", 52: "00ab", 430: "aabb", 332: "43a"},该函数应返回(或打印)以下文本: 100 has identical files to 430 104 has identical files to 332 请注意,没有提到哈希唯一的文件。 另外,顺序在这里很重要: {100: "aabb", 202: "aabb", 303: "ab", 404: "aabb"} 应该返回(打印)以下文本: 100 has identical …

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.