कोडिंग चुनौतियों को करना आपके 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 और प्रोग्रामिंग के बारे में अधिक सीखकर)।
शुभकामनाएं और मज़े करें! 🙂