Đại số Steenrod là một đại số quan trọng xuất hiện trong cấu trúc liên kết đại số. Đại số Steenrod được tạo bởi các toán tử gọi là "bình phương Steenrod", một tồn tại cho mỗi số nguyên dương i. Có một cơ sở cho đại số Steenrod bao gồm "các đơn thức đáng ngưỡng mộ" trong các phép toán bình phương. Mục tiêu của chúng tôi là tạo ra cơ sở này.
Một chuỗi các số nguyên dương được gọi là chấp nhận nếu mỗi số nguyên ít nhất gấp đôi số nguyên tiếp theo. Vì vậy, ví dụ [7,2,1]
là có thể chấp nhận vì và . Mặt khác, [3,2]
không phải là có thể chấp nhận vì . (Trong cấu trúc liên kết, chúng tôi sẽ viết cho chuỗi [7,2,1]
).
Mức độ của một chuỗi là tổng số mục của nó. Vì vậy, ví dụ, mức độ [7,2,1]
là . Phần thừa của một chuỗi được chấp nhận là phần tử đầu tiên trừ tổng các phần tử còn lại, do đó [7,2,1]
có phần thừa .
Bài tập
Viết chương trình lấy một cặp số nguyên dương (d,e)
và đưa ra tập hợp tất cả các chuỗi mức độ được chấp nhận d
và vượt quá nhỏ hơn hoặc bằng e
. Đầu ra là một tập hợp nên thứ tự của các chuỗi được chấp nhận không thành vấn đề.
Ví dụ:
Input: 3,1
Output: [[2,1]]
Ở đây chúng tôi đang tìm kiếm các chuỗi được chấp nhận với tổng số 3. Có hai tùy chọn [3]
và [2,1]
. ( [1,1,1]
và [1,2]
có tổng 3 nhưng không được chấp nhận). Phần thừa [3]
là 3 và phần thừa [2,1]
là . Do đó, dãy duy nhất có thừa là [2,1]
.
Input: 6, 6
Output: [[6], [5, 1], [4, 2]] (or any reordering, e.g., [[5,1],[4,2],[6]])
Vì vượt quá luôn luôn nhỏ hơn hoặc bằng độ, chúng tôi không có điều kiện vượt quá. Do đó, chúng tôi chỉ cố gắng để tìm thấy tất cả các chuỗi có thể chấp nhận mức độ 6. Các tùy chọn là [6]
, [5, 1]
, và [4, 2]
. (Những cái này có thừa , và )
Input: 10, 5
Output: [[7,3], [7,2,1], [6,3,1]]
Trình tự được chấp nhận của mức 10 là:
[[10], [9,1], [8,2], [7,3], [7,2,1], [6,3,1]]
Những cái này có thừa , , , , và , vì vậy ba cái cuối cùng đều hoạt động.
Chấm điểm
Đây là mã golf: Giải pháp ngắn nhất trong byte thắng.
Các trường hợp thử nghiệm:
Bất kỳ sự sắp xếp lại nào của đầu ra đều tốt như nhau, vì vậy đối với đầu vào (3, 3)
, đầu ra [[3],[2,1]]
hoặc [[2,1],[3]]
đều được chấp nhận như nhau (tuy nhiên [[1,2],[3]]
không phải vậy).
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]]