Ini adalah Pascal's Braid:
1 4 15 56 209 780 2911 10864 40545 151316 564719
1 3 11 41 153 571 2131 7953 29681 110771 413403 1542841
1 4 15 56 209 780 2911 10864 40545 151316 564719
Saya benar-benar mengarangnya. Sejauh ini yang saya tahu, Blaise Pascal tidak memiliki rambut kepang, mungkin itu terbuat dari rambut, bukan angka.
Itu didefinisikan seperti ini:
- Kolom pertama memiliki satu
1
di tengah. - Kolom kedua memiliki
1
di bagian atas dan di bawah. - Sekarang kita bergantian antara meletakkan nomor di tengah atau dua salinan angka di bagian atas dan bawah.
- Jika angka tersebut berada di bagian atas atau bawah, itu akan menjadi jumlah dari dua angka yang berdekatan (misalnya
56 = 15 + 41
). Jika Anda sedikit memiringkan kepala, ini seperti langkah dalam segitiga Pascal. - Jika angkanya di tengah, itu akan menjadi jumlah dari ketiga angka yang berdekatan (misalnya
41 = 15 + 11 + 15
).
Tugas Anda adalah mencetak (sebagian) kepang ini.
Memasukkan
Anda harus menulis sebuah program atau fungsi, yang menerima integer tunggal n
, memberikan indeks kolom terakhir yang akan dikeluarkan.
Anda dapat memilih apakah kolom pertama (hanya mencetak satu 1
di garis tengah) sesuai dengan n = 0
atau n = 1
. Ini harus menjadi pilihan yang konsisten di semua input yang mungkin.
Keluaran
Keluarkan Pascal's Braid hingga n
kolom ke - th. Spasi putih harus sama persis dengan tata letak contoh di atas, kecuali bahwa Anda dapat menyambungkan garis yang lebih pendek ke panjang garis yang lebih panjang dengan spasi dan Anda dapat secara opsional menampilkan satu baris feed baris tambahan.
Dengan kata lain, setiap kolom harus sama persis dengan jumlah (atau pasangan angka yang sama) di kolom itu, angka dalam kolom berturut-turut tidak boleh tumpang tindih dan tidak boleh ada spasi di antara kolom.
Anda dapat mencetak hasilnya ke STDOUT (atau alternatif terdekat), atau jika Anda menulis suatu fungsi, Anda dapat mengembalikan string dengan konten yang sama atau daftar tiga string (satu untuk setiap baris).
Keterangan lebih lanjut
Anda dapat berasumsi bahwa n
tidak akan kurang dari indeks kolom pertama (jadi tidak kurang dari 0
atau 1
tergantung pada indeks Anda). Anda juga dapat mengasumsikan bahwa angka terakhir dalam jalinan kurang dari 256 atau angka terbesar yang dapat diwakili oleh tipe bilangan bulat asli bahasa Anda, mana yang lebih besar . Jadi jika tipe integer asli Anda hanya dapat menyimpan byte, Anda dapat mengasumsikan bahwa yang terbesar n
adalah 9
atau 10
(tergantung pada apakah Anda menggunakan berbasis 0 atau 1 n
) dan jika itu dapat menyimpan bilangan bulat 32-bit yang ditandatangani, n
akan paling banyak 33
atau 34
.
Aturan standar kode-golf berlaku. Kode terpendek menang.
OEIS
Berikut adalah beberapa tautan OEIS yang relevan. Tentu saja, ini berisi spoiler untuk berbagai cara untuk menghasilkan angka dalam jalinan:
- Atas / bawah: A001353 atau A010905 atau A106707 atau A195503
- Tengah: A001835 atau A079935
- Keduanya: A002530
Uji Kasus
Kasing uji ini menggunakan pengindeksan 1 basis. Setiap test case terdiri dari empat baris, dengan yang pertama menjadi input dan tiga sisanya menjadi output.
1
1
---
2
1
1
1
---
3
1
1 3
1
---
5
1 4
1 3 11
1 4
---
10
1 4 15 56 209
1 3 11 41 153
1 4 15 56 209
---
15
1 4 15 56 209 780 2911
1 3 11 41 153 571 2131 7953
1 4 15 56 209 780 2911
---
24
1 4 15 56 209 780 2911 10864 40545 151316 564719 2107560
1 3 11 41 153 571 2131 7953 29681 110771 413403 1542841
1 4 15 56 209 780 2911 10864 40545 151316 564719 2107560