Questions tagged «data-structures»

对于涉及组织数据方式(数据类型,数组,二叉树等)的挑战

30
填充N的N维N ^ N数组
输入: 足够的内存和一个正整数N 出: 用N填充的N维N ^ N数组,其中N ^ N表示N个N个N个N个N个项的N个项... 例子: 1:[1]是长度为1的一维数组(列表),包含单个1 2:[[2,2],[2,2]]这是一个2行2列的2D数组(一个表),用2s填充 3:[[[3,3,3],[3,3,3],[3,3,3]],[[3,3,3],[3,3,3],[3,3,3]],[[3,3,3],[3,3,3],[3,3,3]]]这是一个3D数组(一个多维数据集),具有3层,3行和3列,填充了3s 4: [[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]],[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]],[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]],[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]]] 5和6:请参阅答案之一。

30
实现堆栈
我不敢相信我们还没有这个。.它是编程中最重要的数据结构之一,但仍然足够简单,可以在代码高尔夫球中实现: 挑战 您的任务是实现允许压入和弹出数字的堆栈,以测试实现并保持I / O简单,我们将使用以下设置: 输入将是非负整数列表 每个正整数表示一个,每个表示一个 -丢弃顶部元素。push( n ) 0 pop()ñnn推( n)push(n)\texttt{push(}n\texttt{)}000pop()pop()\texttt{pop()} 输出将是结果堆栈 例 例如,如果我们得到:[ 12 ,3 ,0 ,101 ,11 ,1 ,0 ,0 ,14 ,0 ,28 ][12,3,0,101,11,1,0,0,14,0,28][12,3,0,101,11,1,0,0,14,0,28] 1230101111个0014028[ 12 ][ 3 ,12 ][ 12 ][ 101 ,12 ][11,101,12][1,11,101,12][11,101,12][101,12][14,101,12][101,12][28,101,12]12[12]3[3,12]0[12]101[101,12]11[11,101,12]1[1,11,101,12]0[11,101,12]0[101,12]14[14,101,12]0[101,12]28[28,101,12] \begin{aligned} & 12 & [12] \\ & 3 & [3,12] \\ …

19
我的馅饼被平分了吗?
编写一个包含正整数的非空列表的程序或函数。您可能会假设它是以合理方便的格式输入的,例如"1 2 3 4"或[1, 2, 3, 4]。 输入列表中的数字表示完整饼图的切片,其中每个切片的大小与其对应的数字成比例,并且所有切片均按给定的顺序排列在图表周围。 例如,饼图为1 2 3 4: 您的代码必须回答的问题是:饼图是否一分为二?也就是说,从圆的一侧到另一侧是否存在一条完美的直线,将其对称地一分为二? 你需要输出truthy值,如果有至少一个平分线和输出falsy如果有没有价值。 在该1 2 3 4示例中,之间有一个等分线4 1,2 3因此输出将是真实的。 但是对于输入而言1 2 3 4 5,没有平分线,因此输出将是虚假的: 其他例子 以其他方式排列数字可能会消除等分线。 例如2 1 3 4→虚假: 如果输入列表中只有一个数字,则饼图不会一分为二。 例如10→虚假: 可能有多个平分线。只要大于零,输出就是真实的。 例如6 6 12 12 12 11 1 12→真实:(这里有3个等分线) 即使平分在视觉上不明显,也可能存在。 例如1000000 1000001→虚假: 例如1000000 1000001 1→真实: (感谢nces.ed.gov生成饼图。) 测试用例 …
43 code-golf  math  arithmetic  combinatorics  decision-problem  code-golf  sequence  number-theory  binary  code-golf  number-theory  set-theory  code-golf  hashing  code-golf  game  card-games  code-golf  ascii-art  code-golf  arithmetic  array-manipulation  jelly  code-golf  string  array-manipulation  code-golf  sorting  code-challenge  code-golf  number  date  binary  code-golf  arithmetic  code-golf  math  number  linear-algebra  polynomials  code-golf  ascii-art  code-golf  grid  decision-problem  code-golf  string  combinatorics  code-golf  string  kolmogorov-complexity  arithmetic  date  code-golf  number  data-structures  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation 

30
StringgnirtSStringgnirtSStringgnirtS
这对您来说是一个相对简单的挑战。 给定长度为N的字符串,向前输出该字符串,然后向后输出,然后向前,然后向后输出……等等。N次。例如,如果您输入的是 Hello! 您应该输出: Hello!!olleHHello!!olleHHello!!olleH 您也可以选择输出一个尾随换行符。 您的提交可以是完整程序,也可以是函数,并且您可以采用任何合理的格式进行输入和输出。例如,您可以从STDIN / STDOUT中获取IO,从函数中获取参数,并从文件中获取返回值,等等。您可以放心地假设输入字符串将不会为空,并且仅包含可打印的ASCII。您必须在一行上输出新字符串。因此,例如,如果最后一个示例的输出是 Hello! !olleH Hello! !olleH Hello! !olleH 这不是有效的解决方案! 这里是更多测试用例: Input: a Output: a Input: abcd Output: abcddcbaabcddcba Input: OK! Output: OK!!KOOK! Input: 4815162342 Output: 4815162342243261518448151623422432615184481516234224326151844815162342243261518448151623422432615184 Input: PPCG Output: PPCGGCPPPPCGGCPP Input: 42 Output: 4224 排行榜 由于这是一个代码高尔夫挑战,因此禁止了标准漏洞,以字节为单位的最短答案胜出!但是,这也是在任何特定语言中答案最短的竞赛。尽管Java答案不太可能会击败perl或某些打高尔夫球语言的答案,但拥有最短的Java答案仍然令人印象深刻。因此,您可以使用此页首横幅查看 所有语言中最短的答案,以及 每种语言的最短答案。 为确保您的答案显示出来,请使用以下Markdown模板以标题开头。 # Language Name, N …
42 code-golf  string  code-golf  math  geometry  data-structures  repeated-transformation  code-golf  number  random  code-golf  math  rational-numbers  code-golf  ascii-art  animation  code-golf  ascii-art  number  code-golf  math  number  code-golf  data-structures  code-golf  string  parsing  code-golf  array-manipulation  random  permutations  code-golf  string  code-golf  parsing  code-golf  string  quine  code-golf  string  parsing  comment  code-golf  string  counting  natural-language  code-golf  string  decision-problem  code-golf  math  code-challenge  metagolf  test-battery  code-golf  string  code-golf  math  number  arithmetic  source-layout  code-golf  number  primes  decision-problem  code-golf  math  arithmetic  code-golf  date  code-golf  string  cryptography  code-golf  code-golf  chess  board-game  code-golf  geometry  grid  puzzle-solver  set-partitions  code-golf  number  natural-language  code-golf  ascii-art  code-golf  math  code-golf  string  ascii-art  kolmogorov-complexity  code-golf  string  natural-language  code-golf  game  board-game  tic-tac-toe  code-golf  ascii-art  hexagonal-grid  code-golf  string  comment  code-golf  internet  code-golf  sorting  code-golf  kolmogorov-complexity  unicode  code-golf  tips  code-golf  string  natural-language  code-golf  string  kolmogorov-complexity  source-layout  hello-world  code-golf  string  kolmogorov-complexity  counting  natural-language  code-golf  random  quine  code-golf  string  math  bitwise  code-golf  permutations  code-golf  string  code-golf  arithmetic 

20
法鲁洗牌数组
阿法鲁洗牌是经常使用的魔术到“洗牌”甲板的技术。要执行Faro随机播放,您首先将卡座切成相等的两半,然后将这两个半插入。例如 [1 2 3 4 5 6 7 8] 法鲁洗牌是 [1 5 2 6 3 7 4 8] 可以重复多次。有趣的是,如果重复此次数足够多,您将总是回到原始数组。例如: [1 2 3 4 5 6 7 8] [1 5 2 6 3 7 4 8] [1 3 5 7 2 4 6 8] [1 2 3 4 5 6 7 …
31 code-golf  permutations  card-games  code-golf  graphical-output  random  code-golf  image-processing  color  code-golf  primes  code-golf  math  arithmetic  combinatorics  decision-problem  code-golf  sequence  number-theory  binary  code-golf  number-theory  set-theory  code-golf  hashing  code-golf  game  card-games  code-golf  ascii-art  code-golf  arithmetic  array-manipulation  jelly  code-golf  string  array-manipulation  code-golf  sorting  code-challenge  code-golf  number  date  binary  code-golf  arithmetic  code-golf  math  number  linear-algebra  polynomials  code-golf  ascii-art  code-golf  grid  decision-problem  code-golf  string  combinatorics  code-golf  string  kolmogorov-complexity  arithmetic  date  code-golf  number  data-structures  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation 

8
我们应该成为朋友吗?
请注意,这是一个主要关注数据结构的问题 介绍 Bacefook希望人们变得更加友好!因此,他们正在实施一个新系统来推荐朋友!您的任务是帮助Bacefook实施新的建议系统。 规格: 你的程序必须是支持3种类型的命令的一个REPL(读取-求值-输出循环): FRIEND,SUGGEST和KNOW。 FRIEND X Y-指定X和Y是社交网络中的朋友。 如果X是Y的朋友,那么Y是X的朋友 可以,但不必输出 X永远是X的朋友 KNOW X Y -如果X和Y是朋友,则输出真实值,否则输出虚假值 KNOW X X 将始终输出真实值 SUGGEST X Y-如果X和Y应该是朋友,则输出真实值,否则输出虚假值。如果满足以下条件,则X和Y应该是朋友: X和Y不是朋友 X和Y至少有1个共同的朋友 你被允许代替FRIEND,SUGGEST并KNOW用自己的字符串,但你必须谈不上什么串您更换每个命令。 您的程序可以以任何希望的方式接受输入/产生输出,只要可以相当容易地识别其工作方式即可。 社交网络中的人数N在1到100,000之间,但是可能有任意数量的“朋友链接”(边缘)。 如果您尚未注意到,这是一个图形搜索问题。实现此功能的(可能)最简单(可能最快)的数据结构将是邻接矩阵。 测试用例 FRIEND A B FRIEND A C FRIEND B D SUGGEST A B -> Falsy, as they are friends SUGGEST A …

3
从数组中绘制树
给定一个可能嵌套的非空单位数字正整数(不能保证唯一)的数组,请使用箱形绘图字符将ASCII艺术形式的输出输出为树┌ ┴ ┐ ─ │ ┬ ┼。(这些是从“代码页437”复制的,但是您可以使用任何等效的表示形式)。 数组的每个整数都应该是树的叶子。数组中处于同一级别的元素应位于树的同一级别。所有元素都应由足够的空格分隔以区分(由您决定宽度之间的最小间隔)。 例如,给定array [[1, [2]], [3, [4, 5]]],输出以下树 ┌─┴─┐ ┌┴┐ ┌┴─┐ 1 │ 3 ┌┴┐ 2 4 5 对于数组[1, 2, 3],树可能看起来像 ┌─┼─┐ 1 2 3 但是数组[[1, 2, 3]]看起来像 │ ┌─┼─┐ 1 2 3 虽然数组[1, [1, [1, [1]]]]看起来像 ┌─┴┐ 1 ┌┴─┐ 1 ┌┴┐ 1 │ …

1
堆叠交换
问题 说你有N个堆命名小号1至S Ñ,其中每个小号ķ(k = 1至N)中包含数k的N份。 例如,当N = 3时,堆栈如下所示: 1 2 3 <- top of stack 1 2 3 1 2 3 <- bottom of stack ======= 1 2 3 <- stack index 这里有3个索引为1、2和3的堆栈,每个堆栈包含N个自己索引的实例。 目的是重新排列N个堆栈,以使它们中的每个堆栈都按从上到下的顺序完全包含数字1到N。 例如,对于N = 3,目标是将堆栈重新排列为: 1 1 1 2 2 2 3 3 3 ======= 1 2 3 …

17
中和数据
要中和数据,请将所有数字(非数字!)递归替换为零,并将所有字符(非字符串!)替换为空格。 您必须接受您的语言可以处理的任何单个数字,字符或字符串,或者可能是混合数字/字符数据的递归数组*。例如,如果您的语言可以处理,则必须接受实际的字符串(而不是将输入限制为单个字符的列表)。 如果您的语言包含一个内置的程序,可以完成所有或大部分任务,那么不提供该程序的话,我将不胜感激。 每种语言中提交时间最短的作品都是获胜者,我会收到我的支持。 样品盒 "" → "" 7 → 0 123.456 → 0 "X" → " " " " → " " "Yo!" → " " [] → [] [-1.2E3] → [0] ["Hey"] → [" "] ["H","e","y"] → [" "," "," "] ["R",2,"D",2] → [" ",0," ",0] ["C","3","P",0] → …

9
实现懒惰列表,最好使用您不太熟悉的语言[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 3年前关闭。 这是一个很好的练习,可以使您更加流利地使用您一直想学习的编程语言,但是只需要稍加修改即可。这涉及使用对象,使用或模拟闭包以及扩展类型系统。 您的任务是编写代码来管理惰性列表,然后使用它来实现生成斐波那契数字的算法: 代码示例在Haskell中 let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in take 40 fibs 结果: [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986] 您的惰性列表实现应符合以下准则: 列表节点是三件事之一: 无-空列表。 [] 缺点-一个单一项目,其余项目的列表配对: 1 : [2,3,4,5] (:是在Haskell利弊运营商) Thunk-延迟计算,在需要时会生成List节点。 它支持以下操作: nil-构造一个空列表。 缺点-构建一个缺点单元格。 thunk-给定一个不带参数且返回Nil或Cons的函数,构造一个Thunk。 强制-给定一个List节点: 如果是Nil或Cons,只需将其返回即可。 如果是Thunk,则调用其函数以获取Nil或Cons。用该Nil或Cons替换该thunk,然后将其返回。 注意:用其强制值替换thunk是“ lazy”定义的重要组成部分。如果跳过此步骤,则上面的斐波那契算法将太慢。 空-查看List节点是否为Nil(强制后)。 head(又名“ …

4
验证茎叶图
甲茎叶情节显示在组一串数值的,这是由所有,但最后一位决定。例如,假设我们有以下数据集: 0, 2, 12, 13, 13, 15, 16, 20, 29, 43, 49, 101 我们可以生成此茎叶图: 0|02 1|23356 2|09 3| 4|39 5| 6| 7| 8| 9| 10|1 第一行的主干为0,因此其“叶子”(位于-之后的数字)|代表0(含0)和10(不含)之间的值。每个茎上的叶子都经过分类。没有叶子的茎(如3)仍出现在图中。101的值在100包含和110之间,因此它的词干为10(100除以10)。 您面临的挑战是检查一段文字是否是有效的茎叶图。有效地块满足以下规则: 数据范围内的每个茎(即10个宽的组)正好有一行(包括中间没有叶子的茎) 没有茎超出范围 所有叶子按升序排列 所有茎都按升序排列 仅包含数字字符(除分隔符外|) 您不必处理具有小数部分的数字。您可以批准或拒绝词干中多余的前导零,但不允许使用空白词干。至少会有一个值。您只能在每行的叶子后面假设多余的空格。您可以假设前导和/或尾随换行符。所有字符均为可打印ASCII。 您的函数或程序应返回或输出(到屏幕或标准输出)有效绘图的真实值,或无效绘图的错误值。您可以将标准输入,文件中的输入当作一个大字符串,作为一个字符串数组-最为方便。 以下是一些有效的测试用例(用空行分隔): 2|00003457 3|35 4|799 5|3 99|3 100|0556 101| 102| 103|8 0|0 这是一些无效的测试用例,在右边有注释: |0 Blank stem 5|347 …

10
实施制袋作业
一个包,也称为多集,是一个无序的集合。您可以将其称为允许重复的集合,或者称为未排序/未索引的列表(或数组)。在这个挑战中,您需要执行袋操作:加法,差,乘法,除法,计数和相等性测试。 运作方式 指定的操作可能不是常规的。 另外,将两个袋子合并为一个,保留每个值的总数 [1,2,2,3] + [1,2,4] = [1,1,2,2,2,3,4] 差异从袋子中除去另一个袋子的每个元素,或者如果没有这样的元素则不执行任何操作 [1,2,2,4] - [1,2] = [2,4] [1,2,3] - [2,4] = [1,3] 乘法将袋子中的每个元素相乘。 [1,2,3,3,4] * 3 = [1,1,1,2,2,2,3,3,3,3,3,3,4,4,4] 2 * [1,3] = [1,1,3,3] 除法是不常见的:将每n个相等的元素放入n个相等的新袋子中,不能形成n组的元素保留在袋子中。退回n个新袋子中的任何一个。 [1,1,2,2,2] / 2 = [1,2] [1,2,2,3,3,3] / 3 = [3] 计数计算可以从股息袋中生产多少个除数袋 [1,1,2,2,2,2,3,3,3] c [1,2,3] = 2 相等性测试检查两个袋子中每个元素的编号是否相同 [1,2,2,3] …

2
改过自新
您会得到一棵树,按照计算机科学的传统,它的根在顶部,叶在底部。叶子节点用数字标记。您的目标是获取标记的特殊叶子-1并将其向上移动为新的根。 [3, [[16], -1], [4]] --> [[[[4], 3], [16]]] 您可以想象将特殊的叶子旋转到顶部,然后让其余的树垂下来。旋转树时将树保持在平面上,以获取所有分支的正确的从左到右顺序。 新的树除的外,其余都有原始树的叶子-1。 输入: 一棵树,其叶子是不同的正整数,除了的一片叶子-1。树的根将至少有两个分支脱落。 输入以嵌套列表之类[3, [[16], -1], [[4]]]或其字符串表示形式给出。分隔符是可选的,取决于您,但是相邻的数字需要分开。 输出: 以与输入相同的格式输出或打印翻转的树。列表条目的顺序必须正确。就地修改很好。 如果您的输入/输出是一种数据类型,则默认情况下它必须是一种以所需格式打印的数据。不允许使用基本上为您执行任务的内置程序。 测试用例: >> [3, [[16], -1], [4]] [[[[4], 3], [16]]] >> [2, -1] [[2]] >> [44, -1, 12] [[12, 44]] >> [[[[-1]]], [[[[4]]]]] [[[[[[[[[4]]]]]]]]] >> [[1, 2, 3], [4, -1, 6], …

28
计算逆模量
任务: 输出for的值x,其中a mod x = b有两个给定值a,b。 假设条件 a并且b将始终为正整数 永远不会有解决方案 x 如果存在多个解决方案,请至少输出其中之一。 如果没有任何解决方案,则不输出任何内容或表明不存在任何解决方案。 允许内置(不像其他数学方法那样有趣) 输出始终是整数 例子 A, B >> POSSIBLE OUTPUTS 5, 2 >> 3 9, 4 >> 5 8, 2 >> 3, 6 6, 6 >> 7, (ANY NUMBER > 6) 8, 7 >> NO SOLUTION 2, 4 >> NO …
18 code-golf  math  number-theory  code-golf  number  integer  code-golf  string  code-golf  music  code-golf  arithmetic  array-manipulation  decision-problem  code-golf  math  rational-numbers  code-golf  code-golf  graphical-output  hardware  code-golf  math  number  code-golf  string  parsing  natural-language  code-golf  tips  brain-flak  code-golf  graph-theory  code-golf  number  polynomials  king-of-the-hill  code-golf  ascii-art  kolmogorov-complexity  animation  king-of-the-hill  code-golf  tips  code-golf  ascii-art  code-golf  string  array-manipulation  data-structures  code-golf  math  number  code-golf  string  base-conversion  binary  code-golf  decision-problem  graph-theory  code-golf  math  polynomials  code-golf  kolmogorov-complexity  physics  code-golf  sequence  number-theory  code-golf  math  integer-partitions  code-golf  array-manipulation  random  permutations  code-golf  string  decision-problem 

7
编号分级大纲
编写一个包含字符串的程序,其中每一行都由0缩进一定数量的空格的字符组成。顶行没有缩进,并且每隔一行缩进的空间最多比前一行缩进更多。 没有行将有尾随空格,但是您可以选择假设只有一条尾随换行符。 例如,输入可能看起来像这样: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 您的任务是像对其进行分级一样对它进行编号,使用递增的正整数作为行标题。这将是示例的输出: 1 1 1 2 2 2 1 2 3 1 3 1 1 2 注意每个分层缩进级别如何都有自己的一组递增数字,即使它们仅递增到一个。 在输出中,不应有尾随空格,但是可以选择有一条尾随换行符。 编写一个通过stdin或命令行获取输入字符串的完整程序,或者编写一个将字符串作为参数的函数。打印结果或将其作为字符串返回。 以字节为单位的最短代码获胜。 例子 如果输入空字符串,则应输出空字符串。 下一个最简单的示例是输入 0 应该变成 1 大示例-输入: 0 0 0 0 0 0 0 …

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.