2011-03-06 10 views
64

मुझे एहसास है कि एक बेहतर प्रोग्रामर बनने के लिए, आपको कार्यक्रम की आवश्यकता है! तो जाहिर है कि अधिक अभ्यास, बेहतर आप बन जाते हैं।प्रोग्रामिंग कौशल में सुधार करने के लिए बहुत छोटे कार्यक्रम?

मेरी समस्या यह है। मैं वर्तमान में विश्वविद्यालय में हूं, और मुझे लगता है कि मेरा कोर्स लोड थोड़ा मुश्किल है, और मेरे पास बहुत खाली समय नहीं है। मुझे नहीं लगता कि मैं वास्तव में एक बड़ी परियोजना पर जा सकता हूं, विशेष रूप से मुझे नहीं लगता कि मुझे इसे देखने के लिए प्रेरित करना होगा, मेरे लिए इसे केवल उस काम के पक्ष में रखना आसान होगा जो देय है स्कूल।

लेकिन मैं अभी भी अभ्यास करना चाहता हूं। इसलिए मैं ऐसे संसाधनों की तलाश में हूं जिनके पास प्रोग्रामिंग चुनौतियां हैं जो काफी कम समय में पूरी की जा सकती हैं। आदर्श रूप से कुछ ऐसा जो मैं काम के 10 घंटों के भीतर किया जा सकता था (इसलिए प्रत्येक दिन केवल एक घंटे का काम), यदि छोटा नहीं है।

मैंने Google Code Jam के बारे में सुना है, लेकिन मुझे यकीन नहीं है कि यह कार्यक्रमों की लंबाई, और न ही कौशल स्तर है।

क्या किसी के पास सुझाव हैं? यहां तक ​​कि शायद विभिन्न कार्यों के लिए ट्यूटोरियल का एक सारांश उपयोगी हो सकता है। उदाहरण के लिए, फ़ाइल IO पर एक ट्यूटोरियल सार्थक होगा (अगर मुझे पहले से ही यह पता नहीं था), भले ही यह काफी छोटा विषय हो।

+0

हैलो वर्ल्ड हमेशा एक छोटी परियोजना है। एक और गंभीर नोट पर, शतरंज या चेकर्स बनाने का प्रयास करें। यह समग्र रूप से एक बहुत ही सरल परियोजना है लेकिन प्रत्येक टुकड़े में जाने वाला तर्क आपको थोड़ा सा सीखने देता है ... ओओपी के बारे में भी सीखने के लिए बहुत कुछ (उदा।polymorphism, एक रूक एक टुकड़ा का विस्तार है, जिसमें एक पंक्ति और स्तंभ है)। बहुत सच्चे अहसास के लिए –

+2

+1। :-) वैसे, Google Code Jam एक बार एक वर्ष की घटना है, लेकिन प्रतियोगिता [टॉपकोडर] (http://www.topcoder.com/tc) द्वारा सह-संगठित है, जिसमें समान प्रतियोगिताएं होती हैं _ सप्ताह सप्ताह_ । यह बहुत मजेदार है, लेकिन आपको एल्गोरिदम के बारे में थोड़ा सा पता होना चाहिए। –

+0

@Aasmund, मैं अपने पिछले प्रतियोगिताओं का उपयोग करने के बारे में और सोच रहा था। – Blackbinary

उत्तर

3

http://codegolf.stackexchange.com आपकी पसंद के हिसाब से कुछ प्रोग्रामिंग चुनौतियां हो सकती हैं। उस साइट पर बहुत सारे जवाब गोल्फ किए गए हैं (वे प्रोग्राम को कम से कम वर्णों में लागू करते हैं) लेकिन निश्चित रूप से सीखने के लिए कुछ दिलचस्प उदाहरण हैं।

+2

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

+0

@user अज्ञात है, लेकिन वास्तविक चुनौतियां दिलचस्प हैं। धन्यवाद mootinator। – Blackbinary

+1

उत्तर की शैली से कुछ सीखने के बारे में कुछ भी किसने कहा? साइट अभी भी सभ्य लघु प्रोग्रामिंग पहेली से भरा हुआ है। * कुछ * उत्तर * हैं * यहां तक ​​कि अच्छी तरह से लिखा है या विस्तृत स्पष्टीकरण हैं। आपका स्वागत है @ ब्लैकबिनरी। –

20

Project Euler में कुछ गणित/संख्या संबंधित समस्याएं हैं जो बहुत ही रोचक हैं और बहुत ही चुनौतीपूर्ण से लेकर हैं। आप अपनी पसंद की भाषा चुन सकते हैं और केवल समाधान (एक बड़ा पूर्णांक संख्या) जमा कर सकते हैं। सही समाधान जमा करने के बाद, आपके पास एक फोरम/टिप्पणी पृष्ठ तक पहुंच है जहां अन्य ने अपनी टिप्पणियां और समाधान पोस्ट किए हैं।

33

आपको code katas में देखना चाहिए, वे वही करते हैं जो आप बोल रहे हैं। लघु अभ्यास जो आपके कोडिंग/पतली क्षमताओं को सही करने के लिए डिज़ाइन किए गए हैं।

अन्य संदर्भ: हालांकि, जैसा कि आप उल्लेख किया है, समस्याओं के सबसे वहाँ नहीं शुरुआती के लिए कर रहे हैं

  1. http://kata.coderdojo.com/wiki/Overview_of_Learning_Resources
+0

मुझे वास्तव में कोडिंग कोड पसंद है, क्योंकि यह चुनौतियों को 'बेल्ट' से अलग करता है जो वास्तव में बहुत अच्छा है, फिर यह देखना मुश्किल है कि यह बहुत मुश्किल है या नहीं। – Blackbinary

+0

संदर्भ लिंक टूटा हुआ है। – Kasisnu

+0

@ कासिस्नु हाँ जाहिर है कि साइट नीचे चला गया। मुझे एक बहुत अच्छा विकल्प मिला। – Nix

5

कोड जाम, एक अच्छा प्रोग्रामिंग प्रतियोगिता है।

पिछले टॉपकोडर एल्गोरिदम प्रतियोगिताओं से समस्याओं का एक अच्छा चयन है। (वे लगभग 10 वर्षों के लिए महीने में ~ 2 बार आयोजित किए जाते हैं, इसलिए बहुत कुछ हैं।)
दूसरी विभाजन में very simple (लेकिन अभी भी दिलचस्प) की कठिनाई बहुत कठिन है। इसके अतिरिक्त, समाधान और लाइव वातावरण के साथ editorials हैं जहां आप अपना कोड सबमिट और परीक्षण कर सकते हैं। आप अन्य लोगों द्वारा सबमिशन से भी सीख सकते हैं।

the problem listing देखें।
टॉपकोडर का एक अन्य लाभ नियमित ऑनलाइन प्रतियोगिताओं है। मुझे लगता है कि रीयलटाइम में अन्य लोगों के खिलाफ प्रतिस्पर्धा प्रेरणा के लिए एक बड़ा बढ़ावा है।

SPOJ, और Timus जैसे कई और समस्याएं हैं, हालांकि वे शायद ही कभी समाधान या संकेत भी प्रदान करते हैं।

+0

युक्तियों के लिए धन्यवाद, यह अभिलेखागार जैसा है जिसे मैं ढूंढ रहा हूं। विशेष रूप से हालांकि, मैं इसे विभिन्न कठिनाइयों में हल करना चाहता हूं। – Blackbinary

+0

@ ब्लैकबिनरी टॉपकोडर कठिनाई और विषयों सहित कई फ़िल्टर प्रदान करता है (पोस्ट में लिंक देखें)। अन्य अभिलेखागार में, आप अक्सर सबमिट किए गए लोगों की संख्या से समस्या कठिनाई का न्याय कर सकते हैं (उदा।, [समय पर] (http://acm.timus.ru/problemset.aspx?space=1&page=1))। –

2

यह भाषा पर निर्भर करता है, लेकिन पिछले http://rubyquiz.com और http://pythonchallenge.com मेरे लिए बहुत अच्छा था, आप भी एक ओपन सोर्स पहल में शामिल हो सकते हैं क्योंकि आम तौर पर आपको बेहतर कोड समीक्षा की संभावनाएं देने में मदद मिलती है।

1

चूंकि आप विश्वविद्यालय में हैं और अपने कोडिंग कौशल में सुधार करना चाहते हैं, हार्ड कॉपी कॉपी Cracking the Coding Interview आपके लिए उपयुक्त हो सकता है। तकनीक में कुछ बेहतरीन कंपनियों के साथ साक्षात्कार के बारे में यह सामान्य सामान्य प्रोग्रामिंग प्रश्न और टिड्बिट्स है। न केवल महान प्रश्न हैं, बल्कि सभ्य समस्या टूटने भी हैं।

[प्रकटीकरण:। मैं किताब के मालिक हैं, लेकिन अन्यथा यह करने के लिए कोई संबंध नहीं है]

+0

हम्म, यह पुस्तक बहुत रोचक लगती है, धन्यवाद! – Blackbinary

9

मैं SPOJ और Project Euler चाहते त्वरित प्रोग्रामिंग चुनौतियों और अभ्यास लेने के लिए।

17

अनुभव से मैं एक ऐसा कार्य ढूंढने की अनुशंसा करता हूं जो आप दोहराते हैं और इसे एक प्रोग्राम में बदल देते हैं। प्रोग्रामिंग के साथ अभ्यास करने के लिए मैं पहिया को फिर से आविष्कार करने की सलाह देता हूं। लोगों को आपको कुछ न करने के लिए कहें क्योंकि यह पहले से मौजूद है। यदि आप नहीं जानते कि यह कैसे काम करता है, तो इसे स्वयं लिखने का प्रयास करें।

मुझे नहीं पता कि आप किस प्रोग्रामिंग स्तर पर हैं, लेकिन बल्ले से कुछ भी पागल करने की कोशिश न करें, यह केवल एक demotivator (जैसे PS3 के लिए एक गेम लिखने की कोशिश कर रहा है) है।

यदि आप पहले से ही आईओ के साथ अपने रास्ते पर नेविगेट कर सकते हैं, तो आपको वास्तव में संग्रहों का प्रभावी ढंग से उपयोग करने का तरीका सीखना चाहिए। मुझे लगता है कि मैंने कभी भी सबसे अच्छा अभ्यास असाइनमेंट किया है जो जावा ट्रीएप क्लास को फिर से लिख रहा था। यह एक बड़ी चुनौती थी और मैंने इसे करके बहुत कुछ सीखा।


यहाँ अभ्यास कार्य के लिए कुछ सुझाव दिए गए हैं:

यदि आप चाहें तो उस में जानकारी भी पर्याप्त मात्रा में है कि एक पाठ फ़ाइल ले लो, कुछ भी हड़पने, तुम यहाँ से कुछ प्राप्त कर सकते हैं: http://www.gutenberg.org/ और एक कार्यक्रम निम्न करेगा कि सुनिश्चित करें: फ़ाइल

  • में

    1. पढ़ें शब्दों का एक संग्रह है और उनके घटनाओं बनाएं
    2. एनाग्राम का संग्रह बनाएं
    3. शब्दों और पदों का संग्रह बनाएं जिसमें वे होते हैं (पंक्ति #, शब्द स्थिति)
    4. फ़ाइल में शब्दों के आंकड़ों का विकास - अर्थ - प्रत्येक शब्द को एक व्यक्ति के रूप में समझना - जो शब्द इससे पहले और उसके बाद होते हैं।
    5. स्वयं की फ़ाइलों को फ़ाइल से सफेद स्थान को हटाएँ
    6. ऊपर डेटा के सभी लिखें

    करने के लिए मेरी पसंदीदा चीज़ों में से एक वेब डेटा के साथ गड़बड़ है, एक करने के लिए जाना मतदान वेबसाइट, एक पृष्ठ पर एक सारणी के रूप में चुनाव में डेटा होगा खोजने के लिए और निम्न कार्य करें: डेटा के माध्यम से

    1. डेटा डाउनलोड
    2. पार्स और बारी एक CSV में तालिका डेटा त्रुटि के बिना Excel में फ़ाइल
    3. ओपन यह

    या बस इसे से किसी भी साइट और डेटा निकालने के लिए देखो, बस सुनिश्चित करें कि साइट रोबोट अनुकूल http://www.robotstxt.org/ है, तो आप किसी भी एक नहीं दिखाना चाहते हैं यह महसूस करने के लिए साइट पर हमला किया जा रहा है। अधिकांश समय यह सामान्य रूप से एक समस्या नहीं है क्योंकि यदि आप साइट की उपयोग की शर्तों को पढ़ते हैं तो यह स्पष्ट रूप से बताता है कि आप जो कुछ भी देख रहे हैं उसकी एक प्रति डाउनलोड करने की अनुमति है, जब तक आप इसे बेचने का इरादा नहीं रखते हैं। बेशक यह हर साइट के लिए बदल जाता है।


    वेबसाइट पर जाएं और प्रोग्राम के सभी पृष्ठों को प्रोग्रामेटिक रूप से बंद करें।


    यहाँ एक मजेदार एक है, सुसान कार्यक्रम (मुझे याद नहीं क्यों यह सुसान का नाम है) जो मैं शुरू में एक सी कार्यक्रम और एक यूनिक्स वातावरण में दो बॉर्न शैल स्क्रिप्ट का उपयोग कर लिखा था। इस कार्यक्रम में विचार 4 बाल प्रक्रियाओं को फोर्क करना है और उन्हें प्रत्येक कार्य को ऐसा करना है:

    बच्चा 1: फ़ाइल में पढ़ता है, प्रत्येक शब्द का एक शब्दकोश और फ़ाइल में इसकी स्थिति बनाता है, यह एक आउटपुट किया जाता है फ़ाइल।

    बच्चा 2: चाइल्ड 1 का आउटपुट लेता है और दस्तावेज़ को पुनर्निर्मित करता है, यह फ़ाइल में आउटपुट किया जाता है।

    बाल 3: बाल 2 के उत्पादन ले जाता है और क्या बच्चे 1 फिर से किया था करता

    बाल 4: बाल 3 के उत्पादन ले जाता है और क्या बच्चे 2 फिर

    लक्ष्य यहाँ की एक सटीक प्रतिकृति है किया करता है एक बार चाइल्ड 4 इसे आउटपुट करने के बाद मूल फ़ाइल। यह चुनौतीपूर्ण और कुछ हद तक व्यर्थ है, लेकिन इस अभ्यास का बिंदु अभ्यास प्राप्त करना है।

    अपने मामले में, यह महसूस न करें कि आपको इसके लिए विभिन्न धागे का उपयोग करने की आवश्यकता है, आप केवल दो प्रोग्रामों के साथ एक ही प्रोग्राम का उपयोग कर सकते हैं और उन्हें क्रम में कॉल कर सकते हैं।


    फिर, यकीन नहीं अगर आप इस स्तर पर अभी तक कर रहे हैं, लेकिन किसी भी "के लिए" को बदलने के लिए प्रयास करें या "foreach" पाश आप प्रत्यावर्तन के साथ अपने कार्यक्रम में है, बस अभ्यास के रूप में। रिकर्सन बट में दर्द है, लेकिन यह जानना और समझना मूल्यवान है।

    ये कुछ सुझाव हैं जो मुझे लगता है कि वास्तव में आपको अपने कौशल को तेज करने में मदद मिलेगी।

    आनंद लें

  • 0

    आप एसीएम समस्याओं को हल करने का प्रयास कर सकते हैं।वहां हजारों समस्याएं हैं और आप कठिनाई का स्तर पा सकते हैं ताकि आप चुन सकें कि कौन सी समस्याएं पहले करेंगी। इसके लिए ऑफिसियल साइट है:

    http://uva.onlinejudge.org/। आप वहां और जान सकते हैं।

    संबंध Arefin

    2

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

    एक नियमित लिखें किसी भी छोरों का उपयोग कर फिर से बिना नंबर 1 से 100 और वापस 1 करने के लिए मुद्रित करने के लिए:

    यहाँ एक बहुत सरल एक है कि मैं दूसरे दिन मस्ती के लिए किया है।

    Glassdoor.com में उन लोगों द्वारा सबमिट किया गया बहुत अच्छा साक्षात्कार प्रश्न है जो वास्तव में उन्हें एक साक्षात्कार में मिला।

    0

    यह थोड़ा स्पष्ट प्रतीत हो सकता है, लेकिन मैंने हाल ही में स्टैक ओवरफ़्लो पर रेगेक्स प्रश्नों के उत्तर देने से अपने नियमित अभिव्यक्ति कौशल में वास्तविक वृद्धि देखी है। शिक्षण आपको आसानी से समझाने योग्य टुकड़ों में समस्याओं को तोड़ने के लिए मजबूर करता है, और उन अवसरों पर आपके शोध को भी मार्गदर्शन करेगा जहां आप सबसे ज्यादा जानते हैं, लेकिन समाधान के बिल्कुल नहीं।

    मैं सुझाव देता हूं कि आप पहले से ही कुछ हद तक कुशल हैं, क्योंकि इस प्रकार की चीज शुरुआती ट्यूटोरियल के रूप में इतनी अच्छी नहीं है। उस विषय के साथ टैग किए गए प्रश्नों के लिए SO खोजें और उत्तर जानने का प्रयास करें। उन्हें अपने सिर में न केवल कोड करें; आगे बढ़ें और उन्हें लिखें, उनका परीक्षण करें, और उन्हें समझाएं। यदि आप सुनिश्चित नहीं हैं कि आपका उत्तर सही है, तो इसे पोस्ट किए बिना इसे लिखें।

    1

    यदि आप प्रोग्रामिंग पसंद करते हैं और अपने प्रोग्रामर कौशल में सुधार करना चाहते हैं, तो आपको cocode.co आज़माएं। यह एक सामाजिक युवा साइट है, जो स्टैक ओवरफ्लो के समान है लेकिन प्रश्न पूछने और जवाब देने के बजाय प्रोग्रामिंग चुनौतियों को पोस्ट करने और हल करने के आधार पर। बहुत आसान चुनौतियों से बहुत कठिन लोगों तक।

    http://cocode.co

    3

    निम्न वेबसाइट पर किसी भी आईटी पाठ्यक्रम पर दाखिला का प्रयास करें:

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

    प्रत्येक पाठ्यक्रम के अंत में, आपको पूरा होने का प्रमाण पत्र भी प्राप्त होगा। बिल्कुल सटीक?

    संबंधित मुद्दे