Utwórz trójkąt Pascala, który jest zagnieżdżoną listą i zawiera zera w nieużywanych miejscach.
W tablicy wyjściowej liczby trójkąta Pascala są oddzielone zerami i wypełnione zerami po każdej stronie, aby były wyśrodkowane. Na przykład dolny wiersz (ostatnia pod-tablica) nie może mieć zer po lewej i prawej stronie; przedostatnia podgrupa ma po jednej stronie dopełnienie zerowe i tak dalej.
Oto dane wejściowe 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]]
Jak zwykle wygrywa rozwiązanie z najmniejszą liczbą bajtów.
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")
Odpowiedzi:
Mathematica,
7068 bajtówPodobne do rozwiązania MATL.
źródło
Mathematica, 48 bajtów
CellularAutomation
jest fantastyczna.źródło
Galaretka, 12 bajtów
Wypróbuj tutaj.
Wyjaśnienie
źródło
Haskell, 66 bajtów
Przykład użycia:
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]]
.Jak to działa:
źródło
Python 3,
172158133 bajtówJest coraz lepiej
źródło
MATL ,
242221 bajtówEDYCJA (20 maja 2016 r.): Od wersji 18.0.0 języka powyższy kod wymaga kilku zmian, aby uruchomić. Poniższy link zawiera te modyfikacje
Wypróbuj online!
Wykorzystuje pętlę do wypychania każdego nowego wiersza na stos. Nowy wiersz jest obliczany na podstawie poprzedniego wiersza z zastosowaniem splotu z
[1,0,1]
zachowaniem tylko pożądanego rozmiaru. Po pętli wszystkie wiersze są łączone w tablicę 2D, która jest wyświetlana. Tablice 2D są wyświetlane w MATL jako tabele numeryczne wyrównane do kolumn.źródło
JavaScript,
152146 bajtówPokaż fragment kodu
źródło
Poważnie, 33 bajty
Wypróbuj online
Jestem względnie pewien, że co najmniej 7 z tych bajtów można zgolić, więc poczekam, aby opublikować wyjaśnienie, aż skończę grać w golfa.
źródło
PHP , 106 bajtów
Wypróbuj online!
źródło