列表范围内的首页


26

挑战很简单,就是返回一个整数列表的列表,类似于Python range函数,只是每个连续的数字必须深于列表。

规则

  • 创建程序或非匿名函数
  • 它应该返回或打印结果
  • 结果应以列表(列表)或数组(数组)返回
  • 如果参数为零,则返回一个空列表
  • 这应该能够处理整数参数0 <= n <70。
    • (递归解决方案很快就爆炸了)
  • 该函数只能使用一个参数调用。
  • 其他行为是不确定的。
  • 这是代码高尔夫,所以最短的代码获胜。

呼叫范例:

rangeList(6)
> [0, [1, [2, [3, [4, [5]]]]]]

测试用例:

0  => []
1  => [0]
2  => [0, [1]]
6  => [0, [1, [2, [3, [4, [5]]]]]]
26 => [0, [1, [2, [3, [4, [5, [6, [7, [8, [9, [10, [11, [12, [13, [14, [15, [16, [17, [18, [19, [20, [21, [22, [23, [24, [25]]]]]]]]]]]]]]]]]]]]]]]]]]
69 => [0, [1, [2, [3, [4, [5, [6, [7, [8, [9, [10, [11, [12, [13, [14, [15, [16, [17, [18, [19, [20, [21, [22, [23, [24, [25, [26, [27, [28, [29, [30, [31, [32, [33, [34, [35, [36, [37, [38, [39, [40, [41, [42, [43, [44, [45, [46, [47, [48, [49, [50, [51, [52, [53, [54, [55, [56, [57, [58, [59, [60, [61, [62, [63, [64, [65, [66, [67, [68]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]

编辑: isaacg的答案是迄今为止最短的答案。如果有人用挑战发布时所用的语言找到了一个简短的答案,我将更新接受的答案。感谢参与!


2
随机评论:有趣的是标题的最小字符数是15,而我不能使用“列表范围”,所以我当场提出了这个建议。
mbomb007'3

这主要是为了防止人们编写未分配的匿名函数。就个人而言,如果它是一个带有参数的函数,我会更喜欢它。
mbomb007'3

是否可以创建两个函数,其中一个是辅助函数?
ProgramFOX

@ProgramFOX是的。我认为函数外部的代码很好,因为import math例如,如果有人要使用Python,我认为代码可能不会在函数内部发生。
mbomb007'3

@DevonParsons有很多问题包含在其中的示例程序,但是还可以。
mbomb007'3

Answers:


11

Pyth,13个字节

?hu]+HG_UQYQY

在这里尝试。

                 Implicit:
                 Q = eval(input())
                 Y = []
?           QY   If Q = 0, print Y
 h               else, print the first element of
  u     _UQY     the reduce, where Y is the initial value, over the list
                 reversed(range(Q))
   ]+HG          The reduce function: The list containing H prepended onto G.
                 The new number is inserted into the accumulated list,
                 then the resultant list is wrapped in another list.

10

杀伤人员地雷(13 18)

假设⎕IO=0

f←{×⍵:⊃,∘⊂∘,/⍳⍵⋄⍬}

说明:

  • ×⍵:如果是肯定的,
    • ,∘⊂∘,:将左侧操作数加入到右侧操作数的包围中(例如x ,∘⊂∘, y = [x, [y]]
    • /: 降低
    • ⍳⍵: 数字 0..⍵-1
    • :披露结果
  • : 除此以外
    • :返回空列表
    • (这是必需的,因为/在上失败,并⍳0给出了空列表。)

附录:

该函数返回一个嵌套数组。但是,从APL的默认输出中很难分辨出这一点。它通过空格分隔数组项,因此您只能通过双空格来区分嵌套。这是一个函数,该函数将使用嵌套数组并返回一个字符串,以Python样式(即[a,[b,[c,...]]])格式化嵌套数组。

arrfmt←{0=≡⍵:⍕⍵ ⋄ '[',(1↓∊',',¨∇¨⍵),']'}

1
我认为您需要在圆括号后再加上一个∘,否则(至少在我的解释器中-dyalog14中)最后一个元素没有被封闭。例如[0 [1 [2 3]]]
莫里斯·祖卡

@marinus您能验证一下吗?
mbomb007'3

我在一两天前更改了问题说明,以明确定义的功能应分配给变量。f←除非您修改程序以接受用户输入,否则应将其添加到程序的开头。
mbomb007'3

另外,输出结果也没有显示数字在列表中的深度有多大……每个空格是否暗含括号?
mbomb007'3


9

Haskell,67个字节

data L=E|I Int|L[L] 
1#m=L[I$m-1]
n#m=L[I$m-n,(n-1)#m]
p 0=E
p n=n#n

在Haskell中,列表的所有元素必须具有相同的类型,因此我不能将整数与整数列表混合使用,而必须定义自定义列表类型L。helper函数以#递归方式构造所需列表。main函数p检查空列表,#否则调用。

由于默认情况下无法打印新的数据类型(规则仅允许返回列表),因此我添加了一些代码进行演示:

data L=E|I Int|L[L] deriving Show

现在:

-- mapM_ (print . p) [0..5]
E
L [I 0]
L [I 0,L [I 1]]
L [I 0,L [I 1,L [I 2]]]
L [I 0,L [I 1,L [I 2,L [I 3]]]]
L [I 0,L [I 1,L [I 2,L [I 3,L [I 4]]]]]

7

Python,48个字节

f=lambda n,i=0:i<n and[i]+[f(n,i+1)]*(i<n-1)or[]

使用列表乘法处理特殊情况。


我不认为这是特定于Python 2的-似乎适用于所有python。
isaacg 2015年

@isaacg固定。我的原始提交不是:)
Sp3000,2015年

一个很小的char-save:*(i<n-1)可以作为完成[:n+~i],因为它是一个单例列表。
xnor


5

CJam,16个字节

Lri){[}%]~;']*~p

这是一个完整程序。它通过STDIN接收输入,并将最终数组打印到STDOUT上。

与其他CJam条目一样,0输入将被打印,""因为这是CJam中空数组的表示。

运作方式

L                   "Put an empty array on stack. This will be used for the 0 input";
 ri)                "Read the input, convert it to integer and increment it";
    {[}%            "Map over the array [0 ... input number] starting another array";
                    "after each element";
        ]~;         "Now on stack, we have input number, an empty array and the final";
                    "opening bracket. Close that array, unwrap it and pop the empty array";
           ']*~     "Put a string containing input number of ] characters and eval it";
                    "This closes all the opened arrays in the map earlier";
               p    "Print the string representation of the array";
                    "If the input was 0, the map runs 1 time and the ; pops that 1 array";
                    "Thus leaving only the initial empty array on stack";

在这里在线尝试


3

JavaScript(ES6)40

递归解决方案,非常健壮,没有任何打击。 6500附近更新失败,“递归过多”

F=n=>n--?(R=m=>m<n?[m,R(++m)]:[m])(0):[]

迭代解决方案(45)除内存使用量外没有其他限制

F=n=>{for(s=n?[--n]:[];n;)s=[--n,s];return s}

尝试F(1000):FireBug控制台不会向您显示超过190个嵌套数组,但是它们在那里


3

Java中,88个 107 105 104 102字节

import java.util.*;int o;List f(final int n){return new Stack(){{add(n<1?"":o++);if(o<n)add(f(n));}};}

与其他语言相比,它相当长,尽管Java不能做得更好。仅需检查即可确定是否继续递归。


您需要使它import java.util.*;成为自包含的(或完全符合java.util.Listand java.util.Stack,但这要长得多)。+19使其成为107,仍然比我正在研究的Java答案还要好7:D
Geobits,2015年

我看到两个您可以保存:o!=ncan o<n,并且可以将三元数交换为o<n?o++:""
Geobits,2015年

在Java 8中,我相信finalon int n可以删除。
贾斯汀

2

Python 2,56个字节

我怀疑这可能会打更多。

f=lambda n,i=0:[i,f(n,i+1)]if i<n-1 else[i]if n>0 else[]

测试:

# for n in (0,1,2,6,26,69): print n, '=>', f(n)
0 => []
1 => [0]
2 => [0, [1]]
6 => [0, [1, [2, [3, [4, [5]]]]]]
26 => [0, [1, [2, [3, [4, [5, [6, [7, [8, [9, [10, [11, [12, [13, [14, [15, [16, [17, [18, [19, [20, [21, [22, [23, [24, [25]]]]]]]]]]]]]]]]]]]]]]]]]]
69 => [0, [1, [2, [3, [4, [5, [6, [7, [8, [9, [10, [11, [12, [13, [14, [15, [16, [17, [18, [19, [20, [21, [22, [23, [24, [25, [26, [27, [28, [29, [30, [31, [32, [33, [34, [35, [36, [37, [38, [39, [40, [41, [42, [43, [44, [45, [46, [47, [48, [49, [50, [51, [52, [53, [54, [55, [56, [57, [58, [59, [60, [61, [62, [63, [64, [65, [66, [67, [68]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]

好吧,您击败了我的Python解决方案。
mbomb007'3

2

CJam,17个字节

我知道Optimizer找到了16个,但是这是我能做的最好的:

{:I{[}%;{]}I1e>*}

这是一个块,与CJam中的函数最接近,它在堆栈上采用整数,并保留所需的嵌套数组。

使用此程序对其进行测试,它将输入放入堆栈中,然后调用该函数并检查堆栈。请注意,对于0,堆栈输出将包含""-这 CJam对空数组的本机表示。



2

C#-100

简单递归。检查零的特殊情况,并用一个变量打勾,用另一个变量打勾

object[]A(int y,int x=0){return y==0?new object[0]:y==1?new object[]{x}:new object[]{x,A(--y,++x)};}

C ++ 87

(Visual C ++ 2012)

int*A(int y,int x=0){int*b=new int{x};return!y?new int:--y?(b[1]=(int)A(y,++x))?b:0:b;}

这个很棒,我的意思是拜占庭,但是它与c#的基本思想相同。

它是C样式的数组实现,因此它不给您一个数组,而是提供一个int指针,在其中我同时存储了int和其他指针。像这样:[0,*] *->[1,#] #-> [2,&] &-> etc,其中符号是指针的int值的伪代码,而->是指针在内存中的指针。

我已经设计(咳嗽)了一个非常好用的c样式锯齿状数组的实现,但是我认为它足够合理,可以放在问题的规则之内。

这里有很多滥用三元运算符,也有很多滥用从int到bool的隐式强制转换。

示例:如果让int *bar = (int*)A(3);,我们可以看到:

bar
0x003bded8 {0}
((int*)bar[1])[0]
1
((int*)(((int*)bar[1])[1]))[0]
2

这是[0,[1,[2]]]的指针对话。

好的。实际上并不一定要很糟糕。这是一些运行此c ++代码的测试代码:

int* GetNext(int* p){
  return (int*)p[1];
}

int main()
{
    auto x = 10;
    auto bar = A(x);

    for (int i = 1; i < x; i++){
        bar = GetNext(bar);
        std::cout << bar[0] << std::endl;
    }

}


C ++版本无法编译。ideone.com/fmcXYP
Anmol Singh

您应该提及与一起使用的编译器C++
Anmol Singh Jaggi'3

@anmolSinghJaggi是的,好主意。Visual C ++ 2012,主要符合C ++ 11。
内森·库珀

旧职位,但经过一番修补,我将其降至86岁Array g(params object[]a)=>a;Array f(int y,int x=0)=>y<1?g():y<2?g(x):g(x,f(y-1,x+1));
dana

2

Pyth,15个字节

?u[HG)_UtQ]tQQY

真正的意思是,在Python中:

Q = eval(input())
if Q:
    print reduce(lambda G,H:[H,G], reverse(range(Q-1)), [Q-1])
else:
    print []

嘿,很高兴您正在学习Pyth!如果要生成评估的输入,则可以使用Q,Q会为您完成。同样,Y被预初始化为[]。
isaacg

qJ_1与相同!Q。并JtQ实际上浪费了1个字节。?Y!Qu[HG)_UtQ[tQ
2015年

好吧,我将占用这些字节。
swstephe 2015年

@swstephe如果更改[tQ]tQ,即等效,则交换为的操作顺序?,因此可以替换!QQ。结果是?u[HG)_UtQ]tQQY-再节省1个字节。
isaacg

2

Haskell中65个59 45 41字节

这些嵌套列表与root Tree的数据结构相同,不同之处在于它们也可以为空。因此,我们可以使用它们的列表-也称为a Forest来代表它们。

(0!)
data T=N[T]Int
m!n=[N((m+1)!n)m|m<n]

在线尝试!

说明

首先我们需要实现Tree数据类型:

data Tree = Node [Tree] Int

从那里开始,仅使用两个参数m(递增计数)进行递归并n跟踪何时终止:

m ! n= [ Node ((m+1)!n) m| m<n ]

备用,61字节

import Data.Tree
f n=unfoldForest(\b->(b,[b+1|b<n-1]))[0|n>0]

在线尝试!

说明

该函数unfoldForest采用一个初始值列表和一个函数x -> (y,[x])。对于每个初始值,x它使用函数展开一棵树,生成一个元组(y,xs),该元组y将成为根,xs并用于重复该过程:

unfoldForest (\b -> (b, [b+1 | b < 2]) [0]
   Node 0 [unfoldForest (\b -> (b, [b+1 | b < 2) [1]]
   Node 0 [Node 1 [unfoldForest (\b -> (b, [b+1 | b < 2) []]]
   Node 0 [Node 1 []]

1

Perl-44

sub t{$r=[($t)=@_];$r=[$t,$r]while--$t>0;$r}

将根据要求添加说明。您可以在这里尝试。


我想知道,因为我不熟悉Perl-嵌套最深的数组中是否包含2个元素,一个元素nil或其他等效元素?我问,因为您在页面上链接到最里面的数组的样子(3,)
Devon Parsons

1
@DevonParsons我添加的以可读方式打印的代码在每个元素之后添加一个逗号。undef是的equilvalent nilnullPerl中并没有额外的元素。Perl展平了数组,因此这将创建嵌套的数组引用。
hmatt1 2015年

1

JavaScript,93个字节

这不是理想的选择,但我不妨尝试一下。稍后,我将尝试进一步打高尔夫球,尽管到目前为止,我还没有找到明显的方法。

function f(n){s='[';i=0;while(i<n-1)s+=i+++',[';s+=i||'';do{s+=']'}while(i--);return eval(s)}

您也可以尝试创建一个递归解决方案,因为它可能更短。
mbomb007'3

1

Python,75个字节

这只是为了展示。这是我在创建/设计挑战时编写的程序。

f=lambda x,y=[]:y if x<1 else f(x-1,[x-2]+[y or[x-1]])if x>1 else y or[x-1]

1

Python,44岁

f=lambda n,i=0:i<n-1and[i,f(n,i+1)]or[i][:n]

递归创建树。将[:n]在年底是特殊情况下的n==0进给空单。


正是这种挑战时,我才意识到and,并or能有下一次省略整数位,但else不能。
mbomb007'3

@ mbomb007这是因为else以开头e,并且类似1e6的东西是有效的数字文字。
xnor 2015年

我知道,但是我不知道那是为什么。谢谢。
mbomb007'3

1
@ mbomb007实际上是在2.6或2.7之后,您可能会在else例如x = 1 if y==2else 5工作之前失去空间。
Sp3000

它在Python 2.7.2 repl.it/eB6中不起作用(但在3.4中有效)
mbomb007

1

8字节

注意:这是非竞争性答案。在此问题之后,发布了Joe的第一个版本。

F:/+,M]R

我们有什么在这里?F:定义了一个函数F是的链/+,M]R。调用时Fn,首先Rn被求值,返回范围从0到n(不包括)。M]将每个元素包装到一个列表中。然后将该列表应用于/+,x +, y 返回x + [y]/是正确的选择。因此,/+,a b c d...return [a, [b, [c, [d...]]]

调用示例(代码缩进3,输出缩进0):

   F:/+,M]R
   F10
[0, [1, [2, [3, [4, [5, [6, [7, [8, [9]]]]]]]]]]
   F2
[0, [1]]
   F1
[0]
   F0
[]
   F_5
[0, [-1, [-2, [-3, [-4]]]]]

1

Ruby-递归版本-52

r=->(n,v=nil){(n-=1;n<0 ?v:r[n,(v ?[n,v]:[n])])||[]}

非递归版本:66 62 57

r=->i{(i-1).downto(0).inject(nil){|a,n|a ?[n,a]:[n]}||[]}

样本输出(两个版本相同)

p r[0]  # => []
p r[1]  # => [0]
p r[2]  # => [0, [1]]
p r[6]  # => [0, [1, [2, [3, [4, [5]]]]]]
p r[26] # => [0, [1, [2, [3, [4, [5, [6, [7, [8, [9, [10, [11, [12, [13, [14, [15, [16, [17, [18, [19, [20, [21, [22, [23, [24, [25]]]]]]]]]]]]]]]]]]]]]]]]]]
p r[69] # => [0, [1, [2, [3, [4, [5, [6, [7, [8, [9, [10, [11, [12, [13, [14, [15, [16, [17, [18, [19, [20, [21, [22, [23, [24, [25, [26, [27, [28, [29, [30, [31, [32, [33, [34, [35, [36, [37, [38, [39, [40, [41, [42, [43, [44, [45, [46, [47, [48, [49, [50, [51, [52, [53, [54, [55, [56, [57, [58, [59, [60, [61, [62, [63, [64, [65, [66, [67, [68]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]

非递归版本可以处理任意大的输入。

p r[1000] # => [0, [1, [2, [3, [4, [5, [6, [7, [8, [9, [10, [11, [12, [13, [14, [15, [16, [17, [18, [19, [20, [21, [22, [23, [24, [25, [26, [27, [28, [29, [30, [31, [32, [33, [34, [35, [36, [37, [38, [39, [40, [41, [42, [43, [44, [45, [46, [47, [48, [49, [50, [51, [52, [53, [54, [55, [56, [57, [58, [59, [60, [61, [62, [63, [64, [65, [66, [67, [68, [69, [70, [71, [72, [73, [74, [75, [76, [77, [78, [79, [80, [81, [82, [83, [84, [85, [86, [87, [88, [89, [90, [91, [92, [93, [94, [95, [96, [97, [98, [99, [100, [101, [102, [103, [104, [105, [106, [107, [108, [109, [110, [111, [112, [113, [114, [115, [116, [117, [118, [119, [120, [121, [122, [123, [124, [125, [126, [127, [128, [129, [130, [131, [132, [133, [134, [135, [136, [137, [138, [139, [140, [141, [142, [143, [144, [145, [146, [147, [148, [149, [150, [151, [152, [153, [154, [155, [156, [157, [158, [159, [160, [161, [162, [163, [164, [165, [166, [167, [168, [169, [170, [171, [172, [173, [174, [175, [176, [177, [178, [179, [180, [181, [182, [183, [184, [185, [186, [187, [188, [189, [190, [191, [192, [193, [194, [195, [196, [197, [198, [199, [200, [201, [202, [203, [204, [205, [206, [207, [208, [209, [210, [211, [212, [213, [214, [215, [216, [217, [218, [219, [220, [221, [222, [223, [224, [225, [226, [227, [228, [229, [230, [231, [232, [233, [234, [235, [236, [237, [238, [239, [240, [241, [242, [243, [244, [245, [246, [247, [248, [249, [250, [251, [252, [253, [254, [255, [256, [257, [258, [259, [260, [261, [262, [263, [264, [265, [266, [267, [268, [269, [270, [271, [272, [273, [274, [275, [276, [277, [278, [279, [280, [281, [282, [283, [284, [285, [286, [287, [288, [289, [290, [291, [292, [293, [294, [295, [296, [297, [298, [299, [300, [301, [302, [303, [304, [305, [306, [307, [308, [309, [310, [311, [312, [313, [314, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [325, [326, [327, [328, [329, [330, [331, [332, [333, [334, [335, [336, [337, [338, [339, [340, [341, [342, [343, [344, [345, [346, [347, [348, [349, [350, [351, [352, [353, [354, [355, [356, [357, [358, [359, [360, [361, [362, [363, [364, [365, [366, [367, [368, [369, [370, [371, [372, [373, [374, [375, [376, [377, [378, [379, [380, [381, [382, [383, [384, [385, [386, [387, [388, [389, [390, [391, [392, [393, [394, [395, [396, [397, [398, [399, [400, [401, [402, [403, [404, [405, [406, [407, [408, [409, [410, [411, [412, [413, [414, [415, [416, [417, [418, [419, [420, [421, [422, [423, [424, [425, [426, [427, [428, [429, [430, [431, [432, [433, [434, [435, [436, [437, [438, [439, [440, [441, [442, [443, [444, [445, [446, [447, [448, [449, [450, [451, [452, [453, [454, [455, [456, [457, [458, [459, [460, [461, [462, [463, [464, [465, [466, [467, [468, [469, [470, [471, [472, [473, [474, [475, [476, [477, [478, [479, [480, [481, [482, [483, [484, [485, [486, [487, [488, [489, [490, [491, [492, [493, [494, [495, [496, [497, [498, [499, [500, [501, [502, [503, [504, [505, [506, [507, [508, [509, [510, [511, [512, [513, [514, [515, [516, [517, [518, [519, [520, [521, [522, [523, [524, [525, [526, [527, [528, [529, [530, [531, [532, [533, [534, [535, [536, [537, [538, [539, [540, [541, [542, [543, [544, [545, [546, [547, [548, [549, [550, [551, [552, [553, [554, [555, [556, [557, [558, [559, [560, [561, [562, [563, [564, [565, [566, [567, [568, [569, [570, [571, [572, [573, [574, [575, [576, [577, [578, [579, [580, [581, [582, [583, [584, [585, [586, [587, [588, [589, [590, [591, [592, [593, [594, [595, [596, [597, [598, [599, [600, [601, [602, [603, [604, [605, [606, [607, [608, [609, [610, [611, [612, [613, [614, [615, [616, [617, [618, [619, [620, [621, [622, [623, [624, [625, [626, [627, [628, [629, [630, [631, [632, [633, [634, [635, [636, [637, [638, [639, [640, [641, [642, [643, [644, [645, [646, [647, [648, [649, [650, [651, [652, [653, [654, [655, [656, [657, [658, [659, [660, [661, [662, [663, [664, [665, [666, [667, [668, [669, [670, [671, [672, [673, [674, [675, [676, [677, [678, [679, [680, [681, [682, [683, [684, [685, [686, [687, [688, [689, [690, [691, [692, [693, [694, [695, [696, [697, [698, [699, [700, [701, [702, [703, [704, [705, [706, [707, [708, [709, [710, [711, [712, [713, [714, [715, [716, [717, [718, [719, [720, [721, [722, [723, [724, [725, [726, [727, [728, [729, [730, [731, [732, [733, [734, [735, [736, [737, [738, [739, [740, [741, [742, [743, [744, [745, [746, [747, [748, [749, [750, [751, [752, [753, [754, [755, [756, [757, [758, [759, [760, [761, [762, [763, [764, [765, [766, [767, [768, [769, [770, [771, [772, [773, [774, [775, [776, [777, [778, [779, [780, [781, [782, [783, [784, [785, [786, [787, [788, [789, [790, [791, [792, [793, [794, [795, [796, [797, [798, [799, [800, [801, [802, [803, [804, [805, [806, [807, [808, [809, [810, [811, [812, [813, [814, [815, [816, [817, [818, [819, [820, [821, [822, [823, [824, [825, [826, [827, [828, [829, [830, [831, [832, [833, [834, [835, [836, [837, [838, [839, [840, [841, [842, [843, [844, [845, [846, [847, [848, [849, [850, [851, [852, [853, [854, [855, [856, [857, [858, [859, [860, [861, [862, [863, [864, [865, [866, [867, [868, [869, [870, [871, [872, [873, [874, [875, [876, [877, [878, [879, [880, [881, [882, [883, [884, [885, [886, [887, [888, [889, [890, [891, [892, [893, [894, [895, [896, [897, [898, [899, [900, [901, [902, [903, [904, [905, [906, [907, [908, [909, [910, [911, [912, [913, [914, [915, [916, [917, [918, [919, [920, [921, [922, [923, [924, [925, [926, [927, [928, [929, [930, [931, [932, [933, [934, [935, [936, [937, [938, [939, [940, [941, [942, [943, [944, [945, [946, [947, [948, [949, [950, [951, [952, [953, [954, [955, [956, [957, [958, [959, [960, [961, [962, [963, [964, [965, [966, [967, [968, [969, [970, [971, [972, [973, [974, [975, [976, [977, [978, [979, [980, [981, [982, [983, [984, [985, [986, [987, [988, [989, [990, [991, [992, [993, [994, [995, [996, [997, [998, [999]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]

两个版本也都接受负数

p r[-5] # => []

很好奇,递归解决方案的失败价值是多少(由于内存/堆栈溢出)?
mbomb007'3

@ mbomb007在Windows 7 x64和16Gb RAM上,它可以在926上工作,并在927(stack level too deep (SystemStackError))上失败
Devon Parsons

0

PHP 5.4(67字节):

我知道我知道。

这绝不是最短的答案。

但这有效!

这里是:

function F($n){for($c=$n?[--$n]:[];~$n&&$n--;$c=[$n,$c]);return$c;}

您可以在这里进行测试:https//ideone.com/42L35E(忽略错误)


Javascript(57位元组):

这是相同的 确切 代码除了JavaScript是挑剔的回报,我已经减少了变量名:

function F(n){for(c=n?[--n]:[];~n&&n--;c=[n,c]);return c}

看到?相同的代码!


ES6(49个字节):

基本相同的完全相同的代码,但针对ES6:

F=n=>{for(c=n?[--n]:[];~n&&n--;c=[n,c]);return c}

我没有指定匿名函数,或者在注释中。我会说得更清楚。
mbomb007'3

@ mbomb007未指定。有没有强制执行的函数的名称。但是我已经改变了。
Ismael Miguel 2015年

我在问题下方有一条评论:“这主要是为了防止人们编写未分配的匿名函数。就我个人而言,如果它是一个带有参数的函数,我更喜欢它。”
mbomb007'3

确实改变了这个问题。但这是函数的标准标准代码,它们必须可以按名称调用(aka,一次以上,而不必再次键入整个函数。)这就是为什么您看到其他人的函数都使用了f=lambda……
mbomb007

@ mbomb007- But it's pretty standard codegolf for functions that they have to be callable by name (aka, more than once and without typing the entire function again.)>从来没有听说过,我在这个网站上使用了将近一年。此外,这是一个无效的参数,因为您可以将函数分配给变量。
Ismael Miguel

0

Javascript(114位元组):

其他人都在递归,所以我想尝试一个迭代解决方案。不过,我有太多特殊情况。

我拿着一个主列表,然后循环并用新数字附加新列表。

function q(n){a=[];if(n==1)a=[0];else if(n!=0){a=[0,b=[]];for(i=1;i<n;){c=[];b.push(c);b.push(i++);b=c}}return a}

0

通用Lisp(95字节):

(defun f(n &optional(i 0))(cond((< i(1- n))(cons i(list(f n(1+ i)))))((> n 0)(list i))(t nil)))


0

05AB1E,11 个字节

_i¯ëFNI<α)R

在线尝试验证所有测试用例

11字节替代:

_i¯ëݨRvy)R

在线尝试验证所有测试用例

说明:

05AB1E没有向下的循环,因此要在范围内循环,(input, 0]我必须:

  • 首先创建该范围(ݨR;创建范围[0, input],删除最后一项,反向),然后在其上循环(vy);
  • 或在范围内循环[0, input)F),并求出循环索引与输入1(NI<α)之间的绝对差。
_i          # If the (implicit) input is 0:
  ¯         #  Push the global array (empty by default)
 ë          # Else:
  F         #  Loop `N` in the range [0, (implicit) input):
   N        #   Push index `N`
    I<      #   Push input-1
      α     #   Take the absolute difference between the two
       )    #   Wrap everything on the stack into a list
        R   #   Reverse the list
            # (output the result implicitly after the if/loop)
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.