Questions tagged «array-manipulation»

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

11
子集总和的N位变化
对于我正在编写的另一个挑战,我需要验证测试用例是否可以用有界整数解决。具体来说,对于整数A和整数位宽度的非空数组,我需要验证以下内容n: 中的所有整数a都A满足-2**(n-1) <= a < 2**(n-1)(用n-bit二进制数的补码整数表示)。 的长度A小于2**n。 A满足的总和-2**(n-1) <= sum(A) < 2**(n-1)。 元素的所有组合均A满足所有上述条件。 自然,我决定将这个问题外包给您! 给定一个整数数组A和一个正整数位宽度n,请验证是否A满足上述条件。 测试用例 [0, 0, 0], 2: True [0, 0, 0, 0], 2: False (violates #2) [1, 2, 3, 4, 5], 8: True [1, 2, 3, 4, 5], 2: False (violates all conditions) [1, 2, 3, 4, …

14
模组平衡清单
介绍 假设我有一个整数列表,比如说L = [-1,2,2,1,2,7,1,4]。我喜欢在生活中保持平衡,因此很高兴看到它具有与偶数元素一样多的奇数元素。更重要的是,它在3的所有模数类中也具有相等数量的元素,并且其元素位于: [-1,2,2,1,2,7,1,4] 0 mod 3: 1 mod 3: 1 7 1 4 2 mod 3: -1 2 2 2 可悲的是,对于4的模数类,它不再成立。一般情况下,我们说一个非空列表被模平衡Ñ如果它具有相同数量的在所有模类元素Ñ指此数目不是0上面所列大号是平衡的模2和3,但非平衡模4。 任务 您的输入是一个非空列表L,该列表以任何合理的格式获取整数。您的输出是N≥2的那些整数的列表,以使L取N为模,并且仍然采用任何合理的格式。输出的顺序无关紧要,但是它不应包含重复项。 确保输出中只有有限数量的数字,这恰恰意味着并非L的所有元素都在其中出现相同的次数。无效输入的示例为[3],[1,2]和[0,4,4,0,3,3]。请注意,输出中的最大数字最多为max(L)-min(L)。 每种语言的最低字节数为准,并且适用标准代码高尔夫球规则。 测试用例 [1,1,2] -> [] [1,1,5] -> [2,4] [1,1,24] -> [23] [1,2,3,2] -> [2] [12,12,-4,20] -> [2,3,4,6,8,12,24] [1,1,12,12,-3,7] -> [3,10] [-1,2,2,1,2,7,1,4] -> [2,3] [4,-17,-14,-18,-18,3,5,8] …

14
递归级联[N]的累积和与M次迭代
取两个正整数N,M并[N]通过M迭代创建的串联累积和。输出最后一次迭代的结果。 串联累积和的定义: 以数字开头N并定义顺序X = [N] 追加到X的累积和X 重复步骤2 M次。 向量的累加和X = [x1, x2, x3, x4]为:[x1, x1+x2, x1+x2+x3, x1+x2+x3+x4]。 N = 1和的示例M = 4: P =累积和函数。 M = 0: [1] M = 1: [1, 1] - X = [1, P(1)] = [[1], [1]] M = 2: [1, 1, 1, 2] - X …
14 code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 

11
案例匹配查找替换
以三个输入,文本串T; 一串要替换的字符F;以及用替换它们的字符串R。对于每个T具有相同(不区分大小写)字符的子字符串F,请将其替换为中的字符R。但是,请保持与原始文本相同的大小写。 如果输入的字符R多于个F,则多余的字符应与输入的大小写相同R。如果其中包含数字或符号F,则其中的相应字符R应保持其大小写R。F不一定会出现在中T。 您可以假设所有文本都在可打印的ASCII范围内。 例子 "Text input", "text", "test" -> "Test input" "tHiS Is a PiEcE oF tExT", "is", "abcde" -> "tHaBcde Abcde a PiEcE oF tExT" "The birch canoe slid on the smooth planks", "o", " OH MY " -> "The birch can OH MY e slid OH MY …
14 code-golf  string  code-golf  string  ascii-art  alphabet  code-golf  number  sequence  counting  code-golf  sequence  counting  code-golf  quine  source-layout  code-golf  string  code-golf  decision-problem  game  code-golf  string  quine  source-layout  subsequence  code-golf  quine  code-golf  array-manipulation  integer  code-golf  ascii-art  code-golf  sequence  integer  code-golf  kolmogorov-complexity  code-golf  array-manipulation  integer  code-golf  number  array-manipulation  integer  code-golf  string  number  integer  code-golf  string  ascii-art  code-challenge  test-battery  expression-building  source-layout  printable-ascii  code-bowling  code-golf  number  code-golf  number  string  binary  code-golf  matrix  conversion  code-golf  number  arithmetic 

8
查找最短的唯一子列表
给定一个列表列表,找到最短列表,它是一个列表的连续子列表。 例如,如果我们有 [[1,2,3], [1,2,3,4], [2,4,5,6], [1,2,4,5,6]] 最短的连续子列表将是[3,4]因为它仅出现在第二个列表中。 如果没有唯一的连续子列表(这需要至少一个重复的条目),则输出一个空列表。这是一个例子 [[1,2,3], [1,2,3], [1,2]] 如果有多个最小大小的连续子列表,则可以输出其中任何一个或包含所有子列表的列表。例如,如果输入是 [[1,2,3],[2],[1],[3]] 你可以输出两种[1,2],[2,3]或[[1,2],[2,3]]。如果选择执行后一种选项,则可能在只有一个解决方案的情况下输出单例列表。 只要在其他列表中没有出现,输出就可能在同一列表中出现多次。例如 [[1,2,1,2],[2,1]] 应该输出,[1,2]因为它[1,2]是第一个列表的子列表,但不是第二个列表的子列表,即使它是以两种不同的方式是第一个列表的子列表。 您可以将包含任何类型的列表的列表作为输入,只要该类型具有100个以上的可能值即可,即没有布尔值。 这是代码高尔夫球,因此答案将以字节计分,而字节数越少越好。 测试用例 [[1,1]] : [1] [[1],[1]] : [] [[1,1],[1]] : [1,1]

30
排序后获取数组的索引
今天的挑战是编写一个程序或函数,该程序或函数需要一个列表l并给出排序的l每个连续元素l出现的位置。 换句话说,输出最小值的索引,然后输出第二个最小值的索引,依此类推。 您可以假设输入数组仅包含正整数,并且至少包含一个元素。 测试用例: Input | Output (1-indexed) [7, 4, 5] | [2, 3, 1] [1, 2, 3] | [1, 2, 3] [2, 6, 1, 9, 1, 2, 3] | [3, 5, 1, 6, 7, 2, 4] [4] | [1] 当出现两个或多个具有相同值的元素时,它们的索引应从最小到最大依次出现。 这是代码高尔夫球,最少字节获胜!

23
计算矩阵向量
给定一个至少包含两个元素的整数数组,输出该数组的矩阵向量(定义如下)。 为了计算Matrix-Vector,首先旋转通过nsize - input数组以创建一个size的矩阵n x n,该数组的第一个元素位于主对角线之后。这形成矩阵部分。对于向量,垂直翻转输入数组。然后执行普通矩阵乘法。输出向量是结果。 例如, a = [1, 2, 3] 首先,将阵列向右旋转两次,以获得[3, 1, 2]和[2, 3, 1],然后将它们堆叠以形成3x3矩阵 [[1, 2, 3] [3, 1, 2] [2, 3, 1]] 接下来,垂直翻转数组以形成向量 [[1, 2, 3] [[1] [3, 1, 2] x [2] [2, 3, 1]] [3]] 执行通常的矩阵乘法 [[1, 2, 3] [[1] [[1+4+9] [[14] [3, 1, 2] …

12
反转索引列表的列表
灵感来自这个 StackOverflow的职位。 介绍 Bob的工作是创建电子表格并对其进行组织。除Bob以外,很少有人知道他组织这些文件的方式,但是他创建了属于同一组的每个电子表格的列表。他创建的电子表格中有很多数据,但是现在我们只查看其中的一条数据:从他开始工作到创建电子表格之间的天数。第一天,他创建了两个电子表格,将它们都记录下来,0然后将它们分类到正确的位置。 现在,他的老板要求对每天发生的电子表格种类进行审查,编写一些代码来为Bob找出答案是您的工作。他手头上有太多电子表格。 输入值 鲍勃(Bob)提供给您的信息是以(0或1索引)锯齿状数组的形式出现的,每个数据的形式都是x = a[i][j]。 a是我所说的锯齿状数组本身,i是电子表格的类型,x也是数组创建的日期。 j不重要。 任务 给定按类型划分的电子表格创建日期的锯齿形数组,返回按电子表格创建日组织的电子表格类型的锯齿形数组。 例子 Bob不会只留下这些抽象数据。他给了我一些电子表格的一个子集,以帮助您弄清楚应该是什么。 输入示例(0索引): a = [ [3,2,5,0], # Bob doesn't necessarily sort his lists [1,3], [2,1,0,4], [4,5,3], [6,6] ] 输出示例(带注释,当然不是必需的): output = [ [0,2] # On day 0, Bob made one type 0 and one type 2 …

13
是最大堆吗?
甲堆,也被称为优先级的队列,是一个抽象的数据类型。从概念上讲,它是一个二叉树,其中每个节点的子代小于或等于节点本身。(假定它是一个最大堆。)当元素被推入或弹出时,堆会重新排列自身,因此最大的元素是下一个要弹出的元素。它可以很容易地实现为树或数组。 您应该选择接受的挑战是,确定数组是否为有效堆。如果每个元素的子元素小于或等于元素本身,则该数组为堆形式。以以下数组为例: [90, 15, 10, 7, 12, 2] 实际上,这是一个以数组形式排列的二叉树。这是因为每个元素都有孩子。90岁有两个孩子15和10。 15, 10, [(90), 7, 12, 2] 15岁还有7岁和12岁的孩子: 7, 12, [90, (15), 10, 2] 10个有孩子: 2 [90, 15, (10), 7, 12, ] 而下一个元素也将是10的孩子,除了没有空间。如果数组足够长,则7、12和2也都将有子级。这是堆的另一个示例: [16, 14, 10, 8, 7, 9, 3, 2, 4, 1] 这是先前数组制作的树的可视化效果: 以防万一这还不够清楚,这是获取第i个元素的子元素的显式公式 //0-indexing: child1 = (i * 2) + …

16
阵列中最小的组
介绍 让我们观察以下数组: [1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1] 甲组由相同的位数彼此相邻。在上面的数组中,有5个不同的组: [1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1] 1, 1, 1 2, 2 1, 1, 1, 1 2, 2, 2 1, 1, 1 这些是最小的一组[2, 2],因此我们输出[2, …

10
我走了几步?
一个简单的计步器可以用一个摆锤来建模,该摆锤在相对的两侧具有两个开关-一个在x = 0处,一个在x = 1处。当摆锤接触到远处的开关时,可以认为步行者走了半步。当它接触附近的开关时,该步骤完成。 给定代表摆锤位置的整数列表,请确定计步器上记录的完整步数。 输入值 的整数升 > 0,轨道的长度。 代表每次计步器摆的位置的整数列表。 输出量 测量的完整步骤数。当摆锤接触远开关(x> = l),然后接触近开关(x <= 0)时,将采取步骤。 测试用例 8, [8, 3, 0, 1, 0, 2, 2, 9, 4, 7] 1 摆在t = 0时立即在x = 8处与远端开关接触。然后,它在t = 2和t = 4处触摸接近开关,完成一个步骤。此后,它在t = 8时再次触及x = 9的远处开关,但再也没有触及近处的开关。 1, [1, 5, -1, -4, -1, 1, …

5
是L凸的吗?
背景 甲四角被称为L-凸,如果有可能从任何瓦到任何其他瓦片行程由L形路径,即,云在基本方向并且至多一次改变方向的路径。例如,1图中的s 的多米诺骨牌 0 0 1 1 1 0 1 1 1 1 0 0 1 1 0 0 0 0 不是L凸的,因为从左下角1到右上角的两个L形路径1都包含0: 0>0>1>1>1 0 ^ ^ 1 1 1 1 0 0 ^ ^ 1>1>0>0>0 0 但是,1此图中s 的多米诺是L凸的: 0 1 1 1 0 0 1 1 1 1 1 1 …

3
取消合并清单
介绍 你们中的大多数人都熟悉用于对数字列表进行排序的合并排序算法。作为该算法的一部分,我们编写了一个名为的辅助函数merge,该函数将两个排序列表组合为一个排序列表。在类似Python的伪代码中,该函数通常如下所示: function merge(A, B): C = [] while A is not empty or B is not empty: if A is empty: C.append(B.pop()) else if B is empty or A[0] ≤ B[0]: C.append(A.pop()) else: C.append(B.pop()) return C 这个想法是继续弹出和中的前几个元素中较小的一个A,B直到两个列表都为空,然后将结果收集到中C。如果A和B都被排序,则也是如此C。 相反,if C是一个排序列表,我们将其分为任意两个子序列A和B,然后A和B也进行排序和merge(A, B) == C。有趣的是,如果C未排序,则不一定成立,这使我们面临挑战。 输入值 您的输入是其中一些的第一个2*n非负整数的排列,以列表形式给出。[0, 1, 2, ..., 2*n-1]n > …

17
随机播放无局部变量的牌组
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 2年前关闭。 这个难题的目的是拿出52张纸牌并洗牌,以使每张纸牌处于随机位置。 鉴于: deck代表卡片的52个不同整数组成的数组。当您开始时,deck仅以未知顺序包含每张卡中的一张。 函数,该函数int rand(min, max)返回ins min和max(含)之间的随机整数。您可以假定此函数是真正随机的。 一种功能,void swap(x, y)可以交换卡片组中的两张卡。如果您致电swap(x, y),则这些卡将在位置x,y并将切换位置。 什么时候: 程序调用shuffle()(或shuffle(deck),deck.shuffle()或者您的实现喜欢运行), 然后: deck 应该完全随机地包含每张卡中的一张。 抓住: 您不能声明任何变量。随心所欲地调用swap和rand,但是您不能声明自己的任何变量。这包括for循环计数器-甚至是隐式计数器(如)foreach。 说明: 您可以更改次要详细信息以适合您选择的语言。例如,您可以编写swap以通过引用切换两个整数。所做的更改应该是使它与您的语言配合使用,而不是使难题变得更容易。 deck 可以是全局变量,也可以将其作为参数。 您可以对的内容进行任何操作deck,但不能更改其长度。 您的卡可以编号为0-51、1-52或您喜欢的任何编号。 您可以用任何一种语言编写此代码,但不会欺骗您的语言的内置shuffle功能。 是的,您可以在同一行中编写52次。没有人会留下深刻的印象。 执行时间并不重要,但真正的随机性却很重要。 这并不是真正的代码高尔夫球,但是请随时最小化/混淆您的代码。 编辑:样板代码和可视化工具 如果您使用.NET或JavaScript,以下一些测试代码可能会有用: JavaScript: 带有JavaScript脚本源的快速,肮脏的JavaScript可视化工具:https : //gist.github.com/JustinMorgan/3989752bdfd579291cca 可运行的版本(只需粘贴到您的shuffle()函数中):http : //jsfiddle.net/4zxjmy42/ C#: 带有C#代码的ASP.NET可视化工具:https : //gist.github.com/JustinMorgan/4b630446a43f28eb5559 仅存有swap和rand实用程序方法的存根:https …

4
分配议会席位
介绍 在大选中,人们想计算每个议会席位的不变价格。这意味着N >= 0要分配席位和ns每个政党的投票清单,我们希望找到一个数字d,以便 sum(floor(n/d) for n in ns) == N 为了使事情变得有趣(更像现实世界),我们添加了两个事实: 两党可以聚集在一个“联盟”中,这样​​,“联盟”的席位就由该联盟中所有各方的票数之和决定。然后,“联盟”获得的席位以类似的方式在各方之间分配(找到除数等) 没有获得一定比例票数(例如3.25%)的政党自动获得0席,其票数不计入“同盟”。 挑战 给你: 列表列表,每个嵌套列表都包含整数(投票数),单方长度为1,“联盟”长度为2。 获得席位的最低票数百分比(又称“弹幕”的“巴”),即分数(因此3.25%表示为0.0325) 各方之间分配的席位总数(整数) 您将打印出相同的嵌套列表结构,并用议席数代替票数。 优胜者是字节数最少的代码。 角落案例: 除数可能(通常会)有一个以上。由于它不在输出中,因此它并不重要。 想象N=10和ns = [[1]],所以除数可以是0.1(不是整数) 有些案件不能得到解决,例如ns=[[30],[30],[100]],bar=0,N=20。d=7.5下限的总和从19跳到21,这是一个边界。您不希望解决这些情况。(感谢社区成员Arnauld指出此案) 输入和输出示例 一个未优化的Python3示例: from math import floor def main(_l, bar, N): # sum all votes to calculate bar in votes votes = sum(sum(_) for …

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.