Die Steenrod-Algebra ist eine wichtige Algebra in der algebraischen Topologie. Die Steenrod-Algebra wird von Operatoren erzeugt, die "Steenrod-Quadrate" genannt werden. Für jede positive ganze Zahl i existiert eine. Es gibt eine Grundlage für die Steenrod-Algebra, die aus "zulässigen Monomen" in den Quadrierungsoperationen besteht. Es ist unser Ziel, diese Basis zu schaffen.
Eine Folge positiver Ganzzahlen heißt zulässig, wenn jede Ganzzahl mindestens doppelt so groß ist wie die nächste. So ist zum Beispiel und[7,2,1]
zulässig . Ist dagegen nicht zulässig, da . (In der Topologie schreiben wir für die Sequenz ).[3,2]
[7,2,1]
Der Grad einer Sequenz ist die Summe ihrer Einträge. So zum Beispiel für den Grad [7,2,1]
ist . Der Überschuss einer zulässigen Folge ist das erste Element abzüglich der Summe der verbleibenden Elemente, hat also den Überschuss .7 - 2 - 1 = 4[7,2,1]
Aufgabe
Schreiben Sie ein Programm, das ein Paar positiver Ganzzahlen verwendet (d,e)
und die Menge aller zulässigen Folgen von Grad d
und Exzess kleiner oder gleich ausgibt e
. Die Ausgabe ist eine Menge, sodass die Reihenfolge der zulässigen Sequenzen keine Rolle spielt.
Beispiele:
Input: 3,1
Output: [[2,1]]
Hier suchen wir nach zulässigen Folgen mit insgesamt 3. Es gibt zwei Möglichkeiten, [3]
und [2,1]
. ( [1,1,1]
und [1,2]
haben die Summe 3, sind aber nicht zulässig). Der Überschuss von [3]
ist 3 und der Überschuss von [2,1]
ist . Somit ist die einzige Folge mit überschüssigem ist .[2,1]
Input: 6, 6
Output: [[6], [5, 1], [4, 2]] (or any reordering, e.g., [[5,1],[4,2],[6]])
Da der Überschuss immer kleiner oder gleich dem Grad ist, haben wir keine Überschussbedingung. So versuchen wir einfach alle zulässigen Sequenzen von Grad 6. Die Optionen zu finden sind [6]
, [5, 1]
und [4, 2]
. (Diese haben einen Überschuss von , und )
Input: 10, 5
Output: [[7,3], [7,2,1], [6,3,1]]
Die zulässigen Folgen des Grades 10 sind:
[[10], [9,1], [8,2], [7,3], [7,2,1], [6,3,1]]
Diese haben überschüssige , , , , 7 - 2 - 1 = 4 und 6 - 3 - 1 = 2 sind, so dass die letzten drei funktionieren.
Wertung
Das ist Codegolf: Kürzeste Lösung in Bytes gewinnt.
Testfälle:
Jede Neuordnung der Ausgabe ist gleichermaßen gut, also für Eingaben (3, 3)
, Ausgaben [[3],[2,1]]
oder [[2,1],[3]]
sind gleichermaßen akzeptabel (ist es aber [[1,2],[3]]
nicht).
Input: 1, 1
Output: [[1]]
Input: 3, 3
Output: [[2,1], [3]]
Input: 3, 1
Output: [[2,1]]
Input: 6, 6
Output: [[6], [5, 1], [4, 2]]
Input: 6, 4
Output: [[5,1], [4,2]]
Input: 6, 1
Output: []
Input: 7, 7
Output: [[7], [6,1], [4,2,1], [5,2]]
Input: 7,1
Output: [[4,2,1]]
Input: 10, 10
Output: [[10], [9,1], [7,2,1], [6,3,1], [8,2], [7,3]]
Input: 10, 5
Output: [[7,3], [7,2,1], [6,3,1]]
Input: 26, 4
Output: [15, 7, 3, 1]
Input: 26, 6
Output: [[16, 7, 2, 1], [16, 6, 3, 1], [15, 7, 3, 1], [16, 8, 2], [16, 7, 3]]