quintopia telah memposting di sini sebuah tantangan untuk menghitung koefisien multinomial (beberapa teks di sini disalin dari sana). Ada algoritma yang menyenangkan untuk menghitung koefisien multinomial mod 2.
Mengingat daftar nomor, k 1 , k 2 , ..., k m , output residu dari koefisien multinomial:
berkurang mod 2. Berikut algoritma hal ini efisien: untuk setiap k i , menghitung ekspansi biner k i , yaitu, menemukan sebuah ij sehingga setiap a ij adalah 1 atau 0 dan
Jika ada j sehingga a rj = a sj = 1 untuk r ≠ s, maka koefisien multinomial mod 2 yang terkait adalah 0, jika tidak, koefisien multinomial mod 2 adalah 1.
Tugas
Menulis sebuah program atau fungsi yang mengambil m nomor, k 1 , k 2 , ..., k m , dan output atau hasil koefisien multinomial yang sesuai. Program Anda secara opsional dapat menganggap m sebagai argumen tambahan jika perlu.
Angka-angka ini dapat dimasukkan dalam format apa pun yang disukai, misalnya dikelompokkan ke dalam daftar atau disandikan di unary, atau apa pun, selama perhitungan aktual dari koefisien multinomial dilakukan oleh kode Anda, dan bukan proses pengkodean.
Output dapat berupa nilai kebenaran jika koefisien multinomialnya ganjil dan nilai falsey apa pun jika koefisien multinomial genap.
Built-in yang dirancang untuk menghitung koefisien multinomial tidak diperbolehkan.
Celah standar berlaku.
Mencetak gol
Ini adalah kode golf: Solusi terpendek dalam byte yang menang.
Contoh:
Untuk menemukan koefisien multinomial 7, 16, dan 1000, kami biner mengembangkan masing-masing:
Karena tidak ada kolom yang memiliki lebih dari satu 1, koefisien multinomialnya aneh, dan karenanya kita harus menampilkan sesuatu yang benar.
Untuk menemukan koefisien multinomial dari 7, 16, dan 76, kami biner mengembangkan masing-masing:
Karena keduanya 76 dan 7 memiliki 4 dalam ekspansi biner mereka, koefisien multinomial genap dan jadi kami menghasilkan nilai falsey.
Kasus uji:
Input: [2, 0, 1]
Output: Truthy
Input: [5,4,3,2,1]
Output: Falsey
Input: [1,2,4,8,16]
Output: Truthy
Input: [7,16,76]
Output: Falsey
Input: [7,16,1000]
Output: Truthy
Input: [545, 1044, 266, 2240]
Output: Truthy
Input: [1282, 2068, 137, 584]
Output: Falsey
Input: [274728976, 546308480, 67272744, 135004166, 16790592, 33636865]
Output: Truthy
Input: [134285315, 33849872, 553780288, 544928, 4202764, 345243648]
Output: Falsey
==
kesetaraan bisa menyelamatkan satu byte jika kebenaran dan falsey dibiarkan terbalik.