Questions tagged «array-manipulation»

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

2
阵列可以改组吗?
背景 非常熟练的卡处理人员能够运用这样的技术:将卡座完美地切成两半,然后完美地插入卡。如果他们从已排序的牌组开始并连续52次完美执行此技术,则牌组将恢复为已排序的顺序。您面临的挑战是将一副纸牌组成一个整数数组,并确定是否只能使用Faro随机排序对其进行排序。 定义 从数学上来说,法鲁混洗是对2 n个元素(对于任何正整数n)的置换,它将位置i(1索引)中的元素移到位置2 i(mod 2 n +1)。我们还希望能够处理奇数长度的列表,因此在这种情况下,只需将一个元素添加到列表的末尾(如果您有一个方便的话,一个小丑即可),然后Faro像上面那样洗净新列表,但是忽略检查列表顺序时添加的虚拟元素。 目标 编写程序或函数,该程序或函数接受整数列表,如果一定数量的Faro混洗会导致该列表以不降序排列(即使该数字为零-小列表也应显示真值),则返回或输出真值。否则,返回或输出错误。 例子 [1,1,2,3,5,8,13,21] => True [5,1,8,1,13,2,21,3] => True [9,36,5,34,2,10,1] => True [1,0] => True [0] => True [] => True [3,2,1] => True [3,1,2] => False [9,8,7,6,5,4,3,2,1,0] => True [9,8,7,6,5,4,3,2,0,1] => False [3,1,4,1,5,9,2,6,9] => False [-1,-1,-1,-2] => True 计分 这是代码高尔夫球,因此以字节为单位的最短源代码获胜。

21
性鲍勃炸弹的簿记(检查运行总和是否过低)
信不信由你,塞伯鲍勃炸弹已成为一支世界闻名的乐队,目前正在世界巡演中!作为他们的簿记员,您必须监督他们的日常财务状况并提供定期报告。 您每隔几周会按照产生的顺序编制一份支出清单(以美元为单位)。 例如清单 378 -95 2234 表示将$ 378存入他们的帐户,并在提取$ 95和存入$ 2234之后。 你要确保这些值的运行总和从未低于某一阈值牛逼。您决定编写一个程序来为您执行此操作。 挑战 编写一个包含单个整数T和一个整数列表的程序或函数。如果整数列表的运行总和小于T,则打印或返回假值,否则打印或返回真值。 您可以使用任何常用的输入法(stdin,从文件,命令行,函数的参数)。 在列表的开头,运行总和为0。因此,正T表示结果始终是虚假的。 + 永远不会在正整数前面。 该列表可能包含0。 该列表可能为空。 测试用例 牛逼是-5在所有这些。 虚假: -6 1 2 3 -20 200 -300 1000 真相: [empty list] -5 4 -3 -6 计分 字节最少的提交将获胜。Tiebreaker最早发布。 令人遗憾的评论迫使我不得不这样做。

5
堆放甲板!
爱丽丝(Alice)和鲍勃(Bob)喜欢玩纸牌游戏,其中一副纸牌用连续的非负整数编号。 不过,爱丽丝有一种非常特殊的方式来洗牌。首先,她从卡组中取出顶卡,并将其放在卡组的底部。然后,她取出下一张卡片,并开始堆放。然后,她再次将顶部卡循环到底部,然后将新的顶部卡放到堆上。她重复此过程,直到排空甲板为止,此时堆垛就是新甲板。 deck | pile -----------+----------- 3 1 4 0 2 | 1 4 0 2 3 | 4 0 2 3 | 1 0 2 3 4 | 1 2 3 4 | 0 1 3 4 2 | 0 1 4 2 | 3 0 1 2 4 …

11
找到最伟大的路线
您将得到一个由整数组成的二维数组A,长度为N。您的任务是在数组中找到N个元素的直线(水平,垂直或对角线),该直线产生最高的总和,然后返回该总和。 例 N = 3, A = 3 3 7 9 3 2 2 10 4 1 7 7 2 5 0 2 1 4 1 3 该数组有34条有效行,其中包括 Vertical [3] 3 7 9 3 [2] 2 10 4 1 [7] 7 2 5 0 2 1 4 1 3 [3,2,7] …

9
Fivenum和一点
(一个悖论,一个悖论,一个最巧妙的悖论) 这是受不同R函数启发的多部分系列的第一部分。 任务 给定一个数据集ddD正整数,我需要你计算5号汇总的ddD。但是,我正在处理大型数据集,因此我需要您的代码尽可能小,以便将其存储在计算机上。 这五个数字摘要包括: 最低值 第一四分位数(Q1) 中位数/第二四分位数(Q2) 第三四分位数(Q3) 最大值 定义四分位数的方法有几种,但是我们将使用R实现的方法: 定义: 最小值和最大值:分别为最小值和最大值。 中位数:如果中间值ddD有奇数个条目,和两个中间最值的算术平均值,如果ddD有条目的偶数。请注意,这意味着中位数可能是非整数值。我们之前不得不计算中位数。 第一和第三四分位数:如果ddD的条目数为奇数,则将数据分为两半,包括每一半的中心元素,并找到每一半的中位数。下半部分的中位数是第一四分位数,上半部分的中位数是第三四分位数。 例子: d = [ 1 ,2 ,3 , 4 ,5 ]d=[1个,2,3,4,5]D=[1,2,3,4,5]。中位数为然后333,而下半部分是[ 1 ,2 ,3 ][1个,2,3][1,2,3],得到的第一四分位数222,和上半部是[ 3 ,4 ,5 ][3,4,5][3,4,5],得到的第三四分位444。 d = [ 1 ,3 ,3 ,4 ,5 ,6 , 7 ,10 ]d=[1个,3,3,4,5,6,7,10]D=[1,3,3,4,5,6,7,10]。中值是4.54.54.5,而下半部分是[ 1 ,3 ,3 …

25
标准化样品(计算z得分)
给定浮点数列表,对其进行标准化。 细节 如果所有值的平均值为0,并且标准偏差为1,则列表x1,x2,…,xnx1,x2,…,xnx_1,x_2,\ldots,x_n是标准化的。一种计算方法是首先计算平均值μ和标准偏差σ为 μ = 1个μμ\muσσ\sigmaμ=1n∑i=1nxiσ=1n∑i=1n(xi−μ)2−−−−−−−−−−−−√,μ=1n∑i=1nxiσ=1n∑i=1n(xi−μ)2, \mu = \frac1n\sum_{i=1}^n x_i \qquad \sigma = \sqrt{\frac{1}{n}\sum_{i=1}^n (x_i -\mu)^2} , 然后通过替换每一个计算标准化xixix_i与xi−μσxi−μσ\frac{x_i-\mu}{\sigma}。 您可以假定输入至少包含两个不同的条目(这意味着σ≠0σ≠0\sigma \neq 0)。 请注意,某些实现使用样本标准偏差,该样本标准偏差不等于我们在此处使用的总体标准偏差σσ\sigma。 有一个CW答案为所有平凡的解决方案。 例子 [1,2,3] -> [-1.224744871391589,0.0,1.224744871391589] [1,2] -> [-1,1] [-3,1,4,1,5] -> [-1.6428571428571428,-0.21428571428571433,0.8571428571428572,-0.21428571428571433,1.2142857142857144] (这些示例是使用此脚本生成的。)

16
查找阵列运行
在数组中找到运行 行程定义为三个或三个以上的数字,它们以恒定的步长从上一个数字开始递增。例如,[1,2,3]是带有步骤1的运行,[1,3,5,7]是带有步骤2的运行,而[1,2,4,5]不是运行。 我们可以用符号“ i到j由s”表示这些运行,其中i是运行的第一个数字,j是运行的最后一个数字,而s是步骤。但是,步骤1的运行将表示为“ i至j”。 因此,使用之前的数组,我们得到: [1,2,3]->“ 1to3” [1,3,5,7]->“ 1to7by2” [1,2,4,5]->“ 1 2 4 5” 在这个挑战中,您的任务是对可能多次运行的阵列执行此操作。 具有递归的示例Python代码: def arr_comp_rec(a, start_index): # Early exit and recursion end point if start_index == len(a)-1: return str(a[-1]) elif start_index == len(a): return '' # Keep track of first delta to compare while searching first_delta …

5
最佳缓存
您将获得一系列的内存请求和一个缓存大小。在任何高速缓存替换策略下,您必须返回尽可能少的高速缓存未命中数。 最佳策略是Belady的算法,您可以根据需要使用它。 缓存系统的工作方式如下:缓存开始为空。内存请求进来。如果请求在高速缓存中请求一条数据,一切都很好。否则,您将导致缓存未命中。此时,您可以将请求的数据插入缓存中以备将来使用。如果缓存已满,并且您想插入新数据,则必须逐出缓存中先前的数据。您可能永远不会插入不仅在缓存中的数据。 您的目标是针对给定的内存请求序列和缓存大小,找到最少可能的缓存未命中数。 系统会为您提供缓存大小,正整数和内存请求序列(这是令牌列表)。这些令牌可以是您喜欢的任何类型的令牌,只要可以使用至少256个不同的令牌(字节就可以,布尔不是)。例如,整数,字符串,列表都可以。如果需要,请进行澄清。 测试用例: 3 [5, 0, 1, 2, 0, 3, 1, 2, 5, 2] 6 请参阅维基百科,以获取实现此目的的替代政策。 2 [0, 1, 2, 0, 1, 0, 1] 3 只需避免添加2到缓存中。 3 [0, 1, 2, 1, 4, 3, 1, 0, 2, 3, 4, 5, 0, 2, 3, 4] 9 实现此目的的一种方法是永远不要逐出0和2,并且1在最后一次使用后尽快将其逐出。 计分:这是代码高尔夫球。最少的字节数获胜。

3
多级免费停车位查找器
与孩子相关的介绍 每当我带孩子去游乐园时,我们离公园越近,孩子们就会变得越紧张,当我们在停车场而找不到停车位时,就会感到神经紧张。因此,我决定我需要一种方法来找到最近的免费停车位,以最大程度地减少停车时间。 技术介绍 想象一下这样的停车场的示意图: ***************** * * * ··CC··C··CC·· * * ************* * * ··CCCCCCCCC·· * * * **********E****** 在此表示中,是*指墙壁,·免费停车位,E入口和C已经停放的汽车。每个空白处都是要停放的汽车可用于在停车场周围移动的位置。现在让我们将此概念扩展到3D以创建多层停车场: 1st floor 2nd floor 3rd floor 4th floor ***************** ***************** ***************** ***************** * 1 * 2 * 3 * * * CCCCCCCCCCCCC * * CCCCCCCCCCCCC * * ····C··CCCCCC * * …

6
你愿意做我的织女吗?
我最近一直在玩' The Weaver ',我认为这对代码高尔夫提出了一个有趣的挑战。 前提: 韦弗(Weaver)游戏是一种游戏,其中给您提供了多个丝带,它们分别来自两个方向,彼此成90度角,并且您的目标是在某些交叉点交换它们以实现所需的输出。 像这样:这是一个交换:这不是: 输入: 3个数组: 顶部色带(从左到右) 左色带(从上到下) 要交换的相交点的坐标 输出: 2个数组: 底部色带(从左到右) 右色带(从上到下) 例子: 我将上面的图片用作第一个示例: 输入: [r, y, b], [r, y, b], [(0, 1), (2, 1), (2, 2)] 怎么了: r y b r y b r r r r•y y y y r r b y y …

9
块重排
因此,您的任务是采用一个3x3的块,其中-的平均空格和*的平均填充空格,例如: -** -*- *-* 并重新排列该块,以使*形成一个X,如下所示: *-* -*- *-* 输入: 3x3个正方形,如上面,它们可以是3条线,一个数组,也可以是您想要的。 输出:重新排列成X的最短动作量。每个动作都翻转了两个相互接触的字符,这些字符彼此水平,彼此垂直或彼此对角线。如果不可能,则返回任何不可能的输出,例如999或-4242。5是最小的此类数字。 测试用例: 1)输出:1 -** -*- *-* 2)输出:-1 -*- -*- *-* 3)输出:3 --- -** *** 4)输出:0 *-* -*- *-* 您可以替换空白和非空白字符,但请确保在帖子中包括哪个字符 高尔夫代码 请记住,这是最短代码胜利的代码高尔夫球!

12
圆交集区
说明: 给定x和y两个圆的位置radii,输出两个圆的相交面积。 输入: 您将获得以下输入: array 1 = x and y positions of circle a array 2 = x and y positions of circle b radius = radii of the two congruent circles 输入法 : ([12 , 20] , [20 , 18] , 12) ---> two array and number ([12 , …

12
从回文子串中缝合回文
给定一个字符串l,找到所有回文子p的l(包括重复和单一字符串)。接下来,将所有子字符串重新排列p为有效回文(可能有多个正确答案)。如果不可能重新排列p为单个回文,则您的程序可能具有不确定的行为(错误,堆栈溢出,退出,John Dvorak的挂起/过早杀害等)。 例子 有效的测试用例 l = anaa p = ['a', 'n', 'a', 'a', 'aa', 'ana'] result = anaaaaana or aanaaanaa or aaananaaa l = 1213235 p = ['1', '2', '1', '3', '2', '3', '5', '121', '323'] result = 1213235323121 l = racecar p = ['r', 'a', 'c', 'e', 'c', 'a', …

14
生成给定大小的所有平方子矩阵
您将得到一个整数M和另一个正整数n的方阵,严格小于M的大小。您的任务是生成大小为M的所有平方子矩阵 n。 出于此挑战的目的,正方形子矩阵是M中包含的一组相邻行和列。 输入/输出格式 您可以自由选择任何其他合理的格式,这些只是一些示例。 输入值 本机矩阵类型的矩阵(如果您的语言有一种) 2D数组(1D数组的数组,每个数组对应于一行/一列) 一维数组(因为矩阵始终为正方形) 字符串(您选择了空格,但请勿以任何方式滥用此字符串),等等。 输出量 矩阵矩阵。 4D数组,其中每个元素(3D列表)代表行/列上的子矩阵。 3D数组,其中每个元素(2D列表)代表一个子矩阵。 所得子矩阵的字符串表示形式,等等。 眼镜 您可以选择采取大小的中号输入了。保证至少为2。 输出的方向是任意的:您可以选择将子矩阵输出为列列表或行列表,但是选择必须一致。 您可以使用任何编程语言进行竞争,并且可以通过任何标准方法接受输入并提供输出,同时请注意,默认情况下,这些漏洞是禁止的。 这是代码高尔夫球,因此每种语言的最短提交(以字节为单位)将获胜。 例 给定n = 3和M: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 可能的3x3子矩阵为: + ------- + + -------- + 1 2 3 …

14
比较两个列表的最大值
给定两个不同的非负整数列表,返回最大值最大的列表(例如[4, 2], [3, 3, 1] -> [4, 2])。 如果它们都具有相同的最大值,则返回包含此最大值更多实例的列表(例如[4, 2, 4], [4, 3, 3, 3, 1, 3] -> [4, 2, 4])。 在这些比较之后,如果它们相等,则进行相同的比较,但使用下一个最高的项目(例如[2, 3, 4, 4], [4, 4, 3, 3, 1] -> [4, 4, 3, 3, 1])。 在所有这些比较之后,如果仍然认为它们相等,则输出较长的列表(例如[4, 3, 2, 1, 0], [1, 2, 3, 4] -> [4, 3, 2, 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.