चुनौती किसी दिए गए सकारात्मक पूर्णांक के सभी क्रमबद्ध विभाजनों (रचना (संयोजन)) को सूचीबद्ध करना है 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]))):[[]]