Ao multiplicar monômios na base Milnor para a álgebra de Steenrod, parte do algoritmo envolve enumerar certas "matrizes permitidas".
Dadas duas listas de números inteiros não negativos r 1 , ..., r m e s 1 , ..., s n , uma matriz de números inteiros não negativos X
é permitido se
A soma da j-ésima coluna é menor ou igual a s j :
A soma da i-ésima linha ponderada pelas potências de 2 é menor ou igual a r i :
Tarefa
Escreva um programa que pegue um par de listas r 1 , ..., r m e s 1 , s 1 , ..., s n e calcule o número de matrizes permitidas para essas listas. Seu programa pode opcionalmente considerar m e n como argumentos adicionais, se necessário.
Esses números podem ser inseridos em qualquer formato que se queira, por exemplo, agrupados em listas ou codificados em unário ou qualquer outra coisa.
A saída deve ser um número inteiro positivo
- Aplicam-se brechas padrão.
Pontuação
Este é o código golf: A solução mais curta em bytes vence.
Exemplos:
Para [2]
e [1]
, existem duas matrizes permitidas:
Para [4]
e [1,1]
existem três matrizes permitidas:
Para [2,4]
e [1,1]
existem cinco matrizes permitidas:
Casos de teste:
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