スティーンロッド代数は、代数トポロジーで現れる重要な代数です。スティーンロッド代数は、「スティーンロッド平方」と呼ばれる演算子によって生成されます。正整数iごとに1つ存在します。二乗演算の「許容可能な単項式」から成るスティーンロッド代数の基礎があります。この基盤を生成することが私たちの目標です。
各整数が次の整数の少なくとも2倍である場合、正の整数のシーケンスは許容可能と呼ばれます。したがって、たとえばおよび[7,2,1]
ため、許容されます。一方、ため、許容できません。(トポロジーでは、シーケンスに対してを記述します)。[3,2]
[7,2,1]
シーケンスの次数は、エントリの合計です。したがって、たとえば、次数[7,2,1]
はです。過剰許容シーケンスの最初の要素マイナス残りの元素の合計であるので、[7,2,1]
過剰有する。
仕事
正の整数のペアを取り、(d,e)
次数d
と超過の許容可能なすべてのシーケンスのセットを出力するプログラムを作成しe
ます。出力はセットなので、許容されるシーケンスの順序は関係ありません。
例:
Input: 3,1
Output: [[2,1]]
ここでは、合計3の許容シーケンスを探しています。2つのオプションが[3]
あり[2,1]
ます。([1,1,1]
および[1,2]
合計は3ですが、許容されません)。の過剰[3]
は3で、過剰[2,1]
はです。従って、過剰の配列のみ[2,1]
。
Input: 6, 6
Output: [[6], [5, 1], [4, 2]] (or any reordering, e.g., [[5,1],[4,2],[6]])
過剰は常に次数以下であるため、過剰条件はありません。このように、私達はちょうどのオプションがある度6のすべての許容シーケンスを見つけるためにしようとしている[6]
、[5, 1]
と[4, 2]
。(これらは、過剰有する、、及び)。
Input: 10, 5
Output: [[7,3], [7,2,1], [6,3,1]]
次数10の許容されるシーケンスは次のとおりです。
[[10], [9,1], [8,2], [7,3], [7,2,1], [6,3,1]]
これらは、過剰持っ、、、、、及びそれぞれので、最後の三つすべての作業。
得点
これはコードゴルフです。バイト単位の最短ソリューションが勝ちです。
テストケース:
出力の並べ替えも同様に適切であるため、入力(3, 3)
、出力、[[3],[2,1]]
または[[2,1],[3]]
同等に許容されます(ただし許容され[[1,2],[3]]
ません)。
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]]