Lors de la multiplication des monômes dans la base de Milnor pour l'algèbre de Steenrod, une partie de l'algorithme implique l'énumération de certaines "matrices autorisées".
Étant donné deux listes d'entiers non négatifs r 1 , ..., r m et s 1 , ..., s n , une matrice d'entiers non négatifs X
est autorisé si
La somme de la jième colonne est inférieure ou égale à s j :
La somme de la ième ligne pondérée par des puissances de 2 est inférieure ou égale à r i :
Tâche
Écrivez un programme qui prend une paire de listes r 1 , ..., r m et s 1 , s 1 , ..., s n et calcule le nombre de matrices autorisées pour ces listes. Votre programme peut éventuellement prendre m et n comme arguments supplémentaires si nécessaire.
Ces nombres peuvent être saisis dans n'importe quel format souhaité, par exemple regroupés dans des listes ou codés en unaire, ou autre chose.
La sortie doit être un entier positif
- Des échappatoires standard s'appliquent.
Notation
Voici le code golf: la solution la plus courte en octets gagne.
Exemples:
Pour [2]
et [1]
, il existe deux matrices autorisées:
Pour [4]
et [1,1]
il existe trois matrices autorisées:
Pour [2,4]
et [1,1]
il existe cinq matrices autorisées:
Cas de test:
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
la source
Réponses:
JavaScript (ES7), 163 octets
Cas de test
NB : J'ai supprimé les deux cas de test les plus longs de cet extrait, mais ils devraient également réussir.
Afficher l'extrait de code
Commenté
la source
Gelée , 26 octets
Un programme complet prenant S , R qui imprime le compte
Essayez-le en ligne!
Comment?
la source
Wolfram Language (Mathematica) , 101 octets
Laissez Mathematica le résoudre comme un système d'inégalités sur les entiers. J'ai mis en place un tableau symbolique
f
et fil sur trois ensembles d'inégalités.Join@@
aplatit simplement la liste pourSolve
.Essayez-le en ligne!
la source
Mathematica 139 octets
Essayez-le en ligne
Explication: partitionne chacun des r i en puissances de 2, puis transforme tous les tuples avec une décomposition en puissances de deux pour chaque entier, soustrayez les totaux des colonnes de la liste des s i . Comptez le nombre de tuples qui rendent toutes les entrées restantes positives.
la source