Questions tagged «array-manipulation»

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

7
谁的邻居是敌对的?
介绍 出于挑战的目的,我们将在正方形矩阵定义元素的邻居(使得)为 与对角线,水平或垂直相邻的所有项。(即,它们“环绕”而不环绕)。ËËE一个一个AË= A我,ĴË=一个一世,ĴE=A_{i,j}一个一个AEËËE ËËE 对于悬挂物,的邻居的正式定义用于 MATIX为(0索引): 中 一个我,Ĵ一个一世,ĴA_{i,\:j}n × nñ×ñn\times n一个一个Añ我,Ĵ= { A一,b| (一,b )∈ Ë我,Ĵ∩([ 0 ,n )∩Z )2}ñ一世,Ĵ={一个一个,b∣(一个,b)∈Ë一世,Ĵ∩([0,ñ)∩ž)2}N_{i,\:j}=\{A_{a,\:b}\mid(a,b)\in E_{i,\:j}\:\cap\:([0,\:n)\:\cap\:\Bbb{Z})^2\}Ë我,Ĵ= { i − 1 ,我,i + 1 } × { j − 1 ,Ĵ ,j + 1 } \ { i ,j }Ë一世,Ĵ={一世-1个,一世,一世+1个}×{Ĵ-1个,Ĵ,Ĵ+1个} \ {一世,Ĵ}E_{i,\:j}=\{i-1,\:i,\:i+1\}\times \{j-1,\:j,\:j+1\} \text{ \\ …

4
您不会相信的十大要素
又名:从阵列生成Clickbait。 给定一个整数数组,请根据其排列和长度生成一些值得赞扬的clickbait: 如果不超过20个元素,则可以列出“ Top X列表”。参数:数组的长度。 素数是名人,因此每当两个人相邻时,它就会成为八卦。参数:两个相邻素数在数组中出现的顺序。 如果任何数字在数组中出现两次或多次,那么这令人震惊且令人难以置信,每个人都需要听听它。如果多个数字出现两次,则为每个数字制作一个新闻故事。每个唯一编号仅打印一次。参数:出现次数以外观总数表示。 如果你看到3+元素排序 单调递增的顺序,然后突然下降,然后告诉他们如何排序,并了解后续挑逗。每直只做一次。参数:直线的长度。 这些是您应使用的各个Clickbaits: The Top {{N}} Array Elements {{N1}} And {{N2}} Were Spotted Together, You Won't Believe What They Did These {{N}} Elements Will Blow Your Mind {{N}} Elements Sort Themselves, Find Out What Comes Next 请记住,您代表一家廉价媒体公司,因此您需要挤奶并打印所有可能的标题。如果有两个相同的标题,请同时打印两个标题。 例如,如果您得到此数组… 1,2,3,4,2,1,1,5,6 您应该以任意顺序输出所有这些: The Top 9 …

2
孤岛
输入: 包含两个不同(可选)值的2D数组。在解释规则时,我将使用0和1。输入格式当然是灵活的。 挑战: 零是水,一个是小岛。为了确保孤独,您的任务是通过插入零行和零列将所有岛屿用水包围。您不想浪费水,因此您必须减少添加的水量。如果有不止一种溶液需要添加相同量的水,则应添加水栏,而不是行。我将在测试案例中展示这一点。 输出: 新的修改后的2D数组。输出格式当然是灵活的。 测试用例: 输入和输出以短划线分隔。添加的零以粗体显示。如果要将测试用例转换为更方便的格式,请在此处使用答案之一。 1 --- 1 1 1 --- 1 0 1 1 1 1 1 --- 1 0 1 0 0 0 1 0 1 1 0 0 1 --- 1 0 0 0 0 1 请注意,我们添加了一列零,而不是一列零。这是因为必要的零的数目相等,因此应首选列。 1 0 0 0 1 0 1 …

22
列表本身的n次的笛卡尔积
当给定一个值列表和一个正整数时n,您的代码应输出该列表的笛卡尔乘积及其n时间。 例如,使用伪代码,您的函数可能类似于: for x1 in list: for x2 in list: for x3 in list: ... for xn in list: print x1, x2, x3, ... , xn 例: repeated_cart([1,2,3], 3) 1 1 1 1 1 2 1 1 3 1 2 1 1 2 2 1 2 3 1 3 1 …

26
加权平均-压力趋势问题
假设此阵列是过去28天内每天获得的俯卧撑次数: [ 20,20,20,30,30,30,30, 35,35,40,40,40,45,45, 50,50,50,50,50,50,50, 60,70,80,90,100,110,120 ] 如您所见,上周呈急剧上升趋势,这是我最感兴趣的数据。过去越远,我希望该数据在“平均值”中的作用就越小的次数。 为此,我想制定一个“平均”,其中每个星期都比前一周更有价值。 背景信息,不是此问题的一部分。 正常平均值: 所有值的总和/数量 对于以上: 1440/28 = 51.42857142857143 加权平均: 将阵列分成7组的4组,然后启动一个新阵列。 将第一个组添加到数组。 将第二组添加到阵列两次。 将第三组添加到数组三次。 将第四组添加到阵列四次。 由长度总结所有的新阵列的,和除法新阵列。 对于以上: 将数组转换为此: [ 20,20,20,30,30,30,30, # first week once 35,35,40,40,40,45,45, 35,35,40,40,40,45,45, # second week twice 50,50,50,50,50,50,50, 50,50,50,50,50,50,50, 50,50,50,50,50,50,50, # third week thrice 60,70,80,90,100,110,120, 60,70,80,90,100,110,120, 60,70,80,90,100,110,120, 60,70,80,90,100,110,120 # Fourth …

1
挑战8:存储车运输计划!
<<上一页 感谢PPCG社区,圣诞老人现在已经平衡了他的储物车。现在,他需要将它们移入运输码头,以便可以将它们发送到装卸区。不幸的是,用来移动推车的轨道是一团糟,他需要弄清楚如何使它们四处走动而不会撞在一起! 挑战 您将获得每个推车的轨道,作为“标签”(或车站)列表。必须移动推车,以便在任何时间框架内,没有两个推车位于同一标签/站上。本质上,手推车在每个都有唯一标签的位置之间移动。 任务 给定每个购物车的轨道作为标签列表的列表(均为正整数),请确定何时应释放每个购物车,以便在尽可能短的时间内安全地将所有购物车发送到目的地。 这是整个轨道系统如何工作的解释。假设购物车i有时被t_i放到带有标签的轨道上T_i_1, T_i_2, ..., T_i_n。然后,在t_1到t_i-1,车i不上格,可以忽略。 在时间范围内t_i,购物车在标签上T_i_1,对于t_k从t_i到的每个时间范围t_i+n(包括半值),购物车都在标签上T_i_k+1。 对于之后的所有时间范围(包括之后)t_i+n,购物车都位于其目的地,并且不再位于网格上。 所花费的总时间t_T是系统中轨道仍在推车上的最后时间范围。 技术指标 给出的轨道系统,返回时间帧的列表[t_1, t_2, ..., t_n],其中i个车开始在时间t_i,使得没有其他的安排将使车安全地到达目的地,随着时间较少总量。 在“安全”方面,如果在任何时间框架t_1,以t_T有任何标签上超过一个购物车,然后他们碰撞和安排是不“安全”。请注意,两个手推车可以从a, b移到b, a,但仍然是“安全的”,因为轨道是双向的。 格式化规格 输入将以任何合理格式的正整数矩阵形式给出。输出应以任何合理格式的正整数列表形式给出。您可以在零索引的时间范围内提供输出,因此输出将是任何合理格式的非负整数列表。 规则 适用标准漏洞 这是一个代码高尔夫球,所以最短答案以字节为单位 没有答案将被接受 测试用例 Input -> Output [[1, 2, 3], [4, 5, 6], [7, 8, 9]] -> [1, 1, 1] [[1, 2, 3], [1, 2, 3]] …

2
实施立体立方体
立体地,这是一种相当新的神秘语言,能够为非常具体的问题子集提供类似于高尔夫球的简短答案。它的独特之处在于它以3x3的Rubik多维数据集的形式存储内存,从而使计算远不如大多数语言简单。在Cubically中,程序员必须旋转内部多维数据集才能操作存储在面上的值,然后在计算中使用这些值。对存储在称为“记事本”的假想面上的单个32位整数执行计算。此外,Cubically可以请求用户输入并将其存储在仅包含一个整数值的输入缓冲区中。 魔方 立方体的面为U p,D own,L eft,R ight,F ront和B ack: UUU UUU UUU LLLFFFRRRBBB LLLFFFRRRBBB LLLFFFRRRBBB DDD DDD DDD 程序启动时,将初始化多维数据集,以使该面上的每个正方形都等于该面上基于0的索引: 000 000 000 111222333444 111222333444 111222333444 555 555 555 每当旋转脸部时,总是将其顺时针旋转: Cubically> F1 000 000 111 115222033444 115222033444 115222033444 333 555 555 面的值定义为该面上每个平方的和。例如,在上面的多维数据集中,face的0值为3。 句法 通过首先将命令加载到内存中,然后将参数传递给它来执行命令来执行命令。例如,该命令F1会将命令加载F到内存中,然后使用参数调用它1。另外,F13将命令加载F到内存中,然后使用参数1调用它,然后使用参数调用3。任何非数字字符均被视为命令,而任何数字均被视为参数。 你的任务 您的任务是以您选择的语言实现Cubically的内部存储多维数据集。您的代码应该能够执行该语言的很小一部分。 指令 R -顺时针旋转多维数据集的右面指定次数。 L -顺时针旋转立方体的左表面指定次数。 …

2
计算OEIS A005434
任务是尽快计算OEIS A005434。 考虑一个S长度为string 的二进制字符串n。从索引1,我们可以确定是否完全S[1..i+1]匹配从到的顺序。例如,S[n-i..n]i0n-1 S = 01010 给 [Y, N, Y, N, Y]. 这是因为0matchs 0,01不匹配10,010matchs 010,0101不匹配1010 并最终01010匹配自身。 定义f(n)为Ys和Ns在2^n不同S长度的所有可能位字符串上迭代时得到的不同数组的数目n。 观察者会注意到这个问题是我最近另一个问题的一个简单的变体。但是,我希望巧妙的技巧可以使这一过程变得更快,更容易。 任务 为了增加n开头1,应该输出代码n, f(n)。 示例答案 对于n = 1..24,正确的答案是: 1, 2, 3, 4, 6, 8, 10, 13, 17, 21, 27, 30, 37, 47, 57, 62, 75, 87, 102, 116, 135, 155, 180, 194 …

6
N个碱基中的回文数
给定一个非负整数n >= 0,请永远输出x_i >= 3以完全n不同b的底数为回文数的整数序列,底数可以是2 <= b <= x_i-2。 这基本上是OEIS A126071的反函数,在此输出中该序列中的哪些索引具有值n。有点不同,因为我更改了它,所以您忽略了碱基b = x_i-1, x_i, x_i+1,因为这些碱基的结果始终是相同的(值始终是回文率,或者始终不是)。此外,偏移量也不同。 x_i限制为数字,>= 3因此每个结果的第一项n为A037183。 请注意,输出格式是灵活的,但是应该以很好的方式分隔数字。 例子: n seq 0 3 4 6 11 19 47 53 79 103 137 139 149 163 167 ... 1 5 7 8 9 12 13 14 22 23 25 29 35 …
10 code-golf  sequence  base-conversion  palindrome  code-golf  array-manipulation  matrix  code-golf  string  ascii-art  code-golf  ascii-art  physics  code-golf  number  sequence  fibonacci  code-golf  ascii-art  packing  code-golf  string  hexadecimal  code-challenge  restricted-source  decision-problem  binary  code-golf  code-golf  code-golf  stack-exchange-api  code-golf  string  parsing  generation  data-structures  code-golf  kolmogorov-complexity  graphical-output  code-golf  array-manipulation  integer  generation  data-structures  code-golf  number  random  probability-theory  king-of-the-hill  java  minesweeper  code-golf  string  kolmogorov-complexity  animation  code-golf  string  code-golf  code-golf  quine  code-golf  internet  code-golf  arithmetic  base-conversion 

1
将阵列和程序一分为二
介绍 您的任务是编写一个程序,将矩形整数数组平均分成两半(无论出于何种原因)。该任务需要大量计算,但是幸运的是您有一台双核计算机来执行计算。为了最大限度地提高并行性的好处,您决定将程序平均分成两半,并让每个内核独立地运行一个部分。 输入输出 您的输入是大小为1×1的非负整数的矩形2D数组,采用任何合理格式。甲分裂这种阵列的被分割的每个水平行所获得成前缀和后缀(其中任一个可能是空的)。为了使拆分有效,必须在相同索引或相邻索引处拆分两个相邻行。例如,考虑数组 2 4 5 5 6 3 9 7 1 7 7 0 0 0 3 6 7 8 1 2 4 7 6 1 6 6 8 2 0 0 这是有效的拆分: 2;4 5 5 6 3 ;9 7 1 7 7 0 ;0 0 3 6 …

4
最小成本块对角化
考虑二进制块对角矩阵,该矩阵在主对角线上具有1s的正方形块,而在其他各处均为0。让我们称此类矩阵为“有效”矩阵。 例如,以下是一些有效的4x4矩阵: 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 1 1 0 1 0 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 …

25
计算相对论速度
在狭义相对论中,移动物体相对于另一个在相反方向移动的物体的速度由以下公式给出: s = v + u1 + v u / c2。s=v+ü1个+vü/C2。\begin{align}s = \frac{v+u}{1+vu/c^2}.\end{align} s = ( v + u ) / ( 1 + v * u / c ^ 2) 在这个公式中,和是物体速度的大小,是光速(大约是,对此非常接近挑战)。vvvüüuCCc3.0 × 108米/ 秒3.0×108米/s3.0 \times 10^8 \,\mathrm m/\mathrm s 例如,如果一个对象在移动v = 50,000 m/s,而另一个对象在移动u = 60,000 m/s,则每个对象相对于另一个的速度大约为s = 110,000 m/s。这就是您在伽利略相对论(速度简单地相加)下所期望的。但是,如果v …

30
重复项目组
挑战说明 给定一个项目列表/数组,显示所有连续重复项目的组。 输入/输出说明 您的输入是一个列表/项目数组(您可以假设所有项目都是同一类型)。您不需要支持您的语言所拥有的每种类型,而必须支持至少一种int类型(最好是,但是像这样的类型boolean,虽然不是很有趣,但是也可以)。样本输出: [4, 4, 2, 2, 9, 9] -> [[4, 4], [2, 2], [9, 9]] [1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4] -> [[1, 1, 1], [2, 2], [3, 3, 3], [4, 4, 4, 4]] [1, 1, 1, 3, 3, 1, 1, 2, …

2
分区列表!
在此挑战中,您需要对列表进行分区,其中分区具有最大大小,最小大小和首选大小。我将使用该符号(min,pref,max) 来表示此挑战中的大小。 对于不熟悉分区的人,以下列表已分为三部分: [0..9] -> [[0,1,2],[3,4,5],[6,7,8]] 当列表不能被均等分割时,您需要使分区尽可能地接近首选大小:[0..10], (2,4,5) -> [[0,1,2,3],[4,5,6],[7,8,9]]。[[0,1,2,3],[4,5,6,7],[8,9]]即使该分区具有更多的首选长度,该分区也比首选。正式地,我们需要最小化(partitionLength-preferredSize)^2每个分区的总和。 分区长度的顺序无关紧要:对于[0..5], (2,3,3),[[0,1,2],[3,4]]或者[[0,1],[2,3,4]]有效。如果没有分区,则返回一个空数组:[0..7], (4,4,5) -> []。 您可以假定1<=min<=pref<=max,并且传递给您的数组是一个非空的整数数组。数组将始终是第一个参数。您可以以任何顺序,以元组或单独的参数接受min,max和pref。 您的程序必须在几秒钟内运行。基本上,不允许在边界内遍历所有可能的分区大小。 测试用例: [1], (1,3,4) -> [[1]] [100], (1,2,3) -> [[100]] [1,2], (1,1,2) -> [[1],[2]] [1,2], (1,2,2) -> [[1,2]] [1,2], (1,3,3) -> [[1,2]] [1,2,3], (1,2,3) -> [[1,2],[3]] or [[1,2,3]] [1,2,3,4], (1,3,4) -> [[1,2,3,4]] [1,2,3,4,5], (3,3,4) …

5
从中间打印阵列
这是一个代码问题。 给定整数s和n,任务是输出长度为n的所有数组,这些数组的值从-s到s。唯一的不足是必须按以下顺序输出它们。 长度为n的全零数组。 长度为n且元素从-1到1的所有数组,不包括您之前输出的任何数组。 长度为n的所有数组,元素从-2到2,不包括您之前输出的任何数组。 依此类推,直到获得长度为n的所有数组,并包含从-s到s的元素(不包括之前输出的任何数组)。 您应该每行输出一个数组。它们可以以空格或逗号分隔。 这是一些不兼容的python代码,它们以正确的顺序输出数组/列表/元组。 import itertools s = 3 n = 2 oldsofar = set() newsofar = set() for i in xrange(s): for k in itertools.product(range(-i,i+1), repeat = n): newsofar.add(k) print newsofar - oldsofar oldsofar = newsofar.copy() print "***" 对于没有设定减法或等效减法的答案,要有额外的荣耀(和我的支持)。

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.