Sebuah jumlah surat suara , yang akan kita label B , adalah sejumlah cara mengatur angka dari 1 sampai B (B + 1) / 2 menjadi segitiga, sehingga setiap baris dan kolom dalam urutan meningkat. Empat nomor surat suara pertama adalah:
a(0) = 1
a(1) = 1
a(2) = 1
a(3) = 2
a(3)
adalah 2, yang berarti ada 2 cara mengatur angka-angka dari 1 hingga 3(3+1)/2 = 6
sedemikian segitiga:
1 1
2 3 or 2 4
4 5 6 3 5 6
Lihat entri urutan OEIS untuk lebih jelasnya.
Tantangan Anda, mengingat segitiga surat suara, adalah untuk memverifikasi kebenarannya. Jika memenuhi persyaratan segitiga surat suara (baris dan kolom bertambah), Anda harus menampilkan berapa banyak cara lain (tidak termasuk yang ada di input) yang ada untuk mengatur segitiga dengan benar. Jika segitiga input tidak dibangun dengan benar, Anda seharusnya tidak menghasilkan apa-apa.
Trailing newlines diizinkan.
Memasukkan
Segitiga angka, yang mungkin atau mungkin bukan, merupakan surat suara yang sah. Sebagai contoh:
1
2 3
4 5 6
1
10 5
9 8 2
7 6 4 3
1
3 2
9
2 11
14 3 5
12 8 1 7
15 13 10 4 6
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21
Keluaran
Jika inputnya adalah segitiga surat suara yang valid, sisa jumlah cara untuk mengatur angka yang sama dalam segitiga surat suara yang valid. Jika inputnya bukan segitiga surat suara yang valid, tidak ada. Misalnya, input di atas menghasilkan output ini ( <nothing>
adalah pengganti untuk output kosong aktual):
1 # the same as a(3)-1
<nothing>
<nothing>
<nothing>
33591 # the same as a(6)-1
Mencetak gol
Ini adalah kode-golf : seperti biasa, byte-count terendah akan menang. Tiebreaker diposting paling awal.
sumber
1/4 5/2 3 6
valid?Jawaban:
Jelly , 20 byte
Untuk segitiga pemungutan suara yang valid, waktu lari dan penggunaan memori setidaknya O (n!) , Di mana n adalah jumlah entri dari segitiga. Yang tidak valid dikenali karena terhenti, sehingga tidak mencetak apa pun.
Cobalah online!
Uji coba
Secara lokal, saya dapat memverifikasi bahwa (4) dihitung dengan benar.
Bagaimana itu bekerja
sumber
Brachylog , 44 byte
Cobalah online!
Ini berjalan dalam waktu eksponensial ganda, jadi untuk testcas yang benar, Anda perlu percaya bahwa itu secara teoritis menghasilkan hasil yang benar, untuk segitiga dengan panjang lebih besar dari atau sama dengan
3
.Anda masih dapat menguji testis palsu, yang seharusnya berakhir lebih cepat.
sumber
JavaScript (ES6), 143 byte
Mencari segitiga untuk entri yang tidak valid dan kemudian menggunakan formulasi rekursif rumus di OEIS untuk menghitung hasilnya.
sumber