Steenrod cebiri, cebirsel topolojide ortaya çıkan önemli bir cebirdir. Steenrod cebiri "Steenrod kareleri" adı verilen operatörler tarafından üretilir, her pozitif tamsayı i için bir tane vardır. Kareleme işlemlerinde "kabul edilebilir monomiyallerden" oluşan Steenrod cebiri için bir temel vardır. Hedefimiz bu temeli oluşturmaktır.
Her tamsayı bir sonrakinin en az iki katı ise , pozitif tamsayı dizisine kabul edilebilir denir . Örneğin ve[7,2,1] olduğu için kabul edilebilir . Öte yandan, olduğu için kabul edilemez . (Topolojide sekans için yazarız ).[3,2][7,2,1]
Derecesi bir dizinin 's girişlerinin toplamıdır. Bu yüzden, örneğin, derecesi [7,2,1]olan . Fazla kabul edilebilir bir sekansın bu nedenle, birinci eleman eksi geri kalan elemanlarının toplamı olan aşırı sahip .[7,2,1]
Görev
Bir çift pozitif tamsayı alan (d,e)ve kabul edilebilir tüm derece dve daha fazla dizi dizisine eşit veya daha küçük bir çıktı veren bir program yazın e. Çıktı bir kümedir, bu nedenle kabul edilebilir dizilerin sırası önemli değildir.
Örnekler:
Input: 3,1
Output: [[2,1]]
Burada toplam 3 ile kabul edilebilir diziler arıyoruz . İki seçenek vardır [3]ve [2,1]. ( [1,1,1]ve [1,2]toplam 3'e sahip ancak kabul edilemez). Fazlalığı [3]3 ve aşırı [2,1]olan . Böylece, fazla tek dizi olup .[2,1]
Input: 6, 6
Output: [[6], [5, 1], [4, 2]] (or any reordering, e.g., [[5,1],[4,2],[6]])
Fazlalık her zaman dereceden daha az veya ona eşit olduğundan fazla koşulumuz yoktur. Böylece, sadece seçeneklerdir derece 6. tüm kabul edilebilir dizilerini bulmaya çalışıyorsanız [6], [5, 1]ve [4, 2]. (Bunlar fazla , ve .)
Input: 10, 5
Output: [[7,3], [7,2,1], [6,3,1]]
Derece 10'un kabul edilebilir dizileri şunlardır:
[[10], [9,1], [8,2], [7,3], [7,2,1], [6,3,1]]
Bunlar sırasıyla , , , , ve , bu nedenle son üçü çalışır.
puanlama
Bu kod golf: Bayt en kısa çözüm kazanır.
Test senaryoları:
Çıktının yeniden sıralanması eşit derecede iyidir, bu nedenle girdi (3, 3), çıktı [[3],[2,1]]veya [[2,1],[3]]eşit derecede kabul edilebilirdir (ancak [[1,2],[3]]değildir).
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]]