Segitiga Seidel adalah konstruksi matematika yang mirip dengan Segitiga Pascal, dan dikenal karena hubungannya dengan angka Bernoulli.
Beberapa baris pertama adalah:
1
1 1
2 2 1
2 4 5 5
16 16 14 10 5
16 32 46 56 61 61
Setiap baris dihasilkan sebagai berikut:
Jika nomor baris genap (1-diindeks):
Turunkan item pertama dari baris sebelumnya
Setiap item berikutnya adalah jumlah dari item sebelumnya dan item di atasnya
Gandakan item terakhir
Jika nomor barisnya ganjil:
Turunkan item terakhir dari baris sebelumnya
Ke belakang , setiap item adalah jumlah dari item sebelumnya dan item di atasnya
Gandakan apa yang sekarang menjadi item pertama.
Pada dasarnya, kita membangun segitiga dalam pola zig-zag:
1
v
1 > 1
v
2 < 2 < 1
v
2 > 4 > 5 > 5
Untuk informasi lebih lanjut, lihat halaman Wikipedia tentang nomor Bernoulli.
Tantangan:
Diberikan n
, baik sebagai argumen fungsi atau dari STDIN, cetak atau kembalikan n
baris th dari segitiga Seidel atau n
baris pertama . Anda dapat menggunakan pengindeksan 0 atau 1.
Anda tidak perlu menangani input negatif atau non-integer (atau 0, jika 1-diindeks). Anda tidak harus menangani keluaran yang lebih besar dari2147483647 = 2^31 - 1
Karena ini adalah kode-golf, lakukan ini dalam byte sesedikit mungkin.
Contoh:
Dalam contoh ini nilai kembali adalah n
baris ke-0, diindeks.
Input -> Output
0 1
1 1 1
2 2 2 1
6 272 272 256 224 178 122 61
13 22368256 44736512 66750976 88057856 108311296 127181312 144361456 159575936 172585936 183194912 191252686 196658216 199360981 199360981
sumber
Jawaban:
Brain-Flak , 66 byte
Cobalah online!
Baris diindeks 0.
sumber
JavaScript (SpiderMonkey) , 67 byte
Kode ini menyalahgunakan
sort()
metode dan tidak bekerja di semua mesin.Baris diindeks 0.
Cobalah online!
Bagaimana?
Kami membalikkan array dengan menggunakan
sort()
metode dengan fungsi callback yang mengabaikan parameternya dan mengembalikan 0 atau bilangan bulat positif. Jangan coba ini di rumah! Ini hanya berfungsi dengan baik pada SpiderMonkey.Perhatikan bahwa V8 mungkin menggunakan algoritma pengurutan yang berbeda tergantung pada panjang array (kurang dari 10 elemen).
Berkomentar
sumber
sort()
di mesin ini. Saya telah menambahkan penjelasan.Perl 6 , 52 byte
Cobalah online!
sumber
Haskell ,
898782 byteHanya
s
mencetak garis dalam urutan zig-zag, fungsi anonim di baris pertama membalikkan setengah dari baris.Terima kasih kepada @nimi karena telah menghemat 5 byte!
Cobalah online!
sumber
Jelly , 12 byte
Cobalah online!
sumber
⁸
Python 3 ,
9891 byteCobalah online!
Beralih ke penomoran baris berbasis 0 menghemat 7 byte.
sumber
Julia 0,6 , 85 byte
Cobalah online!
Ini adalah solusi rekursif di Julia. Perhatikan bahwa ini memiliki pengindeksan berbasis 1. Karena itu tes.
Versi tidak disatukan, untuk memahami logika:
Asa bonus, ini versi non-rekursif, tapi ini lebih lama:
sumber
Python 2 ,
10397 byteCobalah online!
Versi non-rekursif (lebih mudah dibaca):
Python 2 , 106 byte
Cobalah online!
Tentunya, lebih baik mungkin!
sumber
Python 3 , 91 byte
Cobalah online!
sumber
import
dan*