Questions tagged «array-manipulation»

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

27
打印块对角矩阵
这是一个简单的,咬合大小(字节大小?)的代码高尔夫球:给定一个小于10的正整数的非空列表,打印一个块对角矩阵,该列表按顺序指定块的大小。块必须由小于10的正整数组成。因此,如果给出输入 [5 1 1 2 3 1] 例如,您的输出可能是 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 …

23
均衡数组
挑战 给您整数数组。通过移动,您可以将数组的元素增加或减少1。您的任务是均衡数组,即通过执行一些moves使数组的所有元素相等。但这还不够!你也想使尽可能少的动作尽可能。一种aa 输入项 非空阵列 整数的一种aa 任选地,该长度的。一种aa 输出量 均衡数组所需的最小移动次数。一种aa 规则 标准规定了有效的意见,I / O,漏洞适用。 这是代码高尔夫球,因此最短的解决方案(以字节为单位)获胜。像往常一样,不要让可笑的简短的高尔夫语言解决方案阻止您以您选择的语言发布更长的答案。 这不是规则,但是如果包含测试解决方案的链接以及其工作原理的说明,您的答案会更好。 例子 Input --> Output [10] --> 0 [-1, 0, 1] --> 2 [4, 7] --> 3 [6, 2, 3, 8] --> 9 [5, 8, 12, 3, 2, 8, 4, 5] --> 19 [1,10,100] --> 99

12
查找纵火犯的摇篮曲
想象一下一个纵火犯在城镇中走来走去,并按照一种非常特定的方式挑选受害者(或者,想象一下一只蜜蜂在花园里飞来飞去,并按照一种非常特定的方式挑选花朵进行花粉授粉)。假设城镇是一个N×N矩阵,其中N是大于或等于2的整数。纵火犯从左上角开始,依次将房屋M点设置在房屋前方(其中M是他们当前所在房屋的编号),同时按顺序更改每次火灾后房屋的移动方向东⟶南⟶西⟶北⟶东⟶南...依此类推。该摇篮曲纵火犯的价值是使他们离开城镇的M值(即,他们在停止憎恶之前所参观的最后一所房屋)。通过示例更容易理解。以以下矩阵为例: 3 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1 我们从左上角开始,所以M = 3(X标记纵火犯的当前位置和先前位置): X 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 …

30
实施惰性删除排序
这个挑战已经描述了dropsort。但是,我有点懒,我真的只需要对数组进行比以前更多的排序,就不必一直对它进行排序了。 在“丢弃排序”中,我们将每个元素丢弃的数量要少于之前的任何元素。在“延迟删除排序”中,我们删除的每个元素都小于严格位于其前面的元素。 这是一个例子。考虑以下数组: 8 6 9 9 7 2 3 8 1 3 让我们标记每个元素少于之前的元素。 8 6 9 9 7 2 3 8 1 3 ^ ^ ^ ^ 注意,既没有3标记,也没有标记8。它们都比它们左侧的单个元素大。 完成算法,除去标记的元素,我们得到: 8 9 9 3 8 3 这基本上看起来更加排序。金田 我很懒。 您可能已经推断出,您的任务是实现此算法。 输入是1到9之间的至少1个正整数的数组,因此您也可以使用数字字符串。 这是代码高尔夫球,最少字节获胜! 其他测试用例: 1 1 1 2 3 1 2 3 …

29
旋转总和
以包含正整数的方阵为输入,并计算该矩阵的“旋转总和”。 轮换金额: 取原始矩阵与旋转90、180和270度的同一矩阵的总和。 假设矩阵为: 2 5 8 3 12 8 6 6 10 那么旋转后的总和将是: 2 5 8 8 8 10 10 6 6 6 3 2 3 12 8 + 5 12 6 + 8 12 3 + 6 12 5 = 6 6 10 2 3 6 8 5 …

30
第N个差异
在数学中,一种计算给定关系的类型(线性,二次等)的方法是计算差异。为此,您要获取一个y值列表,其对应的x值之间的差距相同,然后从其上的数字中减去每个数字,从而创建一个比上一个列表短一的数字列表。如果结果列表完全由相同的数字组成,则该关系的差为1(线性)。如果它们不相同,则在新列表上重复该过程。如果它们现在相同,则该关系具有2的差(是二次关系)。如果它们不相同,则只需继续此过程,直到它们相同为止。例如,如果您具有用于递增x值的y值列表[1,6,15,28,45,66]: First Differences: 1 6 1-6 =-5 15 6-15 =-9 28 15-28=-13 45 28-45=-17 66 45-66=-21 Second differences: -5 -9 -5+9 =4 -13 -9+13 =4 -17 -13+17=4 -21 -17+21=4 As these results are identical, this relation has a difference of 2 你的任务: 编写一个程序或函数,当给定整数数组作为输入时,如上所述,该程序或函数返回该数组描述的关系的差。 输入: 整数数组,长度可以大于1。 输出: 一个整数,表示输入所描述的关系的差。 测试用例: Input => …

21
按频率分组列表
给定一个整数列表,将最先出现的元素分组,然后再分组第二个,依此类推,直到列表中的每个唯一元素都被分组了一次。 例子: 输入: [1,2,3] 输出: [[1,2,3]] 输入: [1,1,1,2,2,3,3,4,5,6] 输出: [[1],[2,3],[4,5,6]] 输入: [1,1,1,4,5,6,6,6,7,7,8,8,8,8,8,8,8,9,5,6,5,6,5,6,5,6,-56] 输出: [[6, 8],[5],[1],[7],[9,4,-56]] 输入: [] 输出: [] 输入: (empty input) 输出: ERROR/Undefined/Doesn't matter 规则 分组必须从最大频率到最小频率。 分组的内部顺序是任意的(例如,EG示例3可以具有[8,6])。 这是代码高尔夫球,最低字节数获胜。 有关 按频率降序对列表的不同元素进行排序

24
当整数加入队列时
介绍 甲队列是其中元件被抽象数据类型加入到前面(排队)和除去从背面(出列)。这也称为FIFO(先进先出)原则。 最好用一个示例显示: 挑战 给定一个非空数组,该数组包含正整数和表示出队(删除元素)的元素,请输出队列的最终列表。 假设X在此示例中表示出队。让我们看一下以下列表: [45, X, X, 37, 20, X, 97, X, 85] 可以将其转换为以下队列伪代码: Queue Enqueue 45 -> 45 Dequeue -> Dequeue -> (dequeue on an empty queue is a no-op) Enqueue 37 -> 37 Enqueue 20 -> 20 37 Dequeue -> 20 Enqueue 97 -> 97 20 …

21
保持非零及其邻居
摘自Stack Overflow的这个问题。也感谢@miles和@Dada为解决某些极端情况提供建议的测试输入。 挑战 给定一个整数值数组,请删除所有不包含某个非零值的零。 等效地,如果条目为非零或为立即接近于非零值的零,则应保留该条目。 保留的条目应在输出中保持其在输入中的顺序。 例 给定 [2 0 4 -3 0 0 0 3 0 0 2 0 0] 应删除的值用标记x: [2 0 4 -3 0 x 0 3 0 0 2 0 x] 所以输出应该是 [2 0 4 -3 0 0 3 0 0 2 0] 规则 输入数组可能为空(然后输出也应该为空)。 输入和输出格式像往常一样灵活:数组,列表,字符串或任何合理的格式。 …

29
子串总和集
介绍 让我们来观察此阵:[3, 2, 4, 1, 1, 5, 1, 2]。 每个元素显示必须加总的子字符串的长度。让我们看一下上述数组的第一个元素: [3, 2, 4, 1, 1, 5, 1, 2] ^ 第一个索引处的元素是3,因此我们现在取一个长度为3的子字符串,其索引与起始位置相同: [3, 2, 4] 求和时,结果为9,因此子字符串总和集合的第一个元素为9。 我们对数组中的所有元素执行此操作: 3 -> [3, 2, 4] 2 -> [2, 4] 4 -> [4, 1, 1, 5] 1 -> [1] 1 -> [1] 5 -> [5, 1, …

29
订购清单
摘要 给定一个整数列表,返回每个整数在排序时以其结尾的索引。 例如,如果列表为[0,8,-1,5,8],则应返回[1,3,0,2,4]。请注意,两个8保持彼此相对的顺序(排序是稳定的)。 换句话说,对于列表中的每个元素,返回列表中的元素数量:小于所选元素OR(等于元素AND出现在所选元素之前) 索引必须以0(而不是1)开头。编辑:给定较大的回推,我将允许基于1的索引。 测试用例: 0 -> 0 23 -> 0 2,3 -> 0,1 3,2 -> 1,0 2,2 -> 0,1 8,10,4,-1,-1,8 -> 3,5,2,0,1,4 0,1,2,3,4,5,6,7 -> 0,1,2,3,4,5,6,7 7,6,5,4,3,2,1,0 -> 7,6,5,4,3,2,1,0 4,4,0,1,1,2,0,1 -> 6,7,0,2,3,5,1,4 1,1,1,1,1,1,1,1 -> 0,1,2,3,4,5,6,7 1,1,1,1,1,1,1,0 -> 1,2,3,4,5,6,7,0

24
后置数组排序
输入: 包含三个整数的数组:0,1并且2以任意顺序(即[2, 0, 1]) 长度大于等于2的字符串仅包含字母(大写和小写)和数字(即a1B2c3) 输出: 基于数组,我们对字符串进行排序并输出。 这是如何运作的? 该阵列表示的顺序的优先级a-z,A-Z并且0-9,所述第一感0; 第二存在1; 第三是2。 然后可以根据该字符串对字符串的各个字符进行排序。 例: 数组: [2, 0, 1] 串: a1B2c3 基于数组,我们知道我们的顺序优先级是0-9a-zA-Z。 基于此,我们可以转换并输出字符串:123acB。 挑战规则: 对于数组,您可以选择使用0索引或1索引输入,[3, 1, 2]如果您更喜欢使用1索引的数组,那么也可以使用有效输入。 字符串(输入和输出)仅包含有效字符:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789。 如果你的语言不支持数组(或者,如果你选择),您可以自由使用字符串而非数组的第一个参数(即012,[0,1,2]等)。 一般规则: 这是代码高尔夫球,因此最短答案以字节为单位。 不要让代码高尔夫球语言阻止您发布使用非代码高尔夫球语言的答案。尝试针对“任何”编程语言提出尽可能简短的答案。 标准规则适用于您的答案,因此允许您使用STDIN / STDOUT,具有适当参数的函数/方法,完整程序。你的来电。 默认漏洞是禁止的。 如果可能的话,请添加一个带有测试代码的链接。 另外,如有必要,请添加说明。 测试用例: [2, 0, 1] & a1B2c3 -> 123acB [2, 1, 0] & aAaA909UuHWw9gh2 -> …

24
在列表中查找True值的范围
挑战: 编写一个接受布尔值列表并返回True的所有范围的函数或程序。 测试用例: f [F] = [] f [T] = [[0,0]] f [T,T,F,T] = [[0,1],[3,3]] f [F,T,T,F,F,T,T,T] = [[1,2],[5,7]] f [F,T,T,F,F,F,T,T,T,T] = [[1,2],[6,9]] f [T,T,F,F,F,T,T,T,T,T,T,T,T,T,T,F] = [[0,1],[5,14]] f [F,F,T,T,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,T] = [[2,3],[12,19],[33,54],[93,94]] 规则: 您可以选择输入的编码方式,例如列表,数组,字符串等。 必须将输出编码为类似列表的类似列表或显示这样的字符串,因此数组,列表,元组,矩阵,向量等。 布尔值必须被编码为常量,否则可以将T / F进行任何简单的转换为所需的常量 编辑:允许在运行时评估或类似评估。 不要忘记解释如何将输入传递给程序/函数并给出测试用例的输入/输出 转换为所需的输入格式不计在内 不允许出现标准漏洞 如果您的语言具有执行此功能的功能,则不允许 我不会接受我自己的提交 编辑:输出格式是灵活的。如果未打印列表或类似内容,则范围值必须用一个非数字字符分隔,并且也必须分隔范围。 得分: 分数以字节为单位,除非不适合您的语言(例如Piet中的代码) 最低分获胜 输入和输出具有很大的灵活性,但是不允许将T / F替换为可以完成所有工作的功能的解决方案。 …

30
将列表分为偶数索引部分和奇数索引部分
灵感来自这个问题: 使一个函数(或完整程序)接收数字列表并输出重新排列的列表,以便首先出现偶数索引的数字,然后出现奇数索引的数字。数字本身的值不会影响排序-只有索引会影响排序。所有索引均从零开始。 例如: 输入: [0, 1, 2, 3, 4] 输出: [0, 2, 4, 1, 3] 另一个例子: 输入: [110, 22, 3330, 4444, 55555, 6] 输出: [110, 3330, 55555, 22, 4444, 6] 对于您的语言具有的列表,请使用最自然的表示形式。复杂性没有限制(例如,分配临时列表就可以了-无需就地执行此操作)。 PS它应该适用于空列表(空输入=>空输出)。

21
计算波
我已经在这个网站上滚动了一段时间,但是最近才真正对尝试一些挑战很有兴趣。我本来打算尝试一些现有的代码高尔夫球主题,但是昨天我有一段时间没有互联网访问权限,与此同时,我考虑了自己的挑战。 您的任务是创建一个程序或函数,该程序或函数采用Floats数组a和一个整数n,然后将每个值设置a为旁边两个值的平均值n。当重复使用增大值时n,会产生类似波浪的运动: 细节: 如果碰巧中只有一项a,n或者等于或小于0,则程序应返回原始数组。 输入和输出可以以所需的任何格式显示,只要它们在视觉上是分开的即可。 对于每个步骤: 中的第一项a应成为其自身与下一项的平均值。 中的最后一项a应成为其自身与上一项的平均值。 中的任何其他项目a应成为上一项和下一项的平均值。 确保您要计算的是上一步的数组,而不是当前的数组! 测试用例:注意:您的输入/输出不必采用这种格式! [0, 0, 1, 0, 0], 1 -> [0, 0.5, 0, 0.5, 0] [0, 0, 1, 0, 0], 2 -> [0.25, 0, 0.5, 0, 0.25] [0, 0, 1, 0, 0], 0 -> [0, 0, 1, 0, 0] [0, 0, 1, …

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.