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

Ruby इंटरव्यू कोडिंग चुनौतियों में महारत: सिद्ध रणनीतियाँ और समाधान

कोडिंग चुनौतियों को करना आपके Ruby और समस्या-समाधान कौशल को बेहतर बनाने का एक उत्कृष्ट तरीका है। और कोडिंग इंटरव्यू की तैयारी के लिए!

क्यों?

क्योंकि एक चुनौती के दौरान आप अपना सारा ध्यान 1 विशिष्ट समस्या को हल करने पर केंद्रित करते हैं।

आपको किसी और चीज की चिंता नहीं करनी पड़ती।

इस तरह का अभ्यास आपकी सोच कौशल का विस्तार करेगा, आपको दिलचस्प भाषा सुविधाओं का पता लगाने की अनुमति देगा और आपको एक बेहतर Ruby डेवलपर बनाएगा।

इनमें से कुछ चुनौतियों के लिए कंप्यूटर एल्गोरिदम, डेटा संरचना या अवधारणा के बारे में विशेष ज्ञान की आवश्यकता होती है, जैसे कोई गणित ट्रिक।

अगर आप इनमें से अधिकांश को हल नहीं कर सकते तो कोई बात नहीं।

चिंता न करें!

अब:

मुझे लगता है कि कुछ समाधानों को पढ़ना प्रक्रिया को समझने के लिए मददगार हो सकता है।

शुरुआत के साथ...

चुनौती 1: डुप्लिकेट ढूंढना

पहली चुनौती यह है कि दिए गए एक सरणी जिसमें Integer मान हैं, आपको सभी डुप्लिकेट नंबर ढूंढने हैं।

यहां एक उदाहरण है:

numbers = [1,2,2,3,4,5] find_duplicates(numbers) # [2] 

आइए एक प्रश्न से शुरू करें...

"मैं कैसे जान सकता हूँ कि कोई विशेष नंबर डुप्लिकेट है?"

मैं एक ही चरण में समाधान प्राप्त करने की कोशिश नहीं कर रहा हूं।

इस चरण में, मैं केवल एक प्रश्न पूछना और उसका उत्तर देना चाहता हूं जो मुझे समाधान के करीब ले जाए।

कुछ विचार लिखें:

  • मैं गिन सकता हूँ कि सरणी में प्रत्येक नंबर की कितनी संख्या है, फिर काउंट = 2 का मतलब डुप्लिकेट।
  • मैं हर तत्व पर जा सकता हूँ और "देखे गए" तत्वों की एक सूची रख सकता हूँ, अगर मैं किसी तत्व को दो बार देखता हूँ तो हमें एक डुप्लिकेट मिला।
  • मैं नंबरों को एक स्ट्रिंग में जोड़ सकता हूँ और रेगुलर एक्सप्रेशन के साथ डुप्लिकेट नंबरों का मिलान करने की कोशिश कर सकता हूँ।

इस बिंदु पर "कौन सा सर्वश्रेष्ठ है" मायने नहीं रखता।

उसके बारे में चिंता न करें!

अभी, महत्वपूर्ण है एक काम करने वाला समाधान प्राप्त करना। जो आपको अच्छा लगे उसे चुनें और उसके लिए कोड लिखें।

उदाहरण:

seen = [] numbers.each_with_object([]) do |n, dups| dups << n if seen.include?(n) seen << n end # [2] 

यह सही समाधान लगता है।

अब:

आप अन्य इनपुट्स (विभिन्न सरणियों) को आज़माना चाहेंगे ताकि यह सुनिश्चित हो सके कि यह वास्तव में काम करता है, यूनिट टेस्ट लिखना इसके लिए बहुत अच्छा है।

यदि समाधान 100% काम कर रहा है तो आप अन्य समाधानों को आजमा सकते हैं और जो समझने में आसान हो उसका उपयोग कर सकते हैं।

पूर्णता की तलाश न करें।

सीखने, समझने और हर दिन प्रगति करने की तलाश करें!

चुनौती 2: वैध शब्द

दिए गए वर्णों की एक सरणी और एक शब्द, पता लगाएं कि क्या शब्द इन वर्णों से बनाया जा सकता है।

उदाहरण:

word = "orange" characters = %w(e n g a r o) valid_word?(characters, word) # true 

फिर से हम अपनी सोच प्रक्रिया को निर्देशित करने के लिए एक प्रश्न से शुरू करते हैं।

"हम कैसे सुनिश्चित कर सकते हैं कि शब्द इन वर्णों से बनाया जा सकता है?"

विचार लेकर आएं।

विकर्षणों को दूर करें और इसके बारे में सोचें।

इसके लिए कागज पर करना मददगार हो सकता है।

मेरे विचार:

  • word में प्रत्येक वर्ण के लिए, उस वर्ण को characters सरणी से हटा दें, यदि आप सभी वर्णों को नहीं हटा सकते तो false वापस करें
  • word और characters में सभी वर्णों को गिनें, फिर काउंट्स घटाएं

यहां एक संभावित समाधान है:

word .each_char .all? { |ch| characters.delete_at(characters.index(ch)) rescue nil } 

आपका समाधान क्या है?

इसे कमेंट सेक्शन में साझा करें।

सारांश

आपने कोडिंग चुनौतियों के बारे में सीखा और उनका उपयोग अपने Ruby कौशल को बेहतर बनाने के लिए कैसे करें!

याद रखें:

किसी विशिष्ट चुनौती को हल न कर पाना पूरी तरह से ठीक है। इसे एक वीडियो गेम बॉस की तरह समझें, अगर बॉस लेवल 100 का है और आप लेवल 70 के हैं तो इस बॉस को हराना वास्तव में कठिन होगा।

उस मामले में आप क्या करते हैं?

आप आसान चुनौतियों के साथ लेवल अप करते हैं और अनुभव प्राप्त करते हैं (निचले लेवल के बॉस), और आप बेहतर गियर प्राप्त करते हैं (Ruby और प्रोग्रामिंग के बारे में अधिक सीखकर)।

शुभकामनाएं और मज़े करें! 🙂


  1. रूबी मैट्रिक्स को समझना: परिभाषा, अनुप्रयोग और उन्हें कैसे बनाएं रूबी मैट्रिक्स को समझना: परिभाषा, अनुप्रयोग और उन्हें कैसे बनाएं

    मैट्रिक्स एक 2D (2-डायमेंशनल) ऐरे है जिसका उपयोग स्प्रेडशीट जैसे डेटा को स्टोर और काम करने के लिए किया जा सकता है। इनका उपयोग किया जा सकता है: टेबल गेम में बोर्ड को दर्शाना (शतरंज, चेकर्स, आदि) आंकड़े और डेटा विश्लेषण प्लॉट्स और ग्राफ़ उत्पन्न करना क्योंकि यह एक शक्तिशाली डेटा संरचना है इसलिए इसका

  1. रूबी स्ट्रक्ट्स और OpenStruct में महारत: कुशल वैल्यू ऑब्जेक्ट्स रूबी स्ट्रक्ट्स और OpenStruct में महारत: कुशल वैल्यू ऑब्जेक्ट्स

    रूबी में स्ट्रक्ट क्या है? एक स्ट्रक्ट एक बिल्ट-इन रूबी क्लास है, इसका उपयोग वैल्यू ऑब्जेक्ट्स उत्पन्न करने वाली नई क्लासेस बनाने के लिए किया जाता है। एक वैल्यू ऑब्जेक्ट संबंधित विशेषताओं को एक साथ संग्रहीत करने के लिए उपयोग किया जाता है। यहां एक उदाहरण है: दो निर्देशांकों (x और y) के साथ एक Point।

  1. 4 प्रमुख रिमोट एक्सेस जोखिम और सिद्ध समाधान 4 प्रमुख रिमोट एक्सेस जोखिम और सिद्ध समाधान

    वर्क फ्रॉम होम नया चलन है जो सेट हो गया है, और कई लोग ऑफिस सिस्टम या नेटवर्क पर रिमोट एक्सेस लेना पसंद करते हैं और दूर से काम करते हैं। हालांकि यह बहुत आरामदायक लग सकता है और बड़ी संख्या में अवसर खोलता है, लेकिन कुछ रिमोट एक्सेस जोखिम हैं जिनके बारे में हम सभी को पता होना चाहिए। यह लेख आपको अपने ऑफि