Segitiga Pascal dihasilkan dengan memulai dengan 1
dan membuat setiap baris terbentuk dari penambahan yang berurutan. Di sini, sebagai gantinya, kita akan membentuk segitiga dengan berganti-ganti perkalian dan penambahan.
Kami mulai baris 1
hanya dengan soliter 1
. Setelah itu, penambahan dilakukan pada baris ganjil, dan perkalian dilakukan pada baris genap (1-diindeks). Saat melakukan langkah penjumlahan, anggap spasi di luar segitiga diisi dengan 0
s. Saat melakukan langkah multiplikasi, asumsikan bahwa bagian luar diisi dengan 1
s.
Berikut adalah segitiga penuh hingga 7 baris. Tanda *
atau +
di sebelah kiri menunjukkan langkah apa yang dilakukan untuk menghasilkan baris itu.
1 1
2 * 1 1
3 + 1 2 1
4 * 1 2 2 1
5 + 1 3 4 3 1
6 * 1 3 12 12 3 1
7 + 1 4 15 24 15 4 1
Tantangan
Diberikan input n
, output n
baris ke-3 dari segitiga ini.
Aturan
- Anda dapat memilih untuk mengindeks 0 sebagai gantinya, tetapi kemudian harap menyadari bahwa baris penambahan dan multiplikasi harus flip-flop, sehingga segitiga yang sama persis dihasilkan seperti di atas. Silakan sebutkan dalam kiriman Anda jika Anda memilih untuk melakukan ini.
- Input dan output dapat dianggap sesuai dengan tipe integer asli bahasa Anda.
- Input dan output dapat diberikan dalam format apa pun yang nyaman .
- Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
- Jika memungkinkan, harap sertakan tautan ke lingkungan pengujian online agar orang lain dapat mencoba kode Anda!
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
Contohnya
Menampilkan dua contoh output yang mungkin dari banyak: daftar, atau string yang dipisahkan spasi.
4
[1, 2, 2, 1]
8
"1 4 60 360 360 60 4 1"
sumber
n
baris ke - th.Jawaban:
Pascal ,
249247233 byteNah, ini adalah segitiga bolak - balik Pascal .
1 byte disimpan berkat @ Mr.Xcoder
Cobalah online!
sumber
Python 2 ,
9793868178 byte-4 byte terima kasih kepada Rod. -10 byte terima kasih kepada Halvard Hummel.
Diindeks 0.
Cobalah online!
sumber
map([int.__add__ ,int.__mul__][i%2],[i%2]+a,a+[i%2])
akan berhasil (tidak diuji)Jelly ,
1712 byteIni adalah program lengkap (atau tautan niladik) yang mengambil input dari STDIN.
Cobalah online!
Bagaimana itu bekerja
sumber
Python 2 ,
96 8987 byte2 byte Terima kasih kepada Tn. Xcoder:
s=[1]
Sedikit berbeda dari jawaban yang benar-benar manusiawi
Cobalah online!
sumber
[1]
.CJam , 25 byte
Diindeks 0.
Cobalah online!
Penjelasan
Ini adalah blok anonim yang mengambil nomor dari tumpukan dan meninggalkan hasilnya di tumpukan.
sumber
2%!
harus mendorong 1 jika genap dan 0 jika ganjil, bukan?Mathematica, 92 byte
Cobalah online! (untuk mengerjakan matematika "Tr" diganti dengan "Total")
sumber
Haskell ,
7672 byteSolusi 0-diindeks:
Cobalah online!
Penjelasan
p
secara rekursif mendefinisikan segitiga bolak-balik, casing dasar / elemen pertama adalah[1]
Itu kemudian membangun segitiga dengan mengambil baris sebelumnya (
l
). Untuk mengetahui apa yang harus dilakukan dengannya, kita perlu melacak operator yang benar (o
) dan elemen netral yang sesuai (e
):Dari sini buat baris baru dengan menduplikasi baris dan untuk satu salinan kita tambahkan elemen netral, beri zip dengan operator dan tambahkan 1:
sumber
R ,
10898 byte-10 byte dengan mengganti tanda multiply yang sebenarnya dengan tanda plus. Tolong maafkan saya.
Cobalah online!
Cukup senang dengan metode umum (pertama kali saya alias primitif), tapi saya yakin masih ada golf yang harus dilakukan, terutama dengan penanganan canggung di mana n <3 yang mengarah ke banyak pelat baja.
sumber
`*`=`+`
! cukup pintar. Sisa dari peningkatan saya hanyalah teknik standar bermain golf, yang dengan senang hati akan saya jelaskan atas permintaan Anda :)n<3
Sekam ,
1716 byteCobalah online!
Solusi 1-diindeks.
Penjelasan
Baris pertama adalah fungsi utama, yang memanggil fungsi helper di baris kedua. Fungsi helper biasanya dipanggil dengan
₁
, tetapi dalam hal ini saya menggunakan fitur label meluap dari Husk: jika Anda merujuk ke garis N dalam program dengan M <N baris, Anda mendapatkan garis N mod M dengan fungsi pengubah M / N diterapkan padanya. Fungsi pengubah kedua adalahflip
, jadi saya menggunakan₅
untuk membalik argumen fungsi pembantu tanpa biaya byte tambahan.Ini adalah fungsi pembantu.
Inilah fungsi utamanya.
sumber
C # (.NET Core) ,
143134128 byte-4 bytes terima kasih kepada Phaeze
-5 bytes berkat Zac Faragher
-6 bytes berkat Kevin Cruijssen
Cobalah online!
Penjelasan:
sumber
var b=new[]{1};
dan kompiler akan menentukan tipe array untuk Anda.int[]b={1};
- 11 byte vs 20 apa adanya atau 16 seperti pada saran @Phaezen=>{int[]b={1},c;for(int i=0,j;++i<n;b=c)for(c=new int[i+1],c[0]=c[i]=1,j=0;++j<i;)c[j]=i%2<1?b[j-1]+b[j]:b[j-1]*b[j];return b;}
. Saya telah menggabungkanc
seperti iniint[]b={1},c;
; disingkati%2==0
menjadii%2<1
; Dan menghapus kurung loop dengan meletakkan segala sesuatu di dalamnya.Python 2 , 83 byte
Berikan sedikit cinta untuk
exec
0-diindeks
Cobalah online!
sumber
Pyth , 22 byte
Tersimpan berton-ton byte berkat @FryAmTheEggman ! Solusi awal di bawah ini.
Full Test Suite (0-diindeks).
Pyth ,
40 38 3635 byteIni terasa
waaaaaaaay terlalulama. Saran diterima.Test Suite atau Coba online!
sumber
u
(tetapi tidak bisa mengetahuinya). Terima kasih!J , 32 byte
Cobalah online!
sumber
Perl 5 , 111 + 2 (-na) = 113 byte
Cobalah online!
sumber
Mathematica, 70 byte
Cobalah di kotak pasir Wolfram ! Sayangnya, itu tidak berhasil di Matematika. Diindeks 0.
Penjelasan:
Partition[#,2,1,{-1,1},{}]
mengambil daftar dan mengembalikan semua sub-elemen dua elemen, ditambah daftar 1-elemen untuk awal dan akhir - misalnya,{1,2,3,4}
menjadi{{1}, {1,2}, {2,3}, {3,4}, {4}}
.PadRight[{},#,{1##&,Plus}]
membuat daftar bolak-balik1##&
(secara efektifTimes
) danPlus
, yang panjangnya adalah nomor input. KemudianFold
berulang kali terapkan fungsi partisi denganPlus
es danTimes
es yang diterapkan padanya, untuk membuat baris segitiga.sumber
Ruby ,
8382 byteCobalah online!
Ini diindeks 0.
sumber
Racket , 116 byte
Cobalah online!
sumber
TI-Basic (TI-84 Plus CE), 100 byte
1-diindeks, meminta pengguna untuk memasukkan dan mencetak daftar yang berisi
n
baris ke-empat Segitiga Bergantian Pascal.Sedangkan perulangan: L M adalah baris saat ini, dan L L adalah baris sebelumnya.
TI-Basic adalah a bahasa tokenized . Semua token yang digunakan di sini adalah token satu-byte.
Saya pikir saya bisa bermain golf ini lebih jauh dengan memodifikasi M di tempat dari akhir.
Penjelasan:
sumber
JavaScript (ES6),
716966 byteCobalah online!
Diindeks 0.
-3 byte oleh @Arnauld
sumber
i--?n%2?v*p[i]:v+p[i]