Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Javascript

जावास्क्रिप्ट में रूबी के प्रत्येक विपक्ष के बराबर

<घंटा/>

each_cons() - रूबी

each_cons() एन्यूमेबल की विधि रूबी में एक अंतर्निहित विधि है जो हर बार प्रत्येक तत्व से शुरू होने वाले लगातार एन तत्वों के लिए पुनरावृत्त होती है। यदि कोई ब्लॉक नहीं दिया गया है, तो यह एन्यूमरेटर लौटाता है।

JS प्रत्येक_कॉन्स के बराबर ()

मान लीजिए कि हमारे पास संख्या शाब्दिकों की एक सरणी है (इस मामले में रूबी की गणना के बराबर जेएस), प्रत्येक_कॉन्स फ़ंक्शन को एक ऐरे फ़ंक्शन माना जाता है जो सरणी के प्रत्येक तत्व के लिए निष्पादित होता है और संख्या एन (एन <=सरणी की लंबाई) को स्वीकार करता है केवल तर्क। और सभी तत्वों से एक-एक करके शुरू होने वाले प्रत्येक उप-सरणी के साथ आकार N के उप-सरणी के साथ एक सरणी देता है।

इसका एक उदाहरण चीजों को थोड़ा स्पष्ट कर देगा।

मान लीजिए हमारे पास इस तरह की एक सरणी है -

const arr =[1, 2, 3, 4, 5];console.log(arr.eachCons(2));

प्रत्येक कॉन्स के लिए यह कॉल क्या करता है, यह इस तरह के 2 तत्वों के साथ सरणियों की एक सरणी बनाता है -

[[1, 2], [2, 3], [3, 4], [4, 5]]

ध्यान दें कि जब तक हम ऐसा नहीं कर सकते, तब तक मूल सरणी के प्रत्येक तत्व के लिए उप-सरणी बनाए जाते हैं।

यदि N का मान 2 के बजाय 3 होता, तो परिणाम ऐसा दिखाई देता -

[[1, 2, 3], [2, 3, 4], [3, 4, 5]]

फिर से, सरणी के प्रत्येक तत्व के लिए उप-सरणी बनाई जाती है जब तक कि हमारे पास सरणी में पर्याप्त तत्व न हों।

दृष्टिकोण

हम इस समस्या को हल करने के लिए स्लाइडिंग विंडो एल्गोरिदम का उपयोग करेंगे।

यद्यपि हम इसे दो पंक्तियों में हल करने के लिए आधुनिक ES6 फ़ंक्शन का उपयोग कर सकते हैं, लेकिन बाद वाला दृष्टिकोण बाद वाले की तुलना में बहुत कुशल है।

सबसे पहले, हम थोड़ी देर के लूप का उपयोग करेंगे जो हमारी प्रारंभिक विंडो को 0 से N इंडेक्स तक बनाता है। फिर। हम एक लूप के लिए उपयोग करेंगे जो चलता है जबकि हमारी विंडो का अंत अभी भी मूल सरणी की लंबाई से कम है।

यह लूप हमारी विंडो की स्थिरता की जांच करता है (यानी, हमारी विंडो की लंबाई N के बराबर है)। यदि विंडो स्थिर है, तो हम विंडो को सम्मिलित करते हैं (उस सबएरे को परिणाम सरणी में), इसे इकाई दूरी से दाईं ओर स्लाइड करें और इसे संक्षिप्त करें (यानी, प्रारंभ =अंत)। यदि विंडो अस्थिर है, तो हम इसमें तत्व जोड़ते रहते हैं।

इस दृष्टिकोण के लिए कोड है -

उदाहरण

const arr =[1, 2, 3, 4, 5];const प्रत्येकCons =function(num){ let res =[], temp =[]; चलो शुरू करें =0, अंत =0; जबकि (अंत <संख्या) {temp.push (यह [अंत ++]); }; के लिए (; अंत <=यह लंबाई;) {अगर (अस्थायी लंबाई ===संख्या) {res.push (अस्थायी); प्रारंभ ++; अंत =प्रारंभ; अस्थायी =[]; } अस्थायी [अंत-प्रारंभ] =यह [अंत]; अंत++; } वापसी रेस;}; Array.prototype.eachCons =eachCons;console.log([1, 2, 3, 4, 5].eachCons(1));console.log([1, 2, 3, 4, 5 ].eachCons(2));console.log([1, 2, 3, 4, 5].eachCons(3));console.log([1, 2, 3, 4, 5].eachCons(4) );

आउटपुट

कंसोल में आउटपुट होगा -

<पूर्व>[ [ 1 ], [ 2 ], [ 3 ], [4 ], [ 5 ] [ [ 1, 2 ], [ 2, 3 ], [ 3, 4 ], [ 4, 5 ] ] [ 1, 2, 3 ], [ 2, 3, 4], [3, 4, 5] ][[ 1, 2, 3, 4], [ 2, 3, 4, 5 ] ]
  1. कैसे जावास्क्रिप्ट में प्रत्येक वस्तु के लिए एक अद्वितीय आईडी बनाने के लिए?

    निम्नलिखित प्रत्येक वस्तु के लिए एक अद्वितीय आईडी बनाने के लिए कोड है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>

  1. जावास्क्रिप्ट में प्रत्येक नोड के लिए अगला बड़ा नोड ढूँढना

    समस्या हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो लिंक की गई सूची के शीर्ष को पहले और एकमात्र तर्क के रूप में लेता है। node_i.val, और j सबसे छोटा संभव विकल्प है। यदि ऐसा j मौजूद नहीं है, तो अगला बड़ा मान 0 है। हमारे फ़ंक्शन को एक सरणी तैयार करनी चाहिए और वापस करनी चाहिए जिसमें संबंधित तत्व सूची मे

  1. रूबी का जादुई संख्यात्मक मॉड्यूल

    रूबी मैजिक के एक और एपिसोड का समय आ गया है! इस बार, हम रूबी की सबसे जादुई विशेषताओं में से एक को देखेंगे, जो रूबी की गणना योग्य कक्षाओं जैसे Array के साथ काम करते समय आपके द्वारा उपयोग की जाने वाली अधिकांश विधियों को प्रदान करती है। , Hash और Range . इस प्रक्रिया में, हम सीखेंगे कि आप गणना योग्य वस्