मैं _.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]])
मैं जाने से पहले सोच रहा था और यह फ़ंक्शन पहले से ही लाइब्रेरी में मौजूद होने पर सोच रहा था। शायद इस विशिष्ट कार्य में पहले से ही एक ऐसा नाम है जिसे मैं परिचित नहीं हूं।
क्या वहां कुछ ऐसा है जो ऐसा करता है?
एक प्रारंभिक बिंदु के रूप में, आप एक [शक्ति सेट] का उपयोग (https://en.wikipedia.org/wiki/Power_set) समारोह (बस इसके लिए खोज कर सकते हैं, बहुत से लोगों को के लिए काम करता है लिखा है यह) संयोजनों को पुनः प्राप्त करने के लिए। वहां से आपके अन्य तर्कों के आधार पर फ़िल्टर करने के लिए अपेक्षाकृत सरल होना चाहिए –