Al multiplicar monomios en la base de Milnor para el álgebra de Steenrod, parte del algoritmo implica enumerar ciertas "matrices permitidas".
Dadas dos listas de números enteros no negativos r 1 , ..., r m y s 1 , ..., s n , una matriz de números enteros no negativos X
es permisible si
La suma de la columna j es menor o igual que s j :
La suma de la i-ésima fila ponderada por potencias de 2 es menor o igual que r i :
Tarea
Escribir un programa que tiene un par de listas r 1 , ..., r m y es 1 , s 1 , ..., s n y calcula el número de matrices permisibles para estas listas. Su programa puede tomar opcionalmente myn como argumentos adicionales si es necesario.
Estos números pueden ingresarse en cualquier formato que le guste, por ejemplo, agrupados en listas o codificados en unario, o cualquier otra cosa.
La salida debe ser un entero positivo
- Se aplican lagunas estándar.
Puntuación
Este es el código de golf: la solución más corta en bytes gana.
Ejemplos:
Para [2]
y [1]
, hay dos matrices permitidas:
Para [4]
y [1,1]
hay tres matrices permitidas:
Para [2,4]
y [1,1]
hay cinco matrices permitidas:
Casos de prueba:
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
fuente
Respuestas:
JavaScript (ES7), 163 bytes
Casos de prueba
NB : eliminé los dos casos de prueba más largos de este fragmento, pero también deberían pasar.
Mostrar fragmento de código
Comentado
fuente
Jalea , 26 bytes
Un programa completo que toma S , R que imprime el recuento
Pruébalo en línea!
¿Cómo?
fuente
Wolfram Language (Mathematica) , 101 bytes
Deje que Mathematica lo resuelva como un sistema de desigualdades sobre los enteros. Configuré una matriz simbólica
f
y entrelacé tres conjuntos de desigualdades.Join@@
Sólo se aplana la lista deSolve
.Pruébalo en línea!
fuente
Mathematica 139 bytes
Pruébalo en línea
Explicación: Divide cada r i en potencias de 2 y luego hace todas las tuplas con una descomposición en potencias de dos para cada número entero, resta los totales de columna de la lista de s i . Cuente el número de tuplas que hacen que todas las entradas restantes sean positivas.
fuente