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
fonte
Respostas:
JavaScript (ES7), 163 bytes
Casos de teste
NB : removi os dois casos de teste mais demorados desse trecho, mas eles devem passar também.
Mostrar snippet de código
Comentado
fonte
Geléia , 26 bytes
Um programa completo com S , R que imprime a contagem
Experimente online!
Quão?
fonte
Wolfram Language (Mathematica) , 101 bytes
Deixe o Mathematica resolvê-lo como um sistema de desigualdades sobre os números inteiros. Montei uma matriz simbólica
f
e enfiei sobre três conjuntos de desigualdades.Join@@
apenas nivela a listaSolve
.Experimente online!
fonte
Mathematica 139 bytes
Experimente online
Explicação: As divisórias cada um dos r i em potências de 2 e, em seguida, faz com que todos os tuplos com uma decomposição em potências de dois para cada número inteiro, subtrair os totais de coluna a partir da lista de a s i . Conte o número de tuplas que fazem todas as entradas restantes serem positivas.
fonte