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

प्रतिस्पर्धात्मक कोडिंग के लिए Python सबसे उपयुक्त क्यों है


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

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

प्रतिस्पर्धात्मक प्रोग्रामिंग के लिए कहे जाने वाले समस्या कथन का एक उदाहरण हो सकता है -

आपको लंबाई n की एक स्ट्रिंग s दी गई है जिसमें केवल लोअरकेस लैटिन अक्षर हैं।

एक स्ट्रिंग का उपस्ट्रिंग उस स्ट्रिंग का एक सन्निकट उपअनुक्रम है। तो, स्ट्रिंग "forces" स्ट्रिंग "codeforces" का एक उपस्ट्रिंग है, लेकिन स्ट्रिंग "coder" नहीं है।

आपका कार्य इस स्ट्रिंग से ठीक एक उपस्ट्रिंग को हटाने के तरीकों की संख्या की गणना करना है ताकि सभी शेष वर्ण समान हों (अलग-अलग वर्णों की संख्या या तो शून्य या एक हो)।

यह गारंटी है कि s में कम से कम दो अलग-अलग वर्ण हैं।

ध्यान दें कि आप पूरी स्ट्रिंग को हटा सकते हैं और यह सही है। साथ ही, ध्यान दें कि आपको कम से कम एक वर्ण हटाना चाहिए।

उपरोक्त समस्या को हल करने के लिए, आप अपनी पसंद की किसी भी प्रोग्रामिंग भाषा का उपयोग कर सकते हैं।

अब सवाल उठता है, प्रतिस्पर्धात्मक कोडिंग के लिए Python क्यों?

गति

Python चुनने का एक कारण यह है कि यह आपके द्वारा कोड लिखने में लगने वाले समय को मौलिक रूप से कम कर देता है, बल्कि आप उस तर्क के बारे में सोचने में समय बिताते हैं जो प्रश्न के लिए आवश्यक है।

क्योंकि इस तरह की प्रतियोगिता में समय महत्वपूर्ण है, प्रोग्रामर जितनी तेजी से समाधान लिखने में सक्षम होता है, उतना ही बेहतर है। तो, ऊपर गति से मेरा मतलब उस गति से है जिससे एक प्रोग्रामर समाधान लिखता है, न कि Python भाषा की गति।

लाइब्रेरी की विशाल विविधता

Python विशाल विविधता वाले मानक लाइब्रेरी के साथ आता है और इन लाइब्रेरी का प्रतिस्पर्धात्मक प्रोग्रामिंग में बहुत अच्छी तरह से उपयोग किया जा सकता है।

प्रतिस्पर्धात्मक कोडिंग के लिए Python चुनने के अन्य सामान्य कारणों की सूची नीचे दी गई है -

i. सामान्य अंतर्निहित फ़ंक्शन:

  • Python count, min, max, sorted आदि जैसे सामान्य फ़ंक्शन का एक बड़ा सेट प्रदान करता है। ये अंतर्निहित फ़ंक्शन बहुत काम आते हैं, कोडर्स को आसानी से आगे बढ़ने और इन तुच्छ प्रक्रियाओं के लिए कोड लिखने को छोड़ने की अनुमति देते हैं जो अक्सर बहुत उपयोगी होते हैं। साथ ही, Python फ़ंक्शन अपने फ़ंक्शन के लिए सर्वोत्तम एल्गोरिदम का उपयोग करते हैं। उदाहरण के लिए, sorted() फ़ंक्शन Timsort एल्गोरिदम का उपयोग करता है, जो सबसे खराब स्थिति के प्रदर्शन O(nlogn) पर स्थिर सॉर्टिंग प्रदान करता है। यह सबसे अच्छे सॉर्टिंग एल्गोरिदम में से एक है जो O(1) या निरंतर रन टाइम का सर्वोत्तम स्थिति रन टाइम प्रदान करता है।

कोड

#abs()
print(abs(-7))
#max()
print(max(2, 13, 4, 20))
#memoryview()
print(memoryview(bytes(9)))
#object()
o = object(); print(type(o))
#pow()
print(pow(2,6))
#reversed
a = reversed([3, 13, 2, 1]); print(a)
#sorted()
print(sorted([9, 2, 4, 13, 7]))
#sum()
print(sum([2, 9, 12, 19]))
# type()
print(type([]))
print(type({}))
#zip()
print(set(zip([1,2],[3,4,5])))

ii. सूची समझ

  • Python सबसे अच्छी सूची समझ में से एक प्रदान करता है। यह हमें कोड लिखने की अनुमति देता है जो आम तौर पर 5-20 लाइनों में 1 लाइन में होता है। सूची समझ के साथ, आप नेस्टेड लूप और शर्तें रख सकते हैं।

कोड

# सूची समझ का उपयोग करके एक स्ट्रिंग के माध्यम से पुनरावृति
l_string = [letter for letter in 'Tutorialspoint']
print(l_string)

# सूची समझ बनाम लैम्ब्डा फ़ंक्शन
l_lambda = list(map(lambda x: x, 'Tutorialspoint'))
print(l_lambda)

आउटपुट

['T', 'u', 't', 'o', 'r', 'i', 'a', 'l', 's', 'p', 'o', 'i', 'n', 't']
['T', 'u', 't', 'o', 'r', 'i', 'a', 'l', 's', 'p', 'o', 'i', 'n', 't']

iii. मानक लाइब्रेरी (बड़ा लाभ)

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

Python मानक लाइब्रेरी

डेटा प्रकार स्ट्रिंग्स नेटवर्किंग थ्रेड्स
ऑपरेटिंग सिस्टम कंप्रेशन GUI आर्गुमेंट्स
CGI जटिल संख्याएं FTP क्रिप्टोग्राफी
टेस्टिंग मल्टीमीडिया डेटाबेस CSV फ़ाइलें
कैलेंडर ईमेल XML सीरियलाइज़ेशन

iv. डेटा संरचनाओं की विशाल विविधता

  • Python आपके कोडिंग में उपयोग करने के लिए डेटा संरचना का एक बड़ा सेट प्रदान करता है जिसमें डिक्शनरी, सेट, टपल, सूची और कई अन्य शामिल हैं जो मानक पैकेज के रूप में आते हैं।

प्रतिस्पर्धात्मक कोडिंग के लिए Python सबसे उपयुक्त क्यों है

v. उपयोग में आसानी

Python सिंटैक्स मानव-पठनीय है और Python में कोडिंग करना बहुत आसान और तेज़ है। यह मूल रूप से छद्म कोड की तरह पढ़ता है।

>>> print("hello world!")
hello world!
>>> sum([3, 4, 3,5])
15
>>> max(3, 4, 5, 13,2)
13
>>> min(3, 4, 5, 13, 2)
2

  1. C++ में STL का उपयोग करके BFS (प्रतिस्पर्धी प्रोग्रामिंग के लिए) C++ में STL का उपयोग करके BFS (प्रतिस्पर्धी प्रोग्रामिंग के लिए)

    ब्रेडथ फर्स्ट सर्च (BFS) क्या है? ब्रेडथ फर्स्ट सर्च (BFS) ट्रैवर्सल एक एल्गोरिदम है जिसका उपयोग दिए गए ग्राफ के सभी नोड्स को विजिट करने के लिए किया जाता है। इस ट्रैवर्सल एल्गोरिदम में एक नोड चुना जाता है और फिर सभी आसन्न नोड्स को एक-एक करके विजिट किया जाता है। सभी आसन्न वर्टेक्स पूरे होने के बाद,

  1. पायथन में सेवा केंद्र के लिए सर्वोत्तम स्थिति ज्ञात करने का प्रोग्राम पायथन में सेवा केंद्र के लिए सर्वोत्तम स्थिति ज्ञात करने का प्रोग्राम

    मान लीजिए हमारे पास स्थितियों की एक सूची है, जिसमें कुछ घरों के स्थित निर्देशांक बिंदु हैं। यदि आप (xc, yc) पर एक सेवा केंद्र बनाना चाहते हैं ताकि किसी भी दिए गए बिंदु से (xc, yc) तक यूक्लिडियन दूरी का योग न्यूनतम हो। इसलिए हमें न्यूनतम दूरी का योग ज्ञात करना है। इसलिए, यदि इनपुट है positions = [(1

  1. पायथन में पैटर्न कैसे प्रिंट करें पायथन में पैटर्न कैसे प्रिंट करें

    पायथन में पैटर्न्स को नेस्टेड फॉर लूप्स का उपयोग करके प्रिंट किया जा सकता है। बाहरी लूप का उपयोग पंक्तियों की संख्या के माध्यम से इटरेट करने के लिए किया जाता है जबकि आंतरिक लूप का उपयोग स्तंभों की संख्या को संभालने के लिए किया जाता है। प्रिंट स्टेटमेंट को आवश्यकतानुसार विभिन्न पैटर्न बनाने के लिए मॉ