Większość ludzi zna trójkąt Pascala.
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
Trójkąt Pascala to automat, w którym wartość komórki jest sumą komórek w lewym górnym i prawym górnym rogu. Teraz zdefiniujemy podobny trójkąt. Zamiast po prostu przenieść komórki w lewy górny róg i prawy górny róg, bierzemy wszystkie komórki wzdłuż dwóch nieskończonych linii rozciągających się w lewy górny i prawy górny róg. Podobnie jak trójkąt Pascala zaczynamy od pojedynczego 1
wypełnionego nieskończenie zerami i stamtąd budujemy w dół.
Na przykład, aby obliczyć komórkę oznaczoną za pomocą x
1
1 1
2 2 2
4 5 5 4
x
Zsumowalibyśmy następujące komórki
.
. .
2 . 2
. 5 5 .
x
Tworzenie naszej nowej komórki 14
.
Zadanie
Biorąc pod uwagę numer wiersza ( n ) i odległość od lewej ( r ) oblicz i wyślij r -ty niezerowy wpis z lewej strony w n- tym rzędzie. (odpowiednikiem trójkąta Pascala jest nCr ). Możesz założyć, że r jest mniejsze niż n .
To jest golf golfowy , celem jest zminimalizowanie liczby bajtów w twoim rozwiązaniu.
Przypadki testowe
0,0 -> 1
1,0 -> 1
2,0 -> 2
4,2 -> 14
6,3 -> 106
Oto kilka pierwszych rzędów w kształcie trójkąta:
1
1 1
2 2 2
4 5 5 4
8 12 14 12 8
16 28 37 37 28 16
32 64 94 106 94 64 32
64 144 232 289 289 232 144 64
128 320 560 760 838 760 560 320 128
Odpowiedzi:
Galaretka ,
1817 bajtówWykorzystuje indeksowanie 0.
Wypróbuj online!
Jak to działa
źródło
Python 3 , 72 bajty
1 bajt dzięki Kritixi Lithos.
Wypróbuj online!
źródło
n>=r>=0and
i zapisać bajtn
wynosi 0, to daje 1; w przeciwnym razie daje 0. Jest jakn and ... or 1
, ale krótszy.0^0
jest1
w większości języków programowania .ES6,
8078 bajtówW akcji!
Dwa bajty dzięki Arnauldowi.
źródło
while(n&&r<n)
iwhile(o*r)
.PHP , 94 bajty
sposób rekurencyjny indeksowany 0
Wypróbuj online!
PHP , 125 bajtów
0-indeksowane
Wypróbuj online!
PHP> = 7.1, 159 bajtów
Indeksowane 0 dla wierszy powyżej 50
źródło
Python 3 , 61 bajtów
Zwraca wartość True dla przypadku podstawowego (0, 0) , co jest domyślnie dozwolone .
Wypróbuj online!
źródło
~n<-r<1
jest całkiem sprytny, spędziłem dobre 10 minut próbując grać w golfan>=r>=0
.Pascal , 145 bajtów
Wypróbuj online!
Wykorzystuje
T(n, r) = T(n-1, r-1) + T(n-1, r)
rekurencję.źródło