2015-07-11 7 views
8

मैं _.combinations फ़ंक्शन (अंडरस्कोर मिश्रण) बनाने की कोशिश कर रहा हूं जो तीन पैरामीटर arr, pockets, duplicates लेता है। यहां एक परीक्षण है जिसे मैंने दिखाया कि व्यवहार कैसे होना चाहिए।फ़ंक्शन जो सरणी संयोजनों की सरणी देता है

expect(_.combinations([1, 2], 1, false)).to.be.equal([[1],[2]]) 
expect(_.combinations([1, 2], 1, true)).to.be.equal([[1],[2]]) 
expect(_.combinations([1, 2, 3], 2, false)).to.be.equal([[1,2],[1,3],[2,3]]) 
expect(_.combinations([1, 2, 3], 2, true)).to.be.equal([[1,2],[1,3],[2,3],[2,1],[3,1],[3,2]]) 
expect(_.combinations([1, 2, 3, 4], 3, false)).to.be.equal([[1,2,3],[1,2,4],[1,3,4],[2,1,4],[2,3,4],[3,4,1]]) 
expect(_.combinations([1, 2, 3, 4], 3, true)).to.be.equal([[1,2,3],[1,2,4],[1,3,4],[2,1,4],[2,3,1],[2,3,4],[3,1,2],[3,4,1],[3,4,2],[4,1,2],[4,1,3],[4,2,3]]) 

मैं जाने से पहले सोच रहा था और यह फ़ंक्शन पहले से ही लाइब्रेरी में मौजूद होने पर सोच रहा था। शायद इस विशिष्ट कार्य में पहले से ही एक ऐसा नाम है जिसे मैं परिचित नहीं हूं।

क्या वहां कुछ ऐसा है जो ऐसा करता है?

+2

एक प्रारंभिक बिंदु के रूप में, आप एक [शक्ति सेट] का उपयोग (https://en.wikipedia.org/wiki/Power_set) समारोह (बस इसके लिए खोज कर सकते हैं, बहुत से लोगों को के लिए काम करता है लिखा है यह) संयोजनों को पुनः प्राप्त करने के लिए। वहां से आपके अन्य तर्कों के आधार पर फ़िल्टर करने के लिए अपेक्षाकृत सरल होना चाहिए –

उत्तर

6

This लाइब्रेरी में अच्छा कार्य है। मुझे लगता है कि आपको इसकी बहुत जरूरत है।

var combinatorics=require('/path/to/combinatorics'); 

var a = [1,2,3]; 

var ans1=combinatorics.permutation(a,2); 
console.log(ans1.toArray());// [[1,2],[2,1],[1,3],[3,1],[2,3],[3,2]] like when duplicates is set to true 


var ans2=combinatorics.combination(a,2); 
console.log(ans2.toArray());//[[1,2],[2,1],[1,3],[3,1],[2,3],[3,2]] like when duplicates is set to false 
+0

यह आश्चर्यजनक लग रहा है मुझे यकीन है कि इसमें सब कुछ है जो मैं चाहता हूं :) – ThomasReggi

+0

हाँ ... github repo के पास स्पष्ट स्पष्ट निर्देश और उदाहरण भी हैं ... – Pravin

संबंधित मुद्दे