목록의 범위에 홈


26

이 과제는 단순히 파이썬 범위 함수와 비슷한 정수 목록을 반환하는 것입니다. 단, 각 연속 숫자는 목록의 깊이 여야한다는 점만 다릅니다.

규칙 :

  • 프로그램 또는 익명이 아닌 함수 만들기
  • 결과를 반환하거나 인쇄해야합니다
  • 결과는 목록 (목록) 또는 배열 (배열)로 반환되어야합니다.
  • 매개 변수가 0이면 빈 목록을 리턴하십시오.
  • 정수 매개 변수 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자인 것은 재미 있고 "Range of Lists"를 사용할 수 없었기 때문에이 자리에 올랐습니다.
mbomb007

그것은 대부분 사람들이 할당되지 않은 익명 함수를 작성하지 못하게하기위한 것입니다. 개인적으로, 매개 변수를 취하는 함수라면 선호합니다.
mbomb007

하나는 도우미 함수 인 두 개의 함수를 만들 수 있습니까?
프로그램

@ProgramFOX 예. import math예를 들어 누군가 파이썬에서 원한다면 함수 내에서 발생할 수 있다고 생각하지 않기 때문에 함수 외부의 코드가 좋습니다.
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]]]
Moris Zucca

@marinus 이것을 확인해 주시겠습니까?
mbomb007

정의 된 함수가 변수에 할당되어야한다는 것을 명확히하기 위해 하루나 이틀 전에 문제 설명을 변경했습니다. f←사용자 입력을 승인하도록 프로그램을 수정하지 않는 한 프로그램 시작 부분에 추가해야합니다 .
mbomb007

또한 출력은 목록에서 숫자의 깊이가 얼마나 다양한 지 보여주지 않습니다 ... 각 공간은 괄호입니까?
mbomb007

@MorisZucca 동의합니다. 여기를 참조하십시오 : ngn.github.io/apl/web/#code=%7B%D7%u2375%3A%2C%u2218%u2282/…
mbomb007

9

하스켈, 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. 도우미 함수 #는 필요한 목록을 재귀 적으로 구성합니다. 메인 함수 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

파이썬, 48 바이트

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

특별한 경우를 처리하기 위해 목록 곱셈 사용


나는 이것이 파이썬 2와 관련이 없다고 생각합니다-모든 파이썬에서 작동하는 것 같습니다.
isaacg

@isaacg 수정되었습니다. 내 원래의 제출은 아니지만 :)
Sp3000

작은 문자 저장 : 단일 목록이므로 *(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

자바 스크립트 (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

자바 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,하지만 더 이상이다). 107로 만들기 위해 +19, 여전히 내가 작업했던 Java 답변보다 7 더 낫습니다 : D
Geobits

저장할 o!=n수있는 두 가지를 볼 수 있습니다 : can o<n, 삼항을로 바꿀 수 있습니다 o<n?o++:"".
Geobits

Java 8에서는 finalon int n을 제거 할 수 있다고 생각합니다 .
Justin

2

파이썬 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]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]

글쎄, 당신은 내 파이썬 솔루션을 이겼다.
mbomb007

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 Jaggi

함께 사용되는 컴파일러를 언급해야합니다 C++.
Anmol Singh Jaggi

@anmolSinghJaggi 그래, 좋은 생각이야. Visual C ++ 2012는 주로 C ++ 11과 호환됩니다.
Nathan Cooper

오래된 게시물이지만 약간의 땜질으로 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

파이썬에서 실제로 말하고있는 것은 :

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
Jakube

좋아, 나는 그 바이트를 취할 것이다.
swstephe

@swstephe 당신은 변경하는 경우 [tQ]tQ해당되는, 당신의 작업의 순서를 교체, ?당신은 교체 할 수 있도록, !Q함께 Q. 결과적으로 ?u[HG)_UtQ]tQQY1 바이트가 더 절약됩니다.
isaacg

2

하스켈 , 65 59 45 41 바이트

이 중첩 된 목록은 Tree비워 둘 수 있다는 점을 제외하면 루팅 된 것과 동일한 데이터 구조 입니다. 그러므로, 우리 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)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

펄-44

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

요청시 설명을 추가합니다. 여기서 시도해 볼 수 있습니다 .


Perl에 익숙하지 않기 때문에 궁금합니다. 가장 깊게 중첩 된 배열에는 2 개의 요소 nil가 있습니까? 하나 는 동등하거나 다른 것이 있습니까? 나는 페이지의 가장 안쪽에 연결된 배열이 다음과 같기 때문에 묻습니다.(3,)
Devon Parsons

1
@DevonParsons 읽을 수있는 방식으로 인쇄하기 위해 추가 한 코드는 각 요소 뒤에 쉼표를 추가합니다. Perl undef에 해당 nil하거나 nullPerl이며 추가 요소가 없습니다. Perl은 배열을 평탄화하여 중첩 배열 참조를 작성합니다.
hmatt1

1

자바 스크립트, 93 바이트

이것은 이상적이지는 않지만 시도해 볼 수도 있습니다. 나는 나중에 이것을 시도하고 더 골프를 칠 것이지만, 지금은 분명한 방법이 없다.

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

짧을 수 있으므로 재귀 솔루션을 만들 수도 있습니다.
mbomb007

1

파이썬, 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

파이썬, 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

파이썬 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

루비-재귀 버전-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 윈도우 7 64에서 16 기가 바이트 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에서 바로 테스트 할 수 있습니다 (오류 무시).


자바 스크립트 (57 바이트) :

이것은 자바 스크립트가 반환에 대해 까다 롭고 변수 이름을 줄인 것을 제외하고 는 동일한 정확한 코드 입니다.

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 지정되지 않았습니다. 함수에 이름을 강제하는 것은 없습니다 . 그러나 나는 그것을 바꿨다.
Ismael Miguel

질문 아래에 나에 의한 코멘트가 있었다 : "주로 사람들이 할당되지 않은 익명 함수를 작성하는 것을 막는 것입니다. 개인적으로, 매개 변수를 취하는 함수라면 개인적으로 선호합니다."
mbomb007

그리고 내가 질문을 변경합니다. 그러나 이름으로 호출 할 수 있어야하는 함수 (일명, 한 번 이상 전체 함수를 다시 입력하지 않아도 됨)에 대한 표준 코덱입니다.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.)> 이것에 대해 들어 본 적이 없으며이 웹 사이트를 1 년 가까이 사용합니다. 게다가, 함수를 변수에 할당 할 수 있기 때문에 이것은 잘못된 인수입니다.
Ismael Miguel

0

자바 스크립트 (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

공통 리스프 (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)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.