कोडिंग चुनौतियों को करना आपके रूबी और समस्या-समाधान कौशल को बेहतर बनाने का एक शानदार तरीका है। और साक्षात्कार कोडिंग की तैयारी करने के लिए !
क्यों?
क्योंकि एक चुनौती के दौरान आप अपना सारा ध्यान 1 विशिष्ट समस्या को हल करने में लगाते हैं।
आपको किसी और चीज़ के बारे में चिंता करने की ज़रूरत नहीं है।
इस तरह के अभ्यास से आपके सोचने के कौशल का विस्तार होगा, जिससे आप दिलचस्प भाषा सुविधाओं का पता लगा सकते हैं और एक बेहतर रूबी डेवलपर बनें।
इनमें से कुछ चुनौतियों के लिए कंप्यूटर एल्गोरिथम, डेटा संरचना या अवधारणा के बारे में विशेष ज्ञान की आवश्यकता होती है, जैसे कुछ गणित की चाल।
यदि आप इनमें से अधिकांश का समाधान नहीं कर सकते तो कोई बात नहीं।
चिंता मत करो!
अब :
मुझे लगता है कि इन चुनौतियों को हल करने की प्रक्रिया को समझने के लिए कुछ समाधानों को पढ़ना मददगार हो सकता है।
से शुरू हो रहा है…
चुनौती 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
return लौटाएं - सभी वर्णों को
word
में गिनें &characters
, फिर गिनती घटाएं
यहां एक संभावित समाधान दिया गया है :
word .each_char .all? { |ch| characters.delete_at(characters.index(ch)) rescue nil }
आपका समाधान क्या है?
इसे टिप्पणी अनुभाग में साझा करें।
सारांश
आपने कोडिंग चुनौतियों के बारे में सीखा है और अपने रूबी कौशल को बेहतर बनाने के लिए उनका उपयोग कैसे करें!
याद रखें :
किसी विशिष्ट चुनौती को हल करने में सक्षम नहीं होना बिल्कुल ठीक है। इसे एक वीडियो गेम बॉस की तरह समझें, अगर बॉस 100 के स्तर पर है और आप 70 के स्तर के हैं तो इस बॉस को हरा पाना वाकई मुश्किल होगा।
उस मामले में आप क्या करते हैं?
आप स्तर ऊपर जाएं और आसान चुनौतियों का अनुभव प्राप्त करें (निचले स्तर के बॉस), और आप बेहतर गियर प्राप्त करें (रूबी और प्रोग्रामिंग के बारे में अधिक सीखना)।
गुड लक मजे करो!