Bei der Multiplikation von Monomen auf Milnor-Basis für die Steenrod-Algebra werden im Rahmen des Algorithmus bestimmte "zulässige Matrizen" aufgelistet.
Gegeben sind zwei Listen nichtnegativer Ganzzahlen r 1 , ..., r m und s 1 , ..., s n , eine Matrix nichtnegativer Ganzzahlen X
ist zulässig, wenn
Die Summe der j-ten Spalte ist kleiner oder gleich s j :
Die Summe der mit Zweierpotenzen gewichteten i-ten Zeile ist kleiner oder gleich r i :
Aufgabe
Schreiben Sie ein Programm, das ein Paar Listen r 1 , ..., r m und s 1 , s 1 , ..., s n verwendet und die Anzahl der zulässigen Matrizen für diese Listen berechnet. Ihr Programm kann gegebenenfalls m und n als zusätzliche Argumente verwenden.
Diese Zahlen können in einem beliebigen Format eingegeben werden, zum Beispiel in Listen gruppiert oder in Unary oder irgendetwas anderem codiert.
Die Ausgabe sollte eine positive Ganzzahl sein
- Es gelten Standardlücken.
Wertung
Das ist Codegolf: Kürzeste Lösung in Bytes gewinnt.
Beispiele:
Für [2]
und [1]
gibt es zwei zulässige Matrizen:
Für [4]
und [1,1]
gibt es drei zulässige Matrizen:
Für [2,4]
und [1,1]
gibt es fünf zulässige Matrizen:
Testfälle:
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
quelle
Antworten:
JavaScript (ES7), 163 Byte
Testfälle
NB : Ich habe die zwei zeitaufwändigsten Testfälle aus diesem Snippet entfernt, aber sie sollten auch erfolgreich sein.
Code-Snippet anzeigen
Kommentiert
quelle
Gelee , 26 Bytes
Ein vollständiges Programm mit S , R, das die Zählung ausgibt
Probieren Sie es online!
Wie?
quelle
Wolfram Language (Mathematica) , 101 Bytes
Lassen Sie Mathematica es als ein System von Ungleichungen über die ganzen Zahlen lösen. Ich richte ein symbolisches Array ein
f
und fädle drei Sätze von Ungleichungen ein.Join@@
nur die Liste für abflachenSolve
.Probieren Sie es online!
quelle
Mathematica 139 Bytes
Probieren Sie es online aus
Erklärung: Partitioniert jedes der r i in Potenzen von 2 und führt dann alle Tupel mit einer Zerlegung in Zweierpotenzen für jede ganze Zahl durch, subtrahiert die Spaltensummen von der Liste der s i . Zählen Sie die Anzahl der Tupel, die alle verbleibenden Einträge positiv sind.
quelle