Questions tagged «array-manipulation»

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

23
枚举排列
给定一些正整数生成对象的所有排列。nñnnñn 细节 排列是没有固定点的排列。(这意味着在每个排列编号中,i一世i都不能位于第i一世i个条目中)。 输出应包含数字(1,2,…,n)(1个,2,…,ñ)(1,2,\ldots,n)(或(0,1,2,…,n−1)(0,1个,2,…,ñ-1个)(0,1,2,\ldots,n-1))的排列。 您也可以始终打印(n,n−1,…,1)(ñ,ñ-1个,…,1个)(n,n-1,\ldots,1)(或分别(n−1,n−2,…,1,0)(ñ-1个,ñ-2,…,1个,0)(n-1,n-2,\ldots,1,0))的排列,但必须指定。 输出必须是确定性的,也就是说,每当调用某个给定nñn作为输入的程序时,输出都应该是相同的(这包括排列顺序必须保持相同),并且完整的输出必须在每次有限的时间(以概率1这样做是不够的)。 您可以假设n⩾2ñ⩾2 n \geqslant 2 对于某些给定的您可以生成所有排列,也可以选择另一个整数作为索引并打印第个排列(按您选择的顺序)。nñnkķkkķk 例子 请注意,排列顺序不必与此处列出的顺序相同: n=2: (2,1) n=3: (2,3,1),(3,1,2) n=4: (2,1,4,3),(2,3,4,1),(2,4,1,3), (3,1,4,2),(3,4,1,2),(3,4,2,1), (4,1,2,3),(4,3,1,2),(4,3,2,1) OEIS A000166记录了排列的次数。

26
计算总插槽
给定一个必须按顺序完成的作业列表,每个作业都需要一个插槽来完成,如果在完成一项工作之后接下来的两个插槽不能完成相同的工作(冷却插槽),则要花多长时间来完成全部工作)?但是,可以在此冷却槽中分配其他作业。 例如, [9,10,9,8] => output: 5 因为作业将被分配为[9 10 _ 9 8]。 1.首先,9需要两个冷却点_ _。因此,我们从开始9 _ _。 2.下一个作业10与上一个作业9不同,因此我们可以分配_之一。然后我们将拥有9 10 _。 3.第三,现在不能分配9,因为第一个作业9是相同的作业,需要冷却时间。9 10 _ 9。 4.最后,8与其他任何前两个作业都不相同,因此可以在9之后立即分配,并且由于这是最后一个作业,因此不需要冷却时间。最终列表为9 10 _ 9 8,预期输出为5,即点数(或插槽数) 测试用例: [1,2,3,4,5,6,7,8,9,10] => output : 10 ([1 2 3 4 5 6 7 8 9 10]) [1,1,1] => output: 7 ([1 _ _ …

3
死蛙走
介绍 乔尼想扮演Frogger。但是,他不是很好。实际上,只有在平台移动之后,他才会尝试前进。 找出Jonny的青蛙是否设法到达路径的尽头或它是否在途中死亡。 挑战 该程序将接收由0s和1s 组成的Frogger网格作为输入,格式如下: 网格将具有随机的宽度和长度,并且至少为3x3 1 代表平台 0 代表水 F 代表青蛙的起始位置 网格的第一行和最后一行仅由1s 组成,并且不会移动,并且青蛙F将随机放置在最后一行 每个中间层将始终在移动,并且每行的末尾都有一个<或>,指示它是向左还是向右移动 允许将这些符号替换为您自己的符号,只要它们完全不同并且您在答案中指定替换即可。 输入可以采用任何兼容格式(带换行符的字符串,字符串数组,字符数组等)。 挑战规则 每转,所有平台都会根据<或>符号指示的方向移动一个正方形 如果平台被推离“屏幕”,它们会重新出现在网格的另一侧 如果青蛙在移动的平台上,它将随之移动 在那之后,青蛙将跳到顶部一格。青蛙每转都会移动。 如果青蛙跳入水中(0)或与移动平台一起接触网格的一侧,则会死亡。 如果青蛙幸存,您的程序必须输出真实值,否则输出虚假值。 这是代码高尔夫球,因此最短的答案以字节为单位。有标准漏洞。 例子 例子1 输入项 11111 00111> 00101< 1F111 输出量 1 执行 转弯1: 11111 10011 01010 1F111 11111 10011 0F010 11111 转弯2: 11111 11001 F0100 11111 …

24
获取序列步骤
挑战 给定一个数字序列,创建一个返回序列步骤的函数。 假设一个序列将是 N >= 3 序列将至少重复一次该步骤 序列将仅包含自然数 您的函数或程序应返回最短的步骤顺序 例: 输入: [1, 2, 3, 5, 6, 7, 9, 10, 11, 13, 14, 15, 17] 输出: [1, 1, 2] 说明:初始序列来自1 => 2 (1 step), 2 => 3 (1 step), 3 => 5 (2 steps)。然后重复。输出是[1 step, 1 step, 2 steps] => [1, …

23
排序拼写清楚的序列号
给定两个或两个以上长度相等且大于2的拼写完整序列号的列表,例如 [[ "three" , "one" , "four" ], [ "one" , "five" , "nine" ], [ "two" , "six" , "five" ], [ "three" , "five" , "eight" ]] 按单词代表的数字对列表进行排序: [[ "one" , "five" , "nine" ], [ "two" , "six" , "five" ], [ "three" , "one" , "four" …

7
一维跳跃阵列迷宫
受我们启发,我们跳塔,并且与2D Maze Minus 1D相关 介绍 您的任务是找到遵循指定规则的最短路径,以摆脱阵列迷宫。 挑战 具有n个元素的一维数组a可以看作是由n个点组成的迷宫,其中索引k的点与k + a [ k ]和k - a [ k ]的点以单向方式连接。换句话说,可以向前或向后跳恰好一个 [ ķ从与索引点]步骤ķ。索引超出数组范围的点被视为迷宫之外。 为了说明这一点,请考虑以下数组, [0,8,5,9,4,1,1,1,2,1,2] 如果我们现在位于第5个元素,则由于元素为4,我们可以将第4步向前跳到第9个元素,或者将第4个步向后跳到第一个元素。如果执行后者,我们将以元素0结束,这表明不可能进一步移动。如果执行前者,由于第9个元素为2,因此我们可以选择跳到第11个元素,它又是2,然后我们可以再次跳至“第13个元素”,这超出了阵列,并认为是迷宫的出口。 因此,如果我们从中间的元素开始,一种摆脱迷宫的方法是向后跳1步,向前4步,向前2步,再次向前2步,这可以表示为array [-1,4,2,2]。另外,您也可以使用数组来表示它,该数组[4,8,10,12]记录所有中间点和最终点的从零开始的索引(也可以从1开始的索引),也可以只是符号[-1,1,1,1]。 从低折射率端逃脱迷宫也可以。 使用第一种表示法并从同一元素开始[1,1,1,2,2]也是一种解决方案,但由于不是5步而是4步,所以它不是最佳的。 该任务是找出最短路径以走出阵列迷宫并输出该路径。如果有多个最佳路径,则可以输出其中的任何一个或全部。如果没有解决方案,则应输出从有效路径中可以辨别的,由您选择的虚假值(完全不产生任何输出也是可以的)。 为了简单起见,数组中的元素数始终是奇数,我们总是从中间的元素开始。 测试用例 测试用例说明了各种形式的输出,但是您不限于这些。 Input Output [0,8,5,9,4,1,1,1,2,1,2] [-1,4,2,2] [2,3,7,1,2,0,2,8,9] [2,9] (or [2,-5] or [[2,9],[2,-5]]) [0,1,2,2,3,4,4,4,3,2,2,3,0] [1,-1,1,1] [0,1,2,2,4,4,6,6,6,6,6,4,2,1,2,2,0] [] 眼镜 您可以编写函数或完整程序。 该数组仅包含非负整数。 您可以通过任何标准格式进行输入和输出,但是请在您的答案中指定使用的是哪种格式。 这是代码高尔夫球,赢得的最低字节数。 …

14
我们跳塔
任务 给定一个非负整数数组a,请确定从数组0处“跳出”数组所需的向右跳转的最小次数,从位置0开始,或者如果不可能,则返回零/空值。 从索引的跳转i定义为最多将数组索引增加a[i]。 甲跳跃外面是一个跳转,其中从跳转结果的索引i是外的边界为阵列,所以对于基于1的索引i>length(a),以及用于基于0的索引,i>=length(a)。 例子1 考虑Array = [4,0,2,0,2,0]: Array[0] = 4 -> You can jump 4 field Array[1] = 0 -> You can jump 0 field Array[2] = 2 -> You can jump 2 field Array[3] = 0 -> You can jump 0 field Array[4] = 2 -> You can …

27
快速重新整理清单
分组会得到一个列表,并将其拆分为相等的相邻元素的新列表。例如 [1,1,2,1,1] -> [[1,1],[2],[1,1]] 如果再用这些组的长度,则会得到一个新的整数列表 [1,1,2,1,1] -> [2,1,2] 您的任务是编写一个程序,该程序采用一个正整数列表,并在结果列表包含单个元素之前找到可以对其分组和加长的次数。例如,列表[1,2,3,3,2,1]可以重新组合4次 [1,2,3,3,2,1] [1,1,2,1,1] [2,1,2] [1,1,1] [3] 这是 代码高尔夫球,因此答案将以字节计分,而字节越少越好。 测试用例 [1,2,3,3,2,1] -> 4 [1,2,3,4,5,6,7] -> 2 [1,1,1,1,1,1] -> 1 [2] -> 0 [1,2,4] -> 2 [1,2,2,1,1,2] -> 4 [1,2,2,1,1,2,1,2,2] -> 5 [1] -> 0

30
消失的元素
给定一个字符串S和一个索引列表X,S通过删除每个索引处的元素来进行修改,并将S结果作为的新值S。 例如,给定S = 'codegolf'和X = [1, 4, 4, 0, 2], 0 1 2 3 4 5 6 7 | c o d e g o l f | Remove 1 c d e g o l f | Remove 4 c d e g l f | Remove 4 c …
17 code-golf  string  array-manipulation  code-golf  string  ascii-art  code-golf  number  sequence  pi  code-golf  number  array-manipulation  code-golf  string  ascii-art  code-golf  math  number  game  code-golf  math  sequence  polynomials  recursion  code-golf  math  number  sequence  number-theory  code-golf  permutations  balanced-string  code-golf  string  ascii-art  integer  code-golf  decision-problem  hexagonal-grid  code-golf  ascii-art  kolmogorov-complexity  code-golf  number  code-golf  matrix  binary-matrix  code-golf  math  statistics  code-golf  string  polyglot  code-golf  random  lost  code-golf  date  path-finding  code-golf  string  code-golf  math  number  arithmetic  number-theory  code-golf  tetris  binary-matrix  code-golf  array-manipulation  sorting  code-golf  number  code-golf  array-manipulation  rubiks-cube  cubically  code-golf  grid  optimization  code-golf  math  function  code-golf  string  quine  code-golf  ascii-art  grid  code-golf  decision-problem  grid  simulation  code-golf  math  sequence  code-golf  path-finding  code-golf  ascii-art  grid  simulation  code-golf  number  whitespace  code-golf  sequence  code-golf  sequence  code-golf  sequence  integer  code-golf  math  game  code-golf  internet  stack-exchange-api  code-golf  sequence  code-golf  internet  stack-exchange-api  code-golf  math  factoring  code-challenge  sequence  polyglot  rosetta-stone  code-golf  string  browser  code-golf  date  code-golf  base-conversion  code-challenge  cops-and-robbers  hello-world  code-golf  cops-and-robbers  hello-world 

25
一个简单的模式
输入: 您选择的输入格式中的两位数字(我们称它们为m和n)和两个字符(我们称其为a和b)。 输出: 对于演练,请假装m=2, n=5, a='a', b='b'。 您的输出将是根据四个输入构建的字符串。让我们result用value 调用字符串""。首先,连击a到result m时间,所以串连a到result 2倍。result现在等于aa。其次,连击b到result m时间,所以串连b到result 2倍。result现在等于aabb。最后,如果结果已经比更长n,请截断result它,使其具有length n。否则,继续交替使用m的长度运行a,并b直到result有长度n。最终result是aabba,它有长度5。 测试用例: Input: m = 2, n = 4, a = A, b = B Output: AABB Input: m = 3, n = 8, a = A, b = B Output: AAABBBAA Input: m = 4, n …
17 code-golf  string  code-golf  arithmetic  code-golf  string  array-manipulation  rubiks-cube  code-golf  math  number  code-golf  tips  bash  code-golf  ascii-art  music  code-golf  arithmetic  code-golf  math  number  arithmetic  integer  code-golf  number  array-manipulation  code-golf  geometry  grid  set-partitions  code-golf  math  number  code-golf  combinatorics  code-golf  regular-expression  code-golf  permutations  code-golf  ascii-art  code-golf  number  array-manipulation  matrix  code-golf  kolmogorov-complexity  compile-time  cops-and-robbers  polyglot  cops-and-robbers  polyglot  code-golf  string  code-golf  string  ascii-art  matrix  animation  code-golf  ascii-art  code-golf  string  balanced-string  code-golf  integer  integer-partitions  expression-building 

13
逆排列索引
介绍 具有n个元素的列表的字典排列可以从0到n编号!-1.例如3!= 6个置换(1,2,3)将是(1,2,3),(1,3,2),(2,1,3),(2,3,1),(3,1,2),(3,2,1)。 将排列应用于列表时,其元素的排列顺序与排列中的数字相同。例如,将置换(2,3,1)应用于l = (a,b,c)yield (l[2],l[3],l[1]) = (b,c,a)。 排列的逆定义为颠倒此操作的排列,即应用排列,然后其逆(反之亦然)不会修改数组。例如,(2,3,1)is 的逆(3,1,2),因为将其应用于(b,c,a)yields (a,b,c)。 同样,应用于排列本身的排列的逆值会产生整数1… n。例如,应用(3,1,2)到(2,3,1)产率(1,2,3)。 现在,我们将函数revind(x)定义为索引为x的排列的逆排列的索引。(如果您有兴趣,这是A056019。) 由于与指数置换我只修改了最后ķ列表中的项目当且仅当 0≤ 我 < ķ!,我们可以添加任意数量的元素到列表的开始,而不会影响revind(我)。因此,列表的长度不影响结果。 挑战 您的任务是实现revind(x)。您将编写一个完整的程序或函数,以单个非负整数x作为输入/参数,并以单个非负整数输出/返回结果。 输入和输出可以是0索引或1索引,但是它们之间必须保持一致。 禁止按索引生成排列,返回排列的索引或找到逆排列的内建函数。(允许生成所有排列或下一个排列的构建体。) 适用标准代码高尔夫球规则。 例子 下面的示例是0索引的。 Input Output 0 0 1 1 2 2 3 4 4 3 5 5 6 6 13 10 42 51 100 41 1000 …
17 code-golf  combinatorics  permutations  code-golf  image-processing  brainfuck  encode  steganography  code-golf  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  ascii-art  fibonacci  code-golf  string  code-golf  sorting  popularity-contest  statistics  code-golf  ascii-art  kolmogorov-complexity  code-golf  code-golf  ascii-art  tic-tac-toe  code-golf  string  code-challenge  classification  test-battery  binary-matrix  code-golf  math  arithmetic  code-golf  ascii-art  random  code-golf  string  code-golf  number  binary  bitwise  code-golf  number  arithmetic  code-golf  math  ascii-art  code-golf  string  ascii-art  code-golf  string  ascii-art  code-golf  string  code-golf  counting  code-golf  number  binary  bitwise  decision-problem  code-golf  array-manipulation  code-golf  tips  brain-flak  code-challenge  quine  source-layout  code-generation  code-golf  linear-algebra  matrix  abstract-algebra  binary-matrix  code-golf  string  palindrome  code-golf  puzzle-solver  sudoku  code-golf  ascii-art  code-golf  graphical-output  internet  code-golf  ascii-art  kolmogorov-complexity  code-golf  math  code-golf  clock 

12
沃兹监视器
挑战 最近,我进入了8位计算机,并对它们以及其他方法的工作着迷。因此,此代码高尔夫的目标是复制由Steve Wozniak为Apple I设计的Woz Monitor的一部分。 您将存储一个22个十六进制值的数组,其宽度为两个字节(最小值$ 10,最大值$ FF),然后接受n个输入。(通常是两种;像Brainfuck这样的语言可能会遇到困难)。 输入将指向数组中从哪里开始打印以及从哪里停止打印;具有定义行为的输入的起始值将小于或等于终止值。然后,您的程序必须能够打印输入的十六进制之间(包括该十六进制)的每个十六进制值。 一个例子: Array 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 Values FF F4 B6 D7 40 00 00 A4 F0 00 FF 0D 9C 21 65 C4 …

12
沙米尔的秘密分享
给定n(玩家数量),t(阈值)和s(秘密),输出n由Shamir的秘密共享算法生成的秘密。 算法 出于这一挑战的目的,将在GF(251)(size的有限域251,也称为整数mod 251)中进行计算。通常,将选择该字段,使其大小比的素数大得多n。为了简化挑战,字段大小将保持不变。251选择它是因为它是8位无符号整数可以表示的最大质数。 生成t-1(包括)范围内的随机整数[0, 250]。标明这些一个1通过一个T-1 。 构造一个t-1使用次多项式s为恒定值,并从步骤1中的功率的系数的随机整数x:F(X)= S + X *一个1 + X 2 * A 2 + ... + X 叔1 * a t-1。 (含)范围内(f(z) mod 251)每个输出。z[1, n] 参考实施 #!/usr/bin/env python from __future__ import print_function import random import sys # Shamir's Secret Sharing algorithm # Input is taken …
17 code-golf  number-theory  random  cryptography  polynomials  code-golf  number  code-golf  math  number  sequence  code-golf  quine  code-generation  code-golf  arithmetic  set-theory  code-golf  sequence  code-golf  code-golf  string  math  fastest-code  optimization  code-golf  code-golf  internet  stack-exchange-api  code-golf  array-manipulation  code-golf  string  internet  string  code-challenge  internet  test-battery  code-golf  math  pi  code-golf  arithmetic  primes  code-golf  array-manipulation  code-golf  string  code-golf  string  palindrome  code-golf  sequence  number-theory  fastest-algorithm  code-golf  math  number  base-conversion  code-golf  number-theory  sorting  subsequence  search  code-golf  permutations  code-challenge  popularity-contest  code-generation 

22
独特的筛子
给定一个整数列表,请创建一个布尔掩码,以便可以使用真实索引来过滤列表中的不同值。只要为对应于相同值的每组索引选择一个索引,选择哪个索引才是真正的索引就没有关系。 输入将是适合您的语言的格式的非负整数的非空列表,而输出将是遵循上述规范的布尔值列表。您可以在输出列表中使用自己的真实值和虚假值定义。 在下面的示例中,我定义1为真实且0为虚假。 [5, 4, 7, 1] Input [1, 1, 1, 1] Output Select only the values with with true indicies in the sieve [5 4 7 1] Contains zero duplicate values [5, 9, 7, 5, 6, 0, 5] [0, 1, 1, 1, 1, 1, 0] [ 9, 7, 5, …

8
分析地震
背景 在随机的Domino自动机是一个地震玩具模型,通过元胞自动机的启发。在此挑战中,您的任务是模拟该模型的简化版本,并从中收集数据。 自动机定义在位阵列上A,k位阵列表示可能发生地震的断层线。数组在其边界处环绕。条件A[i] = 0意味着位置i被放松,并且A[i] = 1手段,它的兴奋,或包含存储的能量。在每个时间步长,均一地随机选择阵列的一个位置。如果该位置放松,它将变得兴奋(将势能添加到系统中)。如果该位置已被激发,则将引发地震,并且所选位置和与其连接的所有激发位置将再次放松。放松的激发位置数就是地震的幅度。 例 考虑数组 100101110111 长度为12。如果随机过程从左侧选择第二个位,则数组将更新为 110101110111 ^ 由于所选位(标有^)为0。如果我们接下来从左边选择第四位,它是一个隔离的1,则触发震级为1的地震,并且该位0再次设置为: 110001110111 ^ 接下来,我们可以从右边选择第二个位,这将触发5级地震: 000001110000 ^ 请注意,1与所选择的“群集”相同的所有“ s”都是地震的一部分,并且数组在边界处环绕。 任务 您应将两个正整数k和用作输入t,您的任务是模拟随机的多米诺自动机的t时间步长,从k所有0s 的初始长度数组开始。您的输出应L为k整数列表,其中L[i](基于1的索引)包含i模拟过程中发生的震级数。您可以从输出中删除尾随零。 对于输入k = 15和t = 1000,一些代表性的输出是 [117, 97, 45, 26, 10, 5, 3, 1, 3, 0, 0, 0, 0, 0, 0] [135, 91, 58, 21, 8, 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.