शुरुआती लोगों के लिए सर्वश्रेष्ठ कोडिंग चुनौतियाँ: आसान से कठिन कोडिंग अभ्यास
एक ऐसी बात जिसके बारे में कोई आपको आगाह नहीं करता। आप एक महीने तक लगातार ट्यूटोरियल देख सकते हैं, हर वीडियो को देखकर सिर हिला सकते हैं, और फिर एक खाली फ़ाइल खोलकर यह समझ नहीं पाएंगे कि उसमें क्या टाइप करना है। मैं भी इस स्थिति से गुज़र चुका हूँ। कोडिंग सीखने वाले ज़्यादातर लोग ऐसा ही करते हैं।
इसका हल थोड़ा उबाऊ है, लेकिन कारगर है: छोटी-छोटी समस्याओं को खुद हल करें, भले ही शुरुआत में थोड़ी गड़बड़ हो जाए। इसलिए इस गाइड के दो भाग हैं। पहला भाग शुरुआती लोगों के लिए चुनी गई सर्वश्रेष्ठ कोडिंग चुनौतियों का संग्रह है (दस चुनौतियाँ, लगभग आसान से कठिन क्रम में)। दूसरा भाग उन साइटों के बारे में है जहाँ आपको मेरी चुनौतियों को समझने के बाद हजारों और चुनौतियाँ मिलेंगी।
कोई भी प्रोग्रामिंग भाषा चलेगी। मेरे उदाहरणों में पायथन और कुछ हद तक जावास्क्रिप्ट का उपयोग किया गया है, क्योंकि ज्यादातर लोग यहीं से शुरुआत करते हैं। यदि संभव हो तो क्रम से आगे बढ़ें। प्रत्येक समस्या में एक नया विचार छिपा होता है।
कोडिंग चुनौतियाँ वास्तविक कोडिंग कौशल विकसित करने में क्यों सहायक होती हैं?
चुनौती किसे माना जाता है? कोई छोटी सी चीज़ जिसका सही उत्तर स्पष्ट हो। "एक शब्द लो, उसे उल्टा लिखो।" "संख्याओं की एक सूची दी गई है, इनमें से सबसे बड़ी कौन सी है?" आपको कुछ भी इंस्टॉल या फ्रेमवर्क चुनने की ज़रूरत नहीं है। आपको बस दस लाइनें लिखनी होती हैं।
ट्यूटोरियल देखने का मतलब है किसी और की सोच प्रक्रिया का अनुसरण करना। कोडिंग चुनौतियाँ इसे उलट देती हैं, और यह एक उपयोगी तरीके से असुविधाजनक है। आप अनुमान लगाते हैं, चीज़ टूट जाती है, आप त्रुटि को ध्यान से देखते हैं, आप फिर से प्रयास करते हैं। कुछ हफ्तों तक ऐसा करने से कुछ चीजें धीरे-धीरे आसान हो जाती हैं।
- वाक्य संरचना में दक्षता। अब पांचवीं बार फॉर लूप लिखने का तरीका गूगल पर खोजने की जरूरत नहीं।
- समस्या-समाधान कौशल। कीबोर्ड को छूने से पहले ही आप किसी अस्पष्ट कार्य को चरणों में बांटना शुरू कर देते हैं।
- तार्किक सोच। एक खाली सूची, एक ऋणात्मक पूर्णांक, एक अक्षर का शब्द। आप इनकी अपेक्षा करने लगते हैं।
- डीबगिंग। लाल रंग का त्रुटि संदेश अब अपमान जैसा नहीं लगता।
- आत्मविश्वास। हर हल की गई समस्या इस बात का प्रमाण है कि आप स्वयं एक प्रोग्राम लिख सकते हैं।
किसी ने मुझसे एक बार कहा था कि कोडिंग का अपना 80/20 नियम होता है, और शुरुआती समस्याओं के लिए यह काफी हद तक सही है। इनमें से अधिकांश समस्याएं पाँच समान चरणों पर आधारित होती हैं: लूप, इफ/एल्स, स्ट्रिंग को समझना, डिक्शनरी में चीजों को गिनना और ऐरे को समझना। एक बार जब आप इन चरणों को अच्छी तरह से समझ लेते हैं, तो कई "नई" समस्याएं असल में पुरानी ही होती हैं, बस उनका रूप बदला हुआ होता है।

शुरुआती लोगों के लिए हल करने हेतु 10 आसान कोडिंग चुनौतियाँ
इनमें से कोई भी मौलिक नहीं है, और यही तो मुख्य बात है। ये लगभग हर शुरुआती कोर्स में शामिल होते हैं क्योंकि ये कारगर हैं। पहले पाँच में केवल लूप, शर्तें और थोड़ी-बहुत स्ट्रिंग या लिस्ट हैंडलिंग की ज़रूरत होती है, जबकि आखिरी पाँच में आपको कुछ भी टाइप करने से पहले यह सोचना पड़ता है कि कौन सा डेटा स्ट्रक्चर इस्तेमाल करना है। चाहे कुछ भी हो जाए, कम से कम बीस मिनट तक गूगल पर सर्च न करें, भले ही यह व्यर्थ लगे।
चुनौती 1: फ़िज़बज़
कार्य यह है कि 1 से 100 तक की संख्याओं को प्रिंट करना है, लेकिन तीन के प्रत्येक गुणक को "Fizz" के रूप में, पांच के प्रत्येक गुणक को "Buzz" के रूप में और दोनों के गुणक वाली संख्याओं को "FizzBuzz" के रूप में दिखाना है।
मुझे याद है कि मुझे लगा था कि यह इतना आसान लग रहा था कि लगभग अपमानजनक था। हालांकि, यह उतना आसान नहीं है, और यही कारण है कि साक्षात्कारकर्ताओं को यह इतने लंबे समय तक पसंद आया। जिन लोगों ने कोडिंग के बारे में बहुत कुछ पढ़ा है लेकिन बहुत कम लिखा है, वे अक्सर जाँच के क्रम में गलती कर बैठते हैं। पायथन में मेरा संस्करण कुछ इस तरह दिखता है:
पायथन में n के लिए (1 से 101 तक): यदि n % 15 == 0: प्रिंट("फिज़बज़") अन्यथा यदि n % 3 == 0: प्रिंट("फिज़") अन्यथा यदि n % 5 == 0: प्रिंट("बज़") अन्यथा: प्रिंट(n)
जब आपका कोड काम करने लगे, तो 15% वाली लाइन को नीचे तक खींचें, उसे चलाएं और देखें कि कितने फ़िज़बज़ बचते हैं। संक्षेप में: कोई नहीं।
चुनौती 2: एक स्ट्रिंग को उल्टा करें
अंदर "हैलो" जाता है, बाहर "ओलेह" निकलता है।
लगभग हर भाषा में इसका एक शॉर्टकट होता है, जैसे पायथन में s[::-1] या जावास्क्रिप्ट में split("").reverse().join("")। इसे एक बार लिखकर देखना ठीक है। उसके बाद, मैं ईमानदारी से कहूँ तो इसे हटाकर लूप का उपयोग करके एक-एक अक्षर जोड़ने का आसान तरीका अपनाऊँगा। यहीं पर आपको पता चलेगा कि अधिकांश भाषाओं में स्ट्रिंग को उसी स्थान पर नहीं बदला जा सकता, जिससे बाद में कई लोगों को परेशानी होती है अगर वे इसे यहाँ नहीं सीखते हैं।
चुनौती 3: पैलिंड्रोम चेकर
पैलिंड्रोम एक ऐसा शब्द होता है, जैसे "रेसकार" या "नून", जिसे दोनों दिशाओं से पढ़ने पर एक जैसा ही अर्थ निकलता है, इसलिए आपके फ़ंक्शन को इन शब्दों के लिए "हाँ" और "हैलो" के लिए "नहीं" कहना चाहिए।
जब यह काम कर जाए, तो अपनी कोडिंग स्किल्स को और बेहतर बनाने का यह अच्छा मौका है। इसके लिए आप इसमें "A man, a plan, a canal: Panama" टाइप करें, जो तभी पास होगा जब आप टेक्स्ट को लोअरकेस में बदल देंगे और स्पेस व विराम चिह्नों को हटा देंगे। इसके लिए आप पिछले चैलेंज से अपना स्ट्रिंग-रिवर्सिंग कोड इस्तेमाल कर सकते हैं, जो काफी अच्छा लगेगा।
चुनौती 4: फिबोनाची अनुक्रम
आपने शायद यह क्रम पहले भी देखा होगा: 0, 1, 1, 2, 3, 5, 8, 13, जिसमें प्रत्येक संख्या अपने से पहले की दो संख्याओं का योग है। आपका फ़ंक्शन इनमें से पहली n संख्याओं को लौटाना चाहिए।
दो वेरिएबल और एक लूप ही काफी हैं। असली मज़ा तब शुरू होता है जब आप इसे रिकर्सन के साथ दोबारा लिखते हैं, यानी फंक्शन खुद को ही कॉल करे, और फिर n = 35 मांगें। ज़्यादातर लैपटॉप पर आपको थोड़ा इंतज़ार करना पड़ेगा, और यह समझना कि ऐसा क्यों होता है, डायनेमिक प्रोग्रामिंग की एक हल्की-फुल्की शुरुआती झलक है। यह उन छोटे-छोटे पलों में से एक है जब आपको समझ आता है, "अरे, अब समझ आया।"
चुनौती 5: एक ऐरे को घुमाएँ
एक ऐरे और एक संख्या k लें, फिर प्रत्येक तत्व को k स्थान दाईं ओर खिसकाएँ, जिसमें अंत में मौजूद तत्व घूमकर आगे आ जाएँ। [1, 2, 3, 4, 5] और k = 2 के साथ, आपको अंत में [4, 5, 1, 2, 3] प्राप्त होना चाहिए।
अधिकांश शुरुआती प्रयास तब विफल हो जाते हैं जब k सूची से बड़ा होता है। पाँच वस्तुओं को 7 से घुमाना वास्तव में उन्हें 2 से घुमाना ही होता है, जो देखने पर स्पष्ट हो जाता है और तब तक अदृश्य रहता है।
अगर आपने उन पांचों को बिना ज्यादा परेशानी के पूरा कर लिया, तो बहुत बढ़िया। अगले वाले आपसे थोड़ी और मेहनत की मांग करते हैं।
चुनौती 6: एक ऐरे में सबसे बड़ा पूर्णांक ज्ञात कीजिए
सबसे बड़ी संख्या ज्ञात करना आसान है यदि आपको max() फ़ंक्शन का उपयोग करने की अनुमति हो, लेकिन यहाँ इसकी अनुमति नहीं है। इसके बजाय, लूप का उपयोग करके ऐसा करें और फिर सूची में दो बार जाए बिना दूसरी सबसे बड़ी संख्या भी ज्ञात करें। अब आप दो मानों पर नज़र रख रहे हैं और आपको इस बात का ध्यान रखना होगा कि आप पहले किसे अपडेट करते हैं।
डुप्लिकेट और ऋणात्मक संख्याएँ परीक्षण के लिए अच्छी चीजें हैं, क्योंकि कई शुरुआती समाधान चुपचाप इन पर विफल हो जाते हैं।
चुनौती 7: एक वाक्य में स्वरों की गणना करें
स्वरों की गिनती करना वार्म-अप है। असली अभ्यास प्रत्येक स्वर को अलग-अलग गिनना और {"a": 3, "e": 5, "i": 1, "o": 2, "u": 0} जैसा कुछ लौटाना है।
बहुत से शुरुआती लोगों के लिए यह वह क्षण होता है जब डिक्शनरी (या जावास्क्रिप्ट में ऑब्जेक्ट) आखिरकार समझ में आने लगते हैं, और यह महत्वपूर्ण है, क्योंकि यह संभवतः वह डेटा संरचना है जिस पर आप अगले वर्ष सबसे अधिक निर्भर रहेंगे।
चुनौती 8: एनाग्राम चेकर
एनाग्राम में बिल्कुल एक जैसे अक्षर अलग क्रम में इस्तेमाल होते हैं, जैसे "listen" और "silent", इसलिए आप एक ऐसा फ़ंक्शन लिख रहे हैं जो यह बताता है कि दो स्ट्रिंग एनाग्राम के लिए योग्य हैं या नहीं।
मुझे दो तर्कसंगत तरीके पता हैं। आप दोनों स्ट्रिंग को क्रमबद्ध करके परिणामों की तुलना कर सकते हैं, या आप गिन सकते हैं कि प्रत्येक अक्षर कितनी बार आता है और उन संख्याओं की तुलना कर सकते हैं। दोनों तरीकों को लिखकर यह सोचना कि कौन सा तरीका कम मेहनत वाला है, दक्षता के बारे में सोचने का आपका पहला कदम है।
चुनौती 9: दो का योग
[2, 7, 11, 15] जैसी सूची और 9 के लक्ष्य के साथ, आप उन दो संख्याओं की स्थिति लौटाते हैं जिनका योग लक्ष्य के बराबर होता है, जो यहां [0, 1] है।
अधिकांश लोग दो नेस्टेड लूप से शुरुआत करते हैं जो हर जोड़ी को आज़माते हैं, और यह छोटी सूचियों के लिए ठीक है लेकिन जल्दी ही धीमा हो जाता है। तेज़ तरीका यह है कि आप पहले से देखे गए नंबरों को एक डिक्शनरी में रखते हैं ताकि आप उन्हें तुरंत खोज सकें। LeetCode ने इसे पहले स्थान पर रखा है, यह कोई संयोग नहीं है, क्योंकि यह स्पष्ट रूप से दिखाता है कि सही डेटा संरचना कितनी महत्वपूर्ण है।
चुनौती 10: संख्या अनुमान लगाने का खेल
यहां कंप्यूटर 1 से 100 के बीच एक गुप्त संख्या चुनता है, आप अनुमान लगाते रहते हैं, और जब तक आप सही संख्या का अनुमान नहीं लगा लेते, तब तक कंप्यूटर आपको बताता रहता है कि संख्या "बहुत अधिक" है या "बहुत कम", साथ ही यह भी बताता है कि आपको कितने प्रयास लगे।
यह एक साधारण प्रोग्रामिंग पहेली से कहीं अधिक एक छोटा सा ऐप है, जिसमें उपयोगकर्ता इनपुट, एक while लूप और यादृच्छिक संख्याएँ शामिल हैं। कोई न कोई गलती से संख्या के बजाय "केला" टाइप कर देगा, इसलिए आपको गलत इनपुट से भी निपटना होगा। और अन्य ऐप्स के विपरीत, यह एक ऐसा ऐप है जिसे आप अपने किसी मित्र को खेलने के लिए दे सकते हैं।
ऑनलाइन कोडिंग चुनौतियों के लिए सर्वश्रेष्ठ वेबसाइटें
मेरे दस खत्म होने के बाद, आपको ऑटोमैटिक चेकिंग के साथ एक अनलिमिटेड सप्लाई की ज़रूरत होगी। ऑनलाइन कोडिंग चैलेंज के लिए ये सभी साइटें यही सुविधा देती हैं। बस इनका इस्तेमाल करने का तरीका थोड़ा अलग है।
| प्लैटफ़ॉर्म | के लिए सर्वश्रेष्ठ | प्रारूप | लागत |
|---|---|---|---|
| एडबिट | पूर्णतया नौसिखिए | ब्राउज़र में छोटे-छोटे कोडिंग चैलेंज | निःशुल्क स्तर |
| कोडवार्स | गेमिफाइड अभ्यास | सामुदायिक समाधानों के साथ क्रमबद्ध "काटा" | मुक्त |
| व्यायामवाद | अच्छी आदतें सीखना | वैकल्पिक मानव मार्गदर्शकों के साथ भाषा पाठ्यक्रम | मुक्त |
| फ्रीकोडकैंप | संरचित शिक्षा | अभ्यास और प्रमाणन सहित पाठ्यक्रम | मुक्त |
| हैकररैंक | कौशल विकास कार्यक्रम और नौकरी की तैयारी | कठिनाई स्तर वाले विषय-आधारित प्रश्न | शिक्षार्थियों के लिए निःशुल्क |
| लीटकोड | साक्षात्कार की तैयारी | एल्गोरिथम संबंधी समस्याएं जिन्हें आसान/मध्यम/कठिन के रूप में वर्गीकृत किया गया है | निःशुल्क स्तर |
| कोडशेफ | प्रतियोगिताओं की ओर बढ़ते हुए | अभ्यास पथ और नियमित प्रतियोगिताएं | निःशुल्क स्तर |
| प्रोजेक्ट यूलर | गणित प्रेमियों | गणित पर आधारित पहेलियाँ, केवल उत्तर ही जमा करें | मुक्त |
| कोड का आगमन | मौसमी मनोरंजन | हर दिसंबर में कहानी पर आधारित दैनिक पहेलियाँ | मुक्त |
एडबिट
अगर कोई दोस्त मुझसे पूछे कि शुरुआत कहाँ से करनी चाहिए, तो मैं Edabit का नाम लूँगा। सवाल छोटे होते हैं, सब कुछ ब्राउज़र में चलता है, और आपको XP मिलता है। इसमें Python, JavaScript, Java, C++ और कुछ अन्य भाषाएँ सिखाई जाती हैं, और "बहुत आसान" का मतलब सचमुच बहुत आसान है।
कोडवार्स
कोडवार्स में समस्याओं को काटा (मार्शल आर्ट्स में अभ्यास के लिए इस्तेमाल होने वाला शब्द) कहा जाता है। इन्हें 8 क्यू से लेकर 1 क्यू तक रैंक किया गया है, जिसमें 8 क्यू सबसे आसान है और 1 क्यू सबसे कठिन है। असली मज़ा तो सबमिट करने के बाद आता है। आपको बाकी सभी के जवाब देखने को मिलते हैं, और अपनी दस अटपटी पंक्तियों को किसी के दो पंक्तियों वाले शानदार जवाब के बगल में रखने से आपको ज़्यादातर ट्यूटोरियल से कहीं ज़्यादा सीखने को मिलता है।
व्यायामवाद
Exercism एक गैर-लाभकारी संस्था है और यह पूरी तरह से निःशुल्क है। इसमें 80 से अधिक भाषाओं के लिए पाठ्यक्रम उपलब्ध हैं, और स्वयंसेवी मार्गदर्शक आपके अनुरोध पर आपके कोड की जाँच करेंगे। आप ब्राउज़र में ही अभ्यास कर सकते हैं या अभ्यासों को अपने कंप्यूटर पर डाउनलोड कर सकते हैं। मैं आपको अंततः दूसरे विकल्प की ओर प्रेरित करूँगा, क्योंकि इससे आपको Visual Studio Code और टर्मिनल का उपयोग करने में सहजता प्राप्त हो जाएगी।
फ्रीकोडकैंप
यह सिर्फ एक चैलेंज साइट नहीं है। यह एक पूरा पाठ्यक्रम है, लेकिन इसमें सैकड़ों छोटे-छोटे कोडिंग अभ्यास शामिल हैं, इसलिए यह पाठ्यक्रम के अनुरूप है। अगर आपको व्यवस्थित पाठ्यक्रम पसंद है तो यह आपके लिए बढ़िया है: जावास्क्रिप्ट, पायथन, रिस्पॉन्सिव वेब डिज़ाइन और भी बहुत कुछ, और प्रत्येक चरण के अंत में सर्टिफिकेशन प्रोजेक्ट भी उपलब्ध हैं।
हैकररैंक
HackerRank समस्याओं को कौशल श्रेणियों (Python, SQL, डेटा संरचनाएं, एल्गोरिदम) में वर्गीकृत करता है और बताता है कि प्रत्येक समस्या कितनी कठिन है और इसे कितने लोगों ने हल किया है। कई कंपनियां उम्मीदवारों का चयन करने के लिए इसका उपयोग करती हैं। इसके इंटरफ़ेस से अभी परिचित हो जाने से आपको बाद में परेशानी से बचने में मदद मिलेगी।
लीटकोड
यह इंटरव्यू की तैयारी का क्षेत्र है। समस्याओं को आसान, मध्यम और कठिन श्रेणियों में बांटा गया है, और "आसान" श्रेणी में भी यह माना जाता है कि आपको बुनियादी बातें अच्छी तरह से आती हैं। प्रोग्रामिंग से जुड़ी चुनौतियों को एक ऐसे पड़ाव के रूप में लें जहाँ आप आगे बढ़ रहे हैं, न कि जहाँ से आप शुरुआत कर रहे हैं। जब मेरी ये दस समस्याएं आपको सामान्य लगने लगें, तब वापस आइएगा।
कोडशेफ
CodeChef एक प्रतिस्पर्धी प्रोग्रामिंग साइट के रूप में विकसित हुई। आजकल, नियमित प्रतियोगिताओं के साथ-साथ इसमें शुरुआती अभ्यास के लिए भी रास्ते मौजूद हैं, इसलिए यदि समयबद्ध प्रतियोगिताएं आपको मजेदार लगती हैं, तो यह एक अच्छा विकल्प है।
प्रोजेक्ट यूलर
गणित की ऐसी समस्याएं जिन्हें हल करने के लिए कोड की आवश्यकता होती है। साइट पर कोई एडिटर नहीं है। आप प्रोग्राम को अपनी इच्छानुसार कहीं भी लिख सकते हैं और बस अंतिम संख्या टाइप कर सकते हैं। गणित के जानकार इसे बहुत पसंद करते हैं। बाकी लोग इससे दूर ही रहते हैं।
कोड का आगमन
हर दिसंबर में आपको दो भागों वाली एक पहेली मिलती है, जो एक मजेदार कहानी से जुड़ी होती है। हाल ही में यह आयोजन 25 दिनों से घटकर 12 दिन का हो गया है और इसमें वैश्विक लीडरबोर्ड हटा दिया गया है, इसलिए आजकल इसमें ज्यादातर दोस्तों या सहकर्मियों के साथ निजी लीडरबोर्ड ही होते हैं। पुरानी पहेलियाँ पूरे साल उपलब्ध रहती हैं, और इसका संग्रह अभ्यास के लिए एक शानदार स्रोत है।
आपको कोडरबाइट के बारे में भी सुनने को मिलेगा, जो चुनौतियों को साक्षात्कार पाठ्यक्रमों के साथ मिलाता है, और टॉपकोडर के बारे में भी, जो वास्तव में अनुभवी डेवलपर्स के लिए है।
एक चेतावनी। कई पुरानी सूचियाँ अभी भी आपको Google Code Jam और Kick Start की ओर निर्देशित करती हैं। Google ने इन दोनों को 2023 में बंद कर दिया था, और अब केवल समस्या संग्रह ही बचे हैं।

बिना थके कोडिंग चुनौतियों का अभ्यास कैसे करें
दस साइटों को बुकमार्क करने से आप बेहतर नहीं बन जाते। आदत से बनते हैं। मैं मोटे तौर पर यही करता:
- एक प्रोग्रामिंग भाषा चुनें और उसी पर टिके रहें। आमतौर पर लोग पाइथन को चुनते हैं क्योंकि यह लगभग अंग्रेजी की तरह ही सरल है। वेबसाइट बनाने के लिए जावास्क्रिप्ट उपयुक्त है।
- एक असली कोड एडिटर स्थापित करें। पहले सप्ताह के लिए ब्राउज़र एडिटर ठीक हैं। विजुअल स्टूडियो कोड को जल्दी इंस्टॉल करने से आपको फ़ाइलें चलाना, टर्मिनल में त्रुटियाँ पढ़ना और डीबगर का उपयोग करना सीखने में मदद मिलेगी।
- प्रतिदिन एक से तीन समस्याओं को हल करें। थोड़ी-थोड़ी देर के लिए रोज़ाना कोडिंग का अभ्यास करना, रविवार को छह घंटे तक लगातार अभ्यास करने से कहीं बेहतर है। अभ्यास सत्रों के बीच पैटर्न दिमाग में बैठ जाते हैं, और एक छोटे लक्ष्य को नज़रअंदाज़ करना मुश्किल होता है।
- पूरा करने के बाद अन्य समाधान भी पढ़ें। कोडवार्स या एक्सरसाइज़्म पर दो-तीन अन्य उत्तर देखें। आपको बेहतरीन कार्यप्रणालियाँ और कुछ वाकई उपयोगी तरकीबें मिलेंगी जिन्हें आप अपना सकते हैं।
- पुरानी समस्याओं को फिर से देखें। एक सप्ताह बाद, उनमें से किसी एक को याद करके हल करने की कोशिश करें। यदि आप ऐसा नहीं कर पाते हैं, तो इसका मतलब है कि आपने उसे रटने की कोशिश की है, न कि उसे समझा है।
- छोटे प्रोजेक्ट्स से शुरुआत करें। लगभग 30 से 50 समस्याओं को हल करके कुछ बनाएं: एक टू-डू लिस्ट, एक फ्री एपीआई पर आधारित मौसम ऐप, या एक टेक्स्ट एडवेंचर गेम। यहीं से अलग-अलग कौशल एक साथ काम करना शुरू करते हैं।
कोडिंग चैलेंज में अटक जाने पर क्या करें
आप अटक जाएंगे। वरिष्ठ डेवलपर्स भी लंच से पहले अटक जाते हैं। उनके पास अटकने से निकलने का एक तरीका होता है, इसलिए आप भी उनमें से एक अपना लें:
- समस्या को अपने शब्दों में दोबारा बताएं। आश्चर्यजनक रूप से, कई बार जब आप कहते हैं "मैं इसे हल नहीं कर सकता", तो असल में समस्या का कारण यह होता है कि "मैंने इसे गलत समझा था"।
- एक उदाहरण को हाथ से हल करके देखें। कम इनपुट, पेन और कागज लें, और हर कदम को लिख लें। बधाई हो, यही आपका एल्गोरिदम है।
- पहले छद्म कोड लिखें। "प्रत्येक संख्या के लिए, यदि वह मेरी वर्तमान सबसे बड़ी संख्या से बड़ी है, तो उसे रखें।" सरल अंग्रेजी में सुधार करना कोड की तुलना में आसान होता है।
- सब कुछ प्रिंट करें। ज़्यादातर बग किसी वेरिएबल में मौजूद मान से अलग होता है। इसे प्रिंट करके देखें।
- इसे ज़ोर से समझाएँ। अपने कोड को एक-एक लाइन करके किसी व्यक्ति या रबर की बत्तख को दिखाएँ। सॉफ़्टवेयर की गड़बड़ी अक्सर वाक्य के बीच में ही सामने आ जाती है।
- संकेतों का इस्तेमाल चरणबद्ध तरीके से करें। कई प्लेटफॉर्म पूरा जवाब देने से पहले संकेत देते हैं। संकेत को समझें और फिर दोबारा कोशिश करें।
आप जो भी करें, किसी समाधान को कॉपी न करें, उसे देखें और आगे बढ़ें। मैंने कुछ समय तक ऐसा किया, लेकिन उससे मुझे कोई फायदा नहीं हुआ। अगर आप कोई जवाब पढ़ते हैं, तो टैब बंद करें, एक घंटा प्रतीक्षा करें और फिर उसे स्वयं से दोबारा बनाएं।
ब्लॉकचेन के शुरुआती लोगों के लिए क्रिप्टो-थीम वाले कोड चैलेंज
हो सकता है कि क्रिप्टोकरेंसी या ब्लॉकचेन ही वह वजह हो जिसके कारण आपने कोडिंग सीखने का सोचा हो। तो फिर, इसी क्षेत्र से जुड़ी समस्याओं पर अभ्यास करें। बुनियादी बातें एक जैसी हैं (स्ट्रिंग्स, इंटीजर, एपीआई), लेकिन कार्य वास्तविक दुनिया के तकनीकी कार्यों से काफी मिलते-जुलते हैं। इनमें से किसी के लिए भी आपको सर्वसम्मति एल्गोरिदम समझने की आवश्यकता नहीं है।
- लाइव कॉइन की कीमत प्राप्त करें। एक निःशुल्क सार्वजनिक क्रिप्टो मूल्य API से डेटा प्राप्त करें, वर्तमान बिटकॉइन मूल्य प्रिंट करें और हर मिनट अपडेट करें। HTTP अनुरोध और JSON का उपयोग करें।
- वॉलेट पते के प्रारूप को सत्यापित करें। जांचें कि क्या स्ट्रिंग एक संभावित पते की तरह दिखती है: सही लंबाई, सही उपसर्ग, केवल अनुमत वर्ण। स्ट्रिंग का अच्छा अभ्यास और नियमित अभिव्यक्तियों का सरल परिचय।
- एक यूनिट कनवर्टर बनाएं। सतोशी को बीटीसी में बदलें (1 बीटीसी = 100,000,000 सतोशी), वेई को ईटीएच में बदलें (1 ईटीएच = 10¹⁸ वेई)। आपको जल्दी ही पता चल जाएगा कि फ्लोट करेंसी और मुद्रा आपस में मेल क्यों नहीं खाते, और डेवलपर राशियों को पूर्णांक के रूप में क्यों रखते हैं।
- किसी स्ट्रिंग को SHA-256 से हैश करें। किसी वाक्य को अपनी मानक लाइब्रेरी से हैश करें, एक अक्षर बदलें और फिर से हैश करें। परिणाम बिल्कुल अलग होगा। यही विशेषता ब्लॉकचेन को आपस में जोड़े रखने में महत्वपूर्ण भूमिका निभाती है।
- एक साधारण चेकआउट पेज बनाएं। एक प्रोडक्ट पेज जिसमें "क्रिप्टोकरेंसी से भुगतान करें" बटन हो, जो पेमेंट गेटवे एपीआई के माध्यम से एक टेस्ट इनवॉइस तैयार करे।
आखिरी वाला हिस्सा बाकी सब चीजों को आपस में जोड़ता है: एक फॉर्म, एक एपीआई कॉल, त्रुटि प्रबंधन और वास्तविक उपयोगकर्ता को परिणाम दिखाना। प्लिसियो जैसे गेटवे एक एपीआई और दस्तावेज़ प्रकाशित करते हैं जिन्हें आप एक अभ्यास स्टोर में जोड़ सकते हैं, जिससे शुरुआती अभ्यास वास्तविक ई-कॉमर्स एकीकरण जैसा दिखता है।
आज ही एक समस्या से कोडिंग का अभ्यास शुरू करें।
जब मैं सोचता हूँ कि शुरुआत में मुझे किस चीज़ ने आगे बढ़ने में मदद की, तो वो कोई बहुत मुश्किल समस्या नहीं थी। शुरुआती लोगों के लिए सबसे अच्छी कोडिंग चुनौतियाँ वो छोटी-छोटी, नीरस समस्याएँ थीं जिन्हें मैंने आखिरकार पूरा किया, अक्सर देर रात लैपटॉप के पास ठंडी चाय पीते हुए।
तो आज रात ही एडिटर खोलिए और फ़िज़बज़ को चलाना शुरू कीजिए, चाहे कोड कितना भी भद्दा क्यों न हो। जब तक मज़ा आ रहा है, मेरी लिस्ट में दिए गए सभी काम करते रहिए, और जब मज़ा आना बंद हो जाए, तो टेबल में से जो भी साइट सबसे आसान लगे, उस पर चले जाइए। इस आदत को इतना कम रखिए कि इसे छोड़ना थोड़ा अजीब लगे। एक महीने बाद इनमें से कुछ काम आपको बोरिंग लगने लगेंगे, और यही बोरियत असल में कोडिंग स्किल्स हासिल करने का एहसास है।