リストの範囲のホーム


26

この課題は、Pythonの範囲関数に似た整数のリストのリストを返すことです。ただし、連続する各数値はリストの深さでなければなりません。

ルール

  • プログラムまたは非匿名関数を作成します
  • 結果を返すか印刷する必要があります
  • 結果は、リスト(リスト)または配列(アレイ)で返される必要があります
  • パラメータがゼロの場合、空のリストを返します
  • これは、整数パラメーター0 <= n <70を処理できる必要があります。
    • (再帰的ソリューションはかなり速く爆発します)
  • この関数は、1つのパラメーターのみで呼び出し可能でなければなりません。
  • その他の動作は未定義です。
  • これはコードゴルフなので、最短のコードが勝ちます。

呼び出し例:

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

これは主に、割り当てられていない匿名関数を書くことを防ぐためです。個人的には、それがパラメーターをとる関数である場合、それを好みます。
mbomb007

1つがヘルパー関数である2つの関数を作成できますか?
ProgramFOX

@ProgramFOXはい。あなたの関数の外部のコードは大丈夫だと思います。誰かがimport math例えばPythonでやりたいと思ったら、それが関数内で発生する可能性はないと思います。
mbomb007

@DevonParsonsサンプルプログラムが含まれている質問はたくさんありますが、大丈夫です。
mbomb007

回答:


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

APL(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

定義された関数を変数に割り当てる必要があることを明確にするために、1〜2日前に問題のステートメントを変更しました。f←ユーザー入力を受け入れるように変更しない限り、プログラムの先頭に追加する必要があります。
mbomb007

また、出力は、リスト内の数字の深さを明確に示していません...各スペースは暗黙のブラケットですか?
mbomb007

@MorisZucca同意しなければなりません。ここを参照してください:ngn.github.io/apl/web/#code=%7B%D7%u2375%3A%2C%u2218%u2282/...
mbomb007

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では、リストのすべての要素は同じ型でなければならないため、整数と整数のリストを混在させることはできず、カスタムリストtypeを定義する必要がありますL。ヘルパー関数#は、必要なリストを再帰的に作成します。メイン関数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

@isaacg修正済み。私の元の提出ではありませんでした:)
Sp3000

小さな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.Listおよびjava.util.Stackですが、それははるかに長いです)。+19で107になりましたが、私が取り組んでいたJavaの答えよりも7倍優れています:D
Geobits

私はあなたが保存することができます2を参照してくださいo!=nすることができo<n、あなたはに三元を入れ替えることができますo<n?o++:""
ジオビット

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

2

CJam、17バイト

オプティマイザーが16を見つけたことは知っていますが、できることは次のとおりです。

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

これはブロックであり、CJamの関数に最も近いもので、スタック上の整数を受け取り、目的のネストされた配列を残します。

このプログラムを使用してテストし、スタックに入力を配置し、関数を呼び出してスタックを検査します。のため0に、スタック出力に含まれることに注意してください""-これ空の配列のCJamのネイティブ表現です。



2

C#-100

単純な再帰。ゼロの特殊なケースを確認し、1つの変数でチェックし、他の変数でチェックします

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ポインターには、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
ジャギ

と共に使用されるコンパイラに言及する必要がありC++ます。
アンモルシンジャギ

@anmolSinghJaggiうん、いい考えだ。ほとんどがC ++ 11に準拠しているVisual C ++ 2012。
ネイサンクーパー

古い投稿ですが、いじくり回すと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));
ダナ

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を使用できます。また、Yは[]に事前初期化されます。
isaacg

qJ_1はと同じ!Qです。そしてJtQ実際には1バイトを無駄にします。?Y!Qu[HG)_UtQ[tQ
ジャクベ

さて、これらのバイトを取ります。
-swstephe

@swstepheを変更した場合[tQ]tQ相当する、あなたはの操作の順序を入れ替える?あなたが交換できるように、!QQ。これにより、?u[HG)_UtQ]tQQYさらに1バイト節約されます。
isaacg

2

Haskell65 59 45 41バイト

これらのネストされたリストは、Tree空にすることもできることを除いて、rootedと同じデータ構造です。したがって、それらのリストを使用できます-とも呼ばれForestます。

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

オンラインでお試しください!

説明

まず、Treeデータ型を実装する必要があります。

data Tree = Node [Tree] Int

そこからは、2つのパラメーター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)yxs

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がありますか?1つまたは同等のものは何ですか?ページ上のあなたのような最も内側の配列のルックスにリンクするので、私は尋ねる(3,)
デボンパーソンズ

1
@DevonParsonsで読みやすい方法で印刷するために追加したコードは、各要素の後にカンマを追加します。undefはPerlと同等nilまたはnullPerlであり、余分な要素はありません。Perlは配列をフラット化するため、ネストされた配列参照が作成されます。
hmatt1

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

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空のリストを与えることに。


それは私が気づいていること、この攻撃の間だったandor整数に次の省略スペースを持つことができますが、elseできません。
mbomb007

@ mbomb007これは、でelse始まるためでe、そのようなもの1e6は有効な数値リテラルです。
-xnor

私はそれを知っていましたが、それが理由だとは知りませんでした。ありがとう。
mbomb007

1
@ mbomb007実際には2.6または2.7の後、または前にスペース失う可能性があります。elsex = 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...返します[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

@ mbomb007 Windows 7 x64、16Gb RAMでは、926で動作し、927(stack level too deep (SystemStackError))で失敗します
デボンパーソンズ

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

@ mbomb007指定されていません。関数に名前を強制するもの何もありませんでした。しかし、私はそれを変更しました。
イスマエルミゲル

質問の下に私からのコメントがありました:「それは主に人々が割り当てられていない匿名関数を書くことを防ぐためです。個人的には、それがパラメータを取る関数である場合、私はそれを望みます。」
mbomb007

そして、私がやった質問を変更します。しかし、それは彼らが名前で呼び出し可能でなければならないという機能のためにかなり標準codegolf(。別名、複数回そして再び全体の機能を入力しない場合よりも)あなたが使用しての皆の機能を参照してください理由だのです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.)>これを聞いたことがないので、私はこのWebサイトを1年近く使用しています。また、関数を変数に割り当てることができるため、これは無効な引数です。
イスマエルミゲル

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

Common 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)、loop-indexとinput-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)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.