चुनौती किसी दिए गए सकारात्मक पूर्णांक के सभी क्रमबद्ध विभाजनों (रचना (संयोजन)) को सूचीबद्ध करना है n। ये संख्याओं की सूची है 1कि nकिसका योग है n। उदाहरण के लिए, दिए गए इनपुट n = 4, परिणाम होना चाहिए:
4
1, 3
3, 1
2, 2
2, 1, 1
1, 2, 1
1, 1, 2
1, 1, 1, 1, 1
परिणाम किसी भी क्रम में हो सकता है, लेकिन प्रत्येक क्रमबद्ध विभाजन को एक बार शामिल करना होगा। इस साधन के लिए है कि n = 4, [1, 1, 2], [1, 2, 1]और [2, 1, 1]सभी परिणाम का हिस्सा होना चाहिए।
यहाँ मेरा अपना जावास्क्रिप्ट कोड है जो इसे प्राप्त करता है:
function range(n) {
for (var range = [], i = 0; i < n; range.push(++i));
return range;
}
function composition(n) {
return n < 1 ? [[]] : range(n).map(function(i) {
return composition(n - i).map(function(j) {
return [i].concat(j);
});
}).reduce(function(a, b) {
return a.concat(b);
});
}
गोल्फ, ईएस 6 ( 169 167 119 109 105 89 85 बाइट्स ):
n=>n?[].concat(...[...Array(n)].map((x,i)=>i+1).map(b=>m(n-b).map(a=>[b,...a]))):[[]]