Kebanyakan orang akrab dengan segitiga Pascal.
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
Segitiga Pascal adalah otomat di mana nilai sel adalah jumlah sel ke kiri atas dan kanan atas. Sekarang kita akan mendefinisikan segitiga serupa. Alih-alih hanya mengambil sel ke kiri atas dan kanan atas kita akan mengambil semua sel sepanjang dua garis tak terbatas memanjang ke kiri atas dan kanan atas. Sama seperti segitiga Pascal, kita mulai dengan satu 1
bantalan tanpa batas dengan nol dan membangun ke bawah dari sana.
Misalnya menghitung sel yang dilambangkan dengan x
1
1 1
2 2 2
4 5 5 4
x
Kami akan menjumlahkan sel-sel berikut
.
. .
2 . 2
. 5 5 .
x
Membuat sel baru kami 14
.
Tugas
Mengingat nomor baris ( n ), dan jarak dari kiri ( r ) menghitung dan output r th non zero-entri dari kiri pada n th berturut-turut. (ekuivalen pada segitiga Pascal adalah nCr ). Anda dapat berasumsi bahwa r kurang dari n .
Ini adalah kode-golf , tujuannya adalah untuk meminimalkan jumlah byte dalam solusi Anda.
Uji kasus
0,0 -> 1
1,0 -> 1
2,0 -> 2
4,2 -> 14
6,3 -> 106
Inilah baris pasangan pertama dalam bentuk segitiga:
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
Jawaban:
Jelly ,
1817 byteMenggunakan pengindeksan berbasis 0.
Cobalah online!
Bagaimana itu bekerja
sumber
Python 3 , 72 byte
1 byte berkat Kritixi Lithos.
Cobalah online!
sumber
n>=r>=0and
dan menyimpan byten
0, maka memberi 1; jika tidak, ia memberi 0. Itu sepertin and ... or 1
, tetapi lebih pendek.0^0
ada1
di sebagian besar bahasa pemrograman .ES6,
8078 byteBeraksi!
Dua byte, terima kasih kepada Arnauld.
sumber
while(n&&r<n)
danwhile(o*r)
.PHP , 94 byte
cara rekursif 0-diindeks
Cobalah online!
PHP , 125 byte
Diindeks 0
Cobalah online!
PHP> = 7.1, 159 byte
Diindeks 0 untuk baris lebih dari 50
sumber
Python 3 , 61 byte
Ini mengembalikan True untuk kasus dasar (0, 0) , yang diizinkan secara default .
Cobalah online!
sumber
~n<-r<1
cukup pintar, saya menghabiskan 10 menit yang baik untuk mencoba golfn>=r>=0
.Pascal , 145 byte
Cobalah online!
Gunakan
T(n, r) = T(n-1, r-1) + T(n-1, r)
rekursi.sumber