Questions tagged «array-manipulation»

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

6
时间旅行股票交易者
故事 很久以前,鲍比(Bobby)用1个中本聪(1e-8 BTC,最小货币单位)创建了一个比特币钱包,却忘了它。像许多其他人一样,他后来也说“该死,如果我再投资更多……”。 他不停地做白日梦,他将所有的时间和金钱都献给了建造时光机。他将大部分时间都花在车库里,没有意识到世俗的事情和关于他的谣言。由于缺电,他将在即将关闭电源的前一天完成样机。从工作台上抬起头来,他看到一辆警车驶向他的房子,看上去像个爱管闲的邻居,以为他在自己的车库里经营一个冰毒实验室,并叫警察。 由于没有时间进行测试,他用过去几年的汇率数据获取USB记忆棒,将Flux电容器连接到Quantum Discombobulator,并发现自己回到了创建钱包的那一天 任务 根据汇率数据,找出鲍比能赚多少钱。他遵循一个非常简单的规则:“低买高卖”,并且由于他以无限小的资金开始,所以我们认为他的行为不会对未来的汇率产生影响。 输入 浮点数> 0的列表,可以是用单个字符(换行符,制表符,空格,分号,可以根据需要选择的任何字符)分隔的字符串,作为命令行参数传递给程序,从文本文件或STDIN中读取或作为参数传递功能。您可以使用数字数据类型或数组而不是字符串,因为它基本上只是带括号的字符串。 输出 Bobbys资本乘以交易结束所乘的因子。 例 Input: 0.48 0.4 0.24 0.39 0.74 1.31 1.71 2.1 2.24 2.07 2.41 汇率:0.48 $ / BTC,因为它即将下降,所以我们以4.8纳元的价格出售所有比特币。因子= 1汇率:0.4,不执行任何操作 汇率:0.24 $ / BTC并上涨:将所有$转换为2 Satoshis。因子= 1(美元价值仍然保持不变) 汇率:0.39-2.1 $ / BTC:不做任何事情 汇率:2.24 $ / BTC:在下跌之前卖出所有东西。44.8纳米美元,系数= 9.33 汇率:2.07美元/ BTC:买入2.164聪,系数= 9.33 汇率:2.41美元/ …

10
0-1最大相位计数器
考虑一下一个位数组 1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0 如果至少85%的位相同且前/后位都等于多数位,则将长度≥5的连续子数组称为相位。此外,如果它不是某个其他阶段的严格子数组,则将其称为最大阶段。 这是以上示例的最大阶段: 1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 0 ------------- ------------- ------------- 如您所见,存在3最大阶段。另一方面,这 1 1 1 …

2
书库排序
堆放书籍时,通常需要将最大的书籍放在底部,最小的书籍放在顶部。但是,如果我有两本书,其中一本短(高)但比另一本宽,那么我潜在的OCD会让我感到非常不安。无论我按什么顺序放置它们,顶层的书都会在一侧超出底层的书。 例如,假设一本书具有尺寸(10,15),另一本书具有尺寸(11,14)。不管我以哪种方式放置它们,我都会伸出来。但是,如果我有尺寸为(4,3)和的书(5,6),则可以通过将书本放在书本下面来避免悬垂。 出于此挑战的目的,我们将仅考虑与紧随其后的书有关的突出部分。例如,如果我有一个堆栈(5,5),(3,3),(4,4)(没有任何理智的人会这么做),顶书算是悬垂,虽然它不超出底部的书。同样地,堆栈(3,3),(3,3),(4,4)也只有一个悬,尽管超出底部一个顶部的书。 挑战 给定用于书籍尺寸的整数对列表,请对这些对/书籍进行排序,以使突出的数量最少。您不能旋转书本-我希望所有的脊椎都朝向相同的方向。如果存在多个具有相同悬垂数的解决方案,则可以选择任何此类顺序。您的排序算法不一定是稳定的。您的实现可能假设每本书的尺寸小于2 16。 时间复杂度:为了使这一点更有趣,算法的渐近最坏情况复杂度必须是堆栈大小的多项式。因此,您不能仅仅测试所有可能的排列。请提供算法最佳性和复杂性的简短证明,并提供一个可选的图表,以显示大型随机输入的比例。当然,您不能使用输入的最大大小作为代码在O(1)中运行的参数。 您可以编写程序或函数,通过STDIN,ARGV或函数参数以任何方便的(未经预处理的)列表格式进行输入,然后打印或返回结果。 这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。 我相信存在多项式解,但是如果您可以证明我错了,则可以提交这样的证明,而不是打高尔夫球。在这种情况下,您可以假设P≠NP。我将接受第一个正确的此类证明,并给予悬赏。 例子 In: [[1, 1], [10, 10], [4, 5], [7, 5], [7, 7], [10, 10], [9, 8], [7, 5], [7, 5], [3, 1]] Out: [[10, 10], [10, 10], [9, 8], [7, 7], [7, 5], [7, 5], [7, 5], [4, 5], [3, …

30
计算数组的重复次数
您将收到一个数组,并且必须返回多次出现的整数数。 [234, 2, 12, 234, 5, 10, 1000, 2, 99, 234] 这将返回2,因为每个234和2出现不止一次。 [234, 2, 12, 234] [2, 12, 234, 5, 10, 1000, 2] 该列表的长度永远不会超过100k,并且列表内的整数始终在-100k和100k之间。 如果整数出现多次,则应将其计数,因此,如果整数出现3次,则它仍将仅计为一个重复的整数。 测试用例 [1, 10, 16, 4, 8, 10, 9, 19, 2, 15, 18, 19, 10, 9, 17, 15, 19, 5, 13, 20] = 4 [11, 8, …

11
N×N板上的骑士图
在国际象棋中,骑士只能相对于其当前位置(♞标记)移动到标记为X的位置: 一个骑士的图形是表示在棋盘的骑士棋子的所有法律动作的图表。此图的每个顶点代表棋盘的一个正方形,每个边都连接两个正方形,这两个正方形彼此分开。 对于标准的8 x 8板,该图看起来像这样。 挑战: 给定整数N,其中3≤N≤8,输出代表一个板的N × N矩阵,其中显示了每个位置的可能移动数。对于N = 8,输出将是一个矩阵,该矩阵显示上图中每个顶点的值。 输出格式灵活。列表列表甚至是扁平列表等都是可接受的格式。 完整的测试用例集: --- N = 3 --- 2 2 2 2 0 2 2 2 2 --- N = 4 --- 2 3 3 2 3 4 4 3 3 4 4 3 2 3 3 2 --- N …

15
功能剪贴板:粘贴
作为2018年5月每月语言活动的一部分,此挑战与MATL语言的某些功能有关。 相关挑战: 功能剪贴板:复制。 介绍 MATL的功能剪贴板将输入(存储到“副本”)存储到最近四个对常规输入函数的调用中。普通函数是MATL中最常见的函数类型。输入接受是指该功能至少接受一个输入。可以将存储的剪贴板内容推入堆栈(“粘贴”)。 此挑战将剪贴板内容作为输入。将假定所有产生剪贴板状态的函数都将一个或多个正整数作为输入。因此剪贴板状态可以用数字列表来表示。(有关如何实际填充剪贴板的更多信息,请参见相关挑战;但这对于当前挑战不是必需的)。 解释剪贴板内容 例子1 第一个内部列表引用最近的函数调用,依此类推,因此剪贴板状态 [[11, 28], [12, 16], [4], [5, 6]] 表示最后的函数调用了两个输入,即11,28; 倒数第二个电话花了投入12,16; 等等(此剪贴板状态由相关挑战的第一个示例中的代码产生)。 例子2 如果没有足够的函数调用,剪贴板中的某些尾部内部列表将为空: [[7, 5], [], [], []] (这是由一个简单地添加7和的程序产生的5)。 例子3 函数调用可以具有任意数量的input,但至少可以是所有输入1(不接受任何输入的函数不会更改剪贴板状态)。因此,以下也是可能的。 [[3], [2, 40, 34], [7, 8, 15], []] 访问剪贴板内容 使用MATL的功能M(顺便说一句,它不是普通功能,而是剪贴板功能)将功能剪贴板的内容压入堆栈。此函数将一个正整数作为输入,并将某些剪贴板内容压入堆栈,如下所示。参考示例1中的剪贴板状态: [[11, 28], [12, 16], [4], [5, 6]] 1M将所有输入返回到最近的函数调用。因此,对于所讨论的例子,它给11,28。 同样,2M,3M和4M所有输入返回到第二,第三和第四最近的函数调用。所以2M给人12,16; 3M给4; 并4M给出了5,6。 …

9
在保留形状的同时反转列
介绍 假设您有一个整数列表的列表(或者实际上是任何对象,但是为了简单起见,我们坚持使用整数)。列表的长度可能不同,其中一些可能为空。让我们以表格格式编写列表: [[ 1, 2, 3, 4, 5], [ 6, 7], [ 8, 9, 10, 11], [], [12, 13, 14], [15, 16, 17, 18]] 这个表有5个垂直的列中,包含数字1, 6, 8, 12, 15,2, 7, 9, 13, 16,3, 10, 14, 17,4, 11, 18,和5。如果我们反向每一列中,我们得到的名单15, 12, 8, 6, 1,16, 13, 9, 7, 2,17, 14, 10, 3,18, 11, …

14
这是一个截断的三角形数字吗?
相关OEIS序列:A008867 截断三角数 三角数的一个共同属性是它们可以排列成三角形。例如,取21并排列成os 的三角形: Ø OO oo oo oo oo 让我们定义一个“截断:”从每个角切割相同大小的三角形。截断21的一种方法如下: 。 。。 oo oo 。oo。 。。哦。。 (的三角形.是从原始三角形切出的)。 o剩下12 秒,因此12是一个截断的三角形数字。 任务 您的工作是编写一个程序或函数(或等效函数),该程序或函数采用整数并返回(或使用任何标准输出方法)数字是否为截断的三角形数字。 规则 没有标准漏洞。 输入是非负整数。 切口的边长不能超过原始三角形的一半(即,切口不能重叠) 切口的边长可以为零。 测试用例 真相: 0 1 3 6 7 10 12 15 18 19 虚假: 2 4 5 8 9 11 13 14 16 17 …
20 code-golf  math  decision-problem  number-theory  integer  code-golf  number  decision-problem  functional-programming  code-golf  array-manipulation  matrix  code-golf  string  classification  string  code-challenge  binary  compression  decode  code-golf  string  string  code-challenge  balanced-string  encode  code-golf  number-theory  integer  base-conversion  code-golf  math  number-theory  geometry  abstract-algebra  code-golf  array-manipulation  sorting  optimization  code-golf  math  geometry  image-processing  generation  code-golf  string  cops-and-robbers  repeated-transformation  grammars  cops-and-robbers  repeated-transformation  grammars  code-challenge  restricted-source  tips  source-layout  javascript  code-challenge  kolmogorov-complexity  restricted-source  code-golf  combinatorics  counting  math  fastest-code  linear-algebra  code-golf  math  permutations  matrix  linear-algebra  code-golf  string  decision-problem  restricted-source  code-golf  number  array-manipulation  subsequence  code-golf  number  array-manipulation  matrix  code-golf  brainfuck  code-golf  color  code-golf  quine  source-layout  code-golf  subsequence  code-golf  string  ascii-art  code-golf  string  ascii-art  alphabet  code-golf  decision-problem  interpreter  hexagonal-grid  halting-problem  code-golf  string  polynomials  calculus  code-golf  math  decision-problem  matrix  complex-numbers  code-golf  random  code-golf  number  arithmetic 

21
如何以最少的字节数打印以下格式?
这个挑战的灵感来自这个现已删除的问题。 以一个正整数N作为输入,并输出遵循以下模式的数字为1 .. N 2的矩阵: 在第一行中用1 .. N填充,然后在最后一行(行号N)中用(N + 1).. 2N填充,然后在第二行中用(2N + 1).. 3N填充,并继续直到您填充所有行。 输出格式灵活,因此可以接受列表列表等。 N = 1 1 N = 2 1 2 3 4 N = 3 1 2 3 7 8 9 4 5 6 N = 4 1 2 3 4 9 10 11 12 13 …

8
整理列表
考虑“挑选”嵌套列表的过程。拣配定义如下: 如果参数是列表,则从列表中随机(均匀地)选取一个元素,然后从中选择一个元素。 如果参数不是列表,则只需将其返回即可。 Python中的示例实现: import random def pick(obj): if isinstance(obj, list): return pick(random.choice(obj)) else: return obj 为简单起见,我们假定嵌套列表仅包含整数或其他嵌套列表。 给定任何列表,就有可能创建一个扁平化的版本,该版本无法通过来区分pick,即从中进行选择会以相同的概率产生相同的结果。 例如,“拼合”列表 [1, 2, [3, 4, 5]] 产生清单 [1, 1, 1, 2, 2, 2, 3, 4, 5] 。简单展平是无效的原因是,子列表的元素被选择的可能性较低,例如,列表中[1, [2, 3]]的1被选择的可能性为2/4 = 1/2,而3和4的被选择的可能性为1/4每个机会。 还要注意,从单例列表中进行选择等同于从其元素中进行选择,而从空列表中进行选择则没有任何意义。 挑战 给定一个嵌套的非负整数列表,返回一个扁平化的非负整数列表,从中进行拾取会以相同的概率产生相同的结果。 这是代码高尔夫球,因此最短的有效答案(以字节为单位)获胜。 技术指标 输入[2, 3, 4],[2, 2, 2, 2, …

30
计算数组中的更改
今天的任务是编写一个程序或函数,该程序或函数采用整数数组,并计算从左到右的次数,即值发生变化的次数。通过示例更容易显示:[1 1 1 2 2 5 5 5 5 17 3] => [1 1 1 **2** 2 **5** 5 5 5 **17** **3**] => 4 测试用例: Input | Output [] | 0 [0] | 0 [0 1] | 1 [0 0] | 0 [1 2 3 17] | 3 [1 …

23
列表是可分割的吗?
启发(与解释被盗)本 背景 假设您有两个列表A = [a_1, a_2, ..., a_n]和B = [b_1, b_2, ..., b_n]整数。我们说A是潜在的,可分割的B,如果有一个置换B,使得a_i整除b_i所有i。问题是:是否可以重新排序(即置换)B以便所有人都a_i可以整除?例如,如果您有b_ii A = [6, 12, 8] B = [3, 4, 6] 那么答案是True,因为B可以重新排序是B = [3, 6, 4],然后我们就会有a_1 / b_1 = 2,a_2 / b_2 = 2和a_3 / b_3 = 2,所有这一切都是整数,因此A是潜在的,整除B。 作为应该输出的示例False,我们可以有: A = [10, 12, 6, 5, 21, 25] B …

28
寻找你的伴侣
挑战 给定一个任意的2元组列表,并在其中一个元组中包含一个元素,则输出其“伙伴”,即给出a和[(i,j),...,(a,b),...,(l,m)]输出b。您可以假定所有元组都是唯一的,并且元组中的所有元素都是字符串。进一步假设您同时没有(x,y)和(y,x)。 测试用例 Input Output [("(", ")"), ("{", "}"), ("[", "]")], "}" "{" [("I'm", "So"), ("Meta", "Even"), ("This", "Acronym")], "Even" "Meta" [("I", "S"), ("M", "E"), ("T", "A")], "A" "T" [("test", "cases"), ("are", "fun")], "test" "cases" [("sad", "beep"), ("boop", "boop")], "boop" "boop" 最小字节获胜!

29
运行列表的第二个最大值
给定一个整数列表,您的任务是输出前k个元素中的第二个最大值,对于2到输入列表长度之间的每个k。 换句话说,为输入的每个前缀输出第二个最大值。 您可以为第一个元素输出任意值(其中k = 1),也可以忽略此值,因为1个元素的列表没有第二个最大值。您可以假设输入中至少包含2个元素。 最短的代码胜出。 例子 Input: 1 5 2 3 5 9 5 8 Output: 1 2 3 5 5 5 8 Input: 1 1 2 2 3 3 4 Output: 1 1 2 2 3 3 Input: 2 1 0 -1 0 1 2 Output: 1 1 …

30
我的价值在哪里?
我的老板现在要我实现一种机制,使他可以搜索数组中的项目,并为他提供该值所在的索引。 你的任务: 编写一个程序或函数,该程序或函数接收一个数组和一个值(字符串,整数,浮点数或布尔值),并返回出现该值的数组的索引(0或1索引,以您喜欢的为准)。如果该值不在数组中,则返回一个空数组。 输入: A中可能存在或不存在的数组A和值V。 输出: 包含V在A中出现的索引的数组,如果V在A中不出现,则为空数组。 测试用例: 请注意,测试用例基于0。 12, [12,14,14,2,"Hello World!",3,12,12] -> [0,6,7] "Hello World", ["Hi", "Hi World!", 12,2,3,True] -> [] "a", ["A",True,False,"aa","a"] -> [4] 12, [12,"12",12] -> [0,2] 得分: 这是代码高尔夫球,因此以字节为单位的最低分数获胜。

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.