# Pascal's tree-angle

## J, 67 bytes

(1785951#:~13#7)(0(,~' '#~12-<[email protected]:@#)@":[email protected][}.}.)&>1;2}.<@(!{:)\i.14


Try it online!

### How it works

<@(!{:)\i.14


The first 14 rows of the triangle.

1;2}.


Drop the first two rows, prepend 1.

(1785951#:~13#7)


0 0 0 0 0 2 1 1 1 5 5 6 6 stored in base 7.

":[email protected][}.}.)&>1


Unbox, drop the first N and last N elements from each row, where N is the corresponding item from the base 7 array before.

0(…)@":


Convert each row to string and …

12-<[email protected]:@#


Count its length, halve and round it down.

,~' '#~


Prepend that amount of spaces before each row.

## Python 2, 118 bytes

n=1
exec"a=n/6+n/10*4+(n==6);print' '.join(str(((2**n+1)**n>>n*k)%2**n)for k in range(a,n+1%n-a)).center(23);n+=1;"*13


Try it online!

Expresses binomial coefficients inline like in my tip here with binom(n,k)=((2**n+1)**n>>n*k)%2**n. The number of entries cut off on each side for the n'th row (one-indexed) is expressed as n/6+n/10*4+(n==6). For the first row, one additional entry on the right is cut off.

Here's a slightly more readable version without an exec so that the syntax highlighting works:

119 bytes

n=1
while n<14:a=n/6+n/10*4+(n==6);print' '.join(str(((2**n+1)**n>>n*k)%2**n)for k in range(a,n+1%n-a)).center(23);n+=1


Try it online!

## 05AB1E, 26 bytes

13LεDÝc•6hö¢ðU•RNèF¦¨]»¦.c


Try it online.

Explanation:

13L            # Push a list in the range [1,13]
ε           # Map each value y to:
D          #  Duplicate the value y
Ý         #  Pop and push a list in the range [0,y]
c        #  Take the binomial coefficient of y with each value in this list
#  (we now have the 0-based y'th Pascal row)
•6hö¢ðU•   #  Push compressed integer 6655111200000
R  #  Reverse it to "0000021115566"
Nè         #  Index the map-index into it to get the N'th digit
F        #  Loop that many times:
¦¨      #   Remove both the first and last item of the current Pascal row list
]           # Close both the inner loop and map
»          # Join each inner list by spaces, and then each string by newlines
¦         # Remove the leading 1 on the very first line
.c       # Left-focused centralize the newline-delimited string
# (after which the result is output implicitly)


See this 05AB1E tip of mine (section How to compress large integers?) to understand why •6hö¢ðU• is 6655111200000.