Ketika mengalikan monomial dalam basis Milnor untuk aljabar Steenrod, bagian dari algoritma melibatkan enumerasi "matriks yang diijinkan" tertentu.
Diberikan dua daftar bilangan bulat non-negatif r 1 , ..., r m dan s 1 , ..., s n , sebuah matriks bilangan bulat non-negatif X
diizinkan jika
Jumlah kolom j kurang dari atau sama dengan s j :
Jumlah baris ke-i yang diberi bobot oleh kekuatan 2 kurang dari atau sama dengan r i :
Tugas
Tulis sebuah program yang mengambil sepasang daftar r 1 , ..., r m dan s 1 , s 1 , ..., s n dan menghitung jumlah matriks yang diijinkan untuk daftar ini. Program Anda secara opsional dapat menggunakan m dan n 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.
Output harus berupa bilangan bulat positif
- Celah standar berlaku.
Mencetak gol
Ini adalah kode golf: Solusi terpendek dalam byte yang menang.
Contoh:
Untuk [2]
dan [1]
, ada dua matriks yang diijinkan:
Untuk [4]
dan [1,1]
ada tiga matriks yang diijinkan:
Untuk [2,4]
dan [1,1]
ada lima matriks yang diijinkan:
Kasus uji:
Input: [1], [2]
Output: 1
Input: [2], [1]
Output: 2
Input: [4], [1,1]
Output: 3
Input: [2,4], [1,1]
Output: 5
Input: [3,5,7], [1,2]
Output: 14
Input: [7, 10], [1, 1, 1]
Output: 15
Input: [3, 6, 16, 33], [0, 1, 1, 1, 1]
Output: 38
Input: [7, 8], [3, 3, 1]
Output: 44
Input: [2, 6, 15, 18], [1, 1, 1, 1, 1]
Output: 90
Input: [2, 6, 7, 16], [1, 3, 2]
Output: 128
Input: [2, 7, 16], [3, 3, 1, 1]
Output: 175
sumber
Jawaban:
JavaScript (ES7), 163 byte
Uji kasus
NB : Saya telah menghapus dua test case yang paling memakan waktu dari snippet ini, tetapi mereka harus lulus juga.
Tampilkan cuplikan kode
Berkomentar
sumber
Jelly , 26 byte
Program penuh mengambil S , R yang mencetak hitungan
Cobalah online!
Bagaimana?
sumber
Bahasa Wolfram (Mathematica) , 101 byte
Biarkan Mathematica menyelesaikannya sebagai sistem ketidaksetaraan atas bilangan bulat. Saya mengatur array simbolis di
f
dan utas tiga set ketidaksetaraan.Join@@
hanya meratakan daftar untukSolve
.Cobalah online!
sumber
Mathematica 139 byte
Cobalah online
Penjelasan: Partisi masing-masing r i menjadi kekuatan 2 dan kemudian buat semua tupel dengan satu dekomposisi menjadi kekuatan dua untuk setiap bilangan bulat, kurangi total kolom dari daftar s i . Hitung jumlah tupel yang membuat semua entri yang tersisa positif.
sumber