प्रतिस्पर्धात्मक प्रोग्रामिंग को आमतौर पर उपयुक्त डेटा संरचना का उपयोग करके कुशल एल्गोरिदम का उपयोग करने के लिए कोडिंग के रूप में संदर्भित किया जाता है। वे प्रोग्रामर्स के कौशल का कई स्तरों पर परीक्षण करते हैं।
एल्गोरिदम और डेटा संरचना की मदद से, आपको आपके द्वारा प्रस्तुत एक काल्पनिक प्रोग्रामिंग समस्या को हल करना होगा, विभिन्न तर्क लागू करके। आपको न केवल समस्या हल करनी है बल्कि एक बहुत ही कुशल समाधान के साथ आना है, जिसमें अच्छा समय और स्थान जटिलता हो।
प्रतिस्पर्धात्मक प्रोग्रामिंग के लिए कहे जाने वाले समस्या कथन का एक उदाहरण हो सकता है -
आपको लंबाई 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 आपके कोडिंग में उपयोग करने के लिए डेटा संरचना का एक बड़ा सेट प्रदान करता है जिसमें डिक्शनरी, सेट, टपल, सूची और कई अन्य शामिल हैं जो मानक पैकेज के रूप में आते हैं।

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