Dalam segitiga Pascal, setiap angka adalah jumlah dari dua angka yang berada tepat di atasnya, memperlakukan titik-titik kosong sebagai nol:
Dengan memutar segitiga, kita dapat memotong matriks persegi dengan berbagai ukuran dan rotasi yang saya sebut matriks Pascal . Perhatikan bahwa matriks-matriks itu selalu harus berisi teratas . Berikut ini beberapa contohnya:
1 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20
6 3 1
3 2 1
1 1 1
1 5 15 35 70
1 4 10 20 35
1 3 6 10 15
1 2 3 4 5
1 1 1 1 1
1
1 1
2 1
Tugas
Dengan matriks kuadrat yang berisi angka positif dalam format beralasan apa pun, putuskan apakah itu matriks Pascal .
Decide berarti mengembalikan nilai kebenaran atau nilai falsy tergantung pada apakah inputnya adalah matriks Pascal , atau untuk memperbaiki dua nilai konstan dan mengembalikan satu untuk input yang benar dan yang lainnya untuk input yang salah.
Ini adalah kode-golf , jadi coba gunakan sesedikit mungkin byte dalam bahasa pilihan Anda. Kode terpendek dalam setiap bahasa menang, jadi saya tidak akan menerima jawaban.
Uji kasus
Benar
[[1, 1, 1, 1], [1, 2, 3, 4], [1, 3, 6, 10], [1, 4, 10, 20]]
[[6, 3, 1], [3, 2, 1], [1, 1, 1]]
[[1, 5, 15, 35, 70], [1, 4, 10, 20, 35], [1, 3, 6, 10, 15], [1, 2, 3, 4, 5], [1, 1, 1, 1, 1]]
[[1]]
[[1, 1], [2, 1]]
Salah
[[2]]
[[1, 2], [2, 1]]
[[1, 1], [3, 1]]
[[1, 1, 1, 1], [1, 2, 3, 4], [1, 4, 6, 10], [1, 4, 10, 20]]
[[6, 3, 1], [1, 1, 1], [3, 2, 1]]
[[2, 2, 2, 2], [2, 4, 6, 8], [2, 6, 12, 20], [2, 8, 20, 40]]
[[40, 20, 8, 2], [20, 12, 6, 2], [8, 6, 4, 2], [2, 2, 2, 2]]
[[1, 5, 15, 34, 70], [1, 4, 10, 20, 34], [1, 3, 6, 10, 15], [1, 2, 3, 4, 5], [1, 1, 1, 1, 1]]
sumber
[[40, 20, 8, 2], [20, 12, 6, 2], [8, 6, 4, 2], [2, 2, 2, 2]]
. Jawaban awal saya salah untuk yang satu ini, tetapi benar untuk semua kasus uji saat ini.Jawaban:
Brachylog ,
282423 byteIni terasa cukup lama tapi ini dia
{|↔}\↰₁{k{a₀ᶠ+ᵐ}ᵐ⊆?h=₁}
Penjelasan
Cobalah online!
sumber
JavaScript (ES6), 114 byte
Cobalah online!
sumber
MATL , 17 byte
Cobalah online! Atau verifikasi semua kasus uji .
Output
1
untuk matriks Pascal,0
jika tidak.Penjelasan
sumber
R , 104 byte
Cobalah online!
Menjijikan...
Membuat matriks Pascal kanonik
Z
dengan dimensi yang sama denganm
, kemudian menguji apakah matriks inputm
adalahidentical
untukany
rotasiZ
.sumber
Arang , 41 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Jika maksimum baris pertama lebih besar dari 1,
kemudian balikkan larik input.
Jika maksimum kolom pertama lebih besar dari 1,
lalu mirror array input.
Lingkarkan elemen-elemen dari array input dan cetak hasil minimum (yaitu logika Dan dari semua hasil),
membandingkan setiap nilai dengan 1 jika berada di baris pertama jika tidak jumlah baris di atas hingga dan termasuk sel di atas.
sumber
Python 2 , 129 byte
Cobalah online!
Mengembalikan
True
jikaM
Matriks Pascal, yang lain0
.sumber
05AB1E , 29 byte
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
Kotlin , 269 byte
Cobalah online!
sumber
Julia 0.7 , 78 byte
Cobalah online!
sumber
Java (JDK) , 234 byte
Cobalah online!
Kredit
sumber
i==s||j==S
hinggai==s|j==S
.m->{int l=m.length,i=0,j;for(;i<l;i++)for(j=0;j<l;j++)p=(i<1|j<1?m[i][j]<2:m[i][j]==m[i-1][j]+m[i][j-1])?p:0;return p>0;}
(122 byte)Jelly , 22 byte
Cobalah online!
Penjelasan
Helper link, memeriksa apakah rotasi matriks ini valid
Tautan utama
sumber