2 차원리스트 인 파스칼의 삼각형


11

중첩 된리스트이고 사용되지 않은 스팟에 0을 포함하는 파스칼의 삼각형을 만듭니다.

출력 배열에서 파스칼의 삼각형 수는 0으로 구분되고 각 측면에서 0으로 채워져 중앙에 위치합니다. 예를 들어, 맨 아래 행 (마지막 하위 배열)은 왼쪽과 오른쪽에 0이 없어야합니다. 두 번째-마지막 서브 어레이에는 각면에 하나의 제로 패딩이 있습니다.

다음은 입력 출력입니다 5.

[[0,0,0,0,1,0,0,0,0],
[0,0,0,1,0,1,0,0,0],
[0,0,1,0,2,0,1,0,0],
[0,1,0,3,0,3,0,1,0],
[1,0,4,0,6,0,4,0,1]]

평소와 같이 바이트 수가 가장 적은 솔루션이 승리합니다.


5
의 중복 . 불행히도 출력 형식을 변경해도 문제가 변경되지는 않습니다. 그래도 도움이 필요하면 스택 오버플로에 게시하십시오.
GamrCorps

2
음, 여분의 0이 있습니다.
CalculatorFeline

이 프로그램은 당신이 원하는 것을 인쇄합니다 (Python 3) :print("def pascal(n):\n #make the nested list\n a=[[0 for i in range(2*n+1)] for j in range(n+1)] #make the list\n a[0][n]=1 #add the initial 1\n for i in range(1,n+1):\n for j in range(2*n+1):\n a[i][j]=a[i-1][j-1]+a[i-1][(j+1)%(2*n+1)] #the main part\n return a")
CalculatorFeline

1
@CatsAreFluffy 여분의 0은 이전 반복에서 공백을 대체합니다. 이것은 기능적으로 동일한 문제입니다.
ricdesi

2
언어에 기본 배열 표현 구문을 사용할 수 있습니까? 아니면 형식을 협상 할 수 없습니까?
cat

답변:


3

Mathematica, 70 68 바이트

NestList[ListConvolve[{1,0,1},#,2]&,Join[#,{1},#],#2]&[0~Table~#,#]&

MATL 솔루션과 유사합니다.


3

매스 매 티카, 48 바이트

CellularAutomaton[{#+#3&@@#&,{},1},{{1},0},#-1]&

CellularAutomation 환상적이다.


2

젤리, 12 바이트

NR¬ṙ-,1S$³Ð¡

여기에서 시도하십시오.

설명

                   This is a list of functions, each operating on the input, n:
NR                 Get the range [-n -n+1 ... 0 ... n-1 n].
  ¬                Logical NOT the entire range: [0 0 ... 1 ... 0 0].
         ³Ð¡       Repeat n times, and cumulate the results:
   ṙ-,1                Rotate by both -1 and 1
       S               Sum the results.
        $              (Joins the above two functions)

1

하스켈, 66 바이트

q n|d<-0<$[2..n]=scanl(\(s:t)_->zipWith(+)(0:s:t)$t++[0])(d++1:d)d

사용 예 : q 4-> [[0,0,0,1,0,0,0],[0,0,1,0,1,0,0],[0,1,0,2,0,1,0],[1,0,3,0,3,0,1]].

작동 방식 :

d <- 0<$[2..n]                      -- bind d to a list of (length n)-1 zeros
scanl                               -- build a list
                         (d++1:d)   -- starting with  [d ++ 1 ++ d]
      \(s:t)_                    d  -- by combining the previous element with the
                                    -- elements of d, but ignoring them, i.e.
                                    -- build a list of (length d) by repeatedly
                                    -- modifying the start element by
          zipWith(+)                -- adding element-wise
                    (0:s:t)         -- the previous element prepended by 0  
                           t++[0]   -- and the tail of the previous element
                                    -- followed by a 0 

1

파이썬 3 172 158 133 바이트

def p(n):
 x=2*n+1;y=range
 a=[[0]*x]*n;a[0][n]=1
 for i in y(1,n+1):
  for j in y(x):a[i][j]=a[i-1][j-1]+a[i-1][(j+1)%(x)]
 return a

계속 나아지 다


1
아직 완전 골프가 아니에요?
cat

음 이것은 (골프가 적은 형태로) 질문에 대한 의견을 남긴 프로그램에 의해 인쇄됩니다.
CalculatorFeline

1

MATL , 24 22 21 바이트

tEq:=Gq:"t5BX+8L)]N$v

편집 (2016 년 5 월 20 일) : 언어 버전 18.0.0부터 위의 코드를 실행하려면 약간의 변경이 필요합니다. 아래 링크에는 수정 사항이 포함되어 있습니다

온라인으로 사용해보십시오!

루프를 사용하여 각각의 새 행을 스택에 푸시합니다. 컨볼 루션을 적용 [1,0,1]하고 원하는 크기 만 유지 하는 이전 행에서 새 행이 계산됩니다 . 루프 후 모든 행이 2D 배열로 연결되어 표시됩니다. 2D 배열은 MATL에서 열로 정렬 된 숫자 표로 표시됩니다.

t           % implicit input n. Duplicate
Eq          % 2*n-1
:           % range [1,2,...,2*n-1]
=           % gives [0,0,...1,...0,0]. This is the first row
Gq:         % range [1,2,...,n-1]
"           % for each. Repeat n-1 times
  t         %   duplicate latest row. This duplicate will become the next row
  5B        %   push array [1,0,1] (5 converted to binary)
  X+        %   convolution
  8L        %   predefined literal [2,-1i]. Used for indexing
  )         %   apply that index: remove one element at each end
]           % end for each
N$v         % concatenate all rows into a 2D array. Implicitly display

0

자바 스크립트, 152 146 바이트

f=i=>[...Array(i)].map((x,j)=>(z=[...Array(i*2-1)].map((_,k)=>+!!~[i-j,i+j].indexOf(k+1)),y=j?z.map((_,k)=>_||(k&&(k+1 in y)?y[k-1]+y[k+1]:_)):z))


0

진지하게, 33 바이트

╩╜r`╣;lD0nkdZΣ`M╜rRZ`i0nkd@;)kΣ`M

온라인으로 사용해보십시오

나는 그 바이트 중 적어도 7 개 정도가 면도 될 수 있다고 확신하므로, 골프를 더 할 때까지 설명을 게시 할 때까지 기다릴 것입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.