প্রতিযোগীতামূলক প্রোগ্রামিংকে সাধারণত কোডিং বলা হয় উপযুক্ত ডেটা স্ট্রাকচার ব্যবহার করে দক্ষ অ্যালগরিদম ব্যবহার করার জন্য। তারা অনেক স্তরে প্রোগ্রামারদের দক্ষতা পরীক্ষা করে।
অ্যালগরিদম এবং ডেটা স্ট্রাকচারের সাহায্যে, আপনাকে বিভিন্ন যুক্তি প্রয়োগ করে আপনার সামনে উত্থাপিত একটি অনুমানমূলক প্রোগ্রামিং সমস্যা সমাধান করতে হবে। আপনাকে শুধুমাত্র সমস্যাটি সমাধান করতে হবে না কিন্তু আপনাকে একটি খুব দক্ষ সমাধান নিয়ে আসতে হবে, যা একটি ভাল সময় এবং স্থান জটিলতা রয়েছে৷
প্রতিযোগীতামূলক প্রোগ্রামিং বলা হয় তার জন্য একটি সমস্যা বিবৃতির উদাহরণ −
হতে পারেআপনাকে দৈর্ঘ্যের একটি স্ট্রিং দেওয়া হয়েছে n যাতে শুধুমাত্র ছোট হাতের ল্যাটিন অক্ষর থাকে৷
একটি স্ট্রিং এর একটি সাবস্ট্রিং হল সেই স্ট্রিং এর একটি সংলগ্ন পরবর্তী অংশ। সুতরাং, স্ট্রিং "ফোর্স" হল স্ট্রিং "কোডফোর্স" এর একটি সাবস্ট্রিং, কিন্তু স্ট্রিং "কোডার" নয়৷
আপনার কাজ হল এই স্ট্রিং থেকে ঠিক একটি সাবস্ট্রিং সরানোর উপায়ের সংখ্যা গণনা করা যাতে বাকি সমস্ত অক্ষর সমান হয় (স্বতন্ত্র অক্ষরের সংখ্যা শূন্য বা এক)।
এটা নিশ্চিত যে s-তে অন্তত দুটি ভিন্ন অক্ষর আছে।
মনে রাখবেন যে আপনি পুরো স্ট্রিংটি সরাতে পারেন এবং এটি সঠিক। এছাড়াও, মনে রাখবেন যে আপনার অন্তত একটি অক্ষর মুছে ফেলা উচিত।
উপরের সমস্যা সমাধানের জন্য, আপনি আপনার পছন্দের যেকোনো প্রোগ্রামিং ভাষা ব্যবহার করতে পারেন।
এখন প্রশ্ন উঠেছে, প্রতিযোগিতামূলক কোডিংয়ের জন্য পাইথন কেন?
গতি
পাইথন বেছে নেওয়ার একটি কারণ হল এটি আপনার কোড লেখার সময়কে আমূল কমিয়ে দেয়, বরং আপনি প্রশ্নের জন্য প্রয়োজনীয় যুক্তি নিয়ে চিন্তা করার সময় ব্যয় করেন।
কারণ এই ধরনের প্রতিযোগিতার সময়টাই মূল বিষয়, প্রোগ্রামার যত দ্রুত সমাধান লিখতে সক্ষম হয় তা আরও ভালো। সুতরাং, উপরের গতি বলতে আমি বুঝি যে গতিতে একজন প্রোগ্রামার সমাধান লেখে, পাইথন ভাষার গতি নয়।
লাইব্রেরির বিশাল বৈচিত্র্য
পাইথন বিভিন্ন ধরণের স্ট্যান্ডার্ড লাইব্রেরির সাথে আসে এবং এই লাইব্রেরিগুলিকে প্রতিযোগিতামূলক প্রোগ্রামিংয়ে খুব ভালভাবে ব্যবহার করা যেতে পারে।
প্রতিযোগিতামূলক কোডিং -
-এর জন্য পাইথন বেছে নেওয়ার অন্যান্য সাধারণ কারণগুলির তালিকা নীচে দেওয়া হলi.Common inbuilt functions:
- পাইথন গণনা, মিন, সর্বোচ্চ, সাজানো ইত্যাদির মতো সাধারণ ফাংশনগুলির একটি বড় সেট সরবরাহ করে৷ এই অন্তর্নির্মিত ফাংশনগুলি খুব কার্যকর, কোডারদের সহজেই এগিয়ে যেতে দেয় এবং এই তুচ্ছ পদ্ধতিগুলির জন্য কোড লেখা এড়িয়ে যায় যা প্রায়শই খুব কার্যকর হয়৷ এছাড়াও, পাইথন ফাংশনগুলি তাদের ফাংশনের জন্য সেরা অ্যালগরিদম ব্যবহার করে। উদাহরণস্বরূপ, sorted() ফাংশন টিমসর্ট অ্যালগরিদম ব্যবহার করে, যা 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. বোঝার তালিকা
- পাইথন সেরা তালিকা বোঝার একটি প্রদান করে। এটি আমাদের কোড লিখতে দেয় যা সাধারণত 1 লাইনে 5-20 লাইন নেয়। একটি তালিকা বোঝার সাথে, আপনি নেস্টেড লুপ এবং শর্ত থাকতে পারেন
কোড
# Iterating through a string Using List Comprehension l_string = [ letter for letter in 'Tutorialspoint' ] print( l_string) #List Comprehensions vs Lambda functions 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. স্ট্যান্ডার্ড লাইব্রেরি (বড় সুবিধা)
- পাইথন একটি খুব বিস্তৃত স্ট্যান্ডার্ড লাইব্রেরির সাথে আসে, যা বিস্তৃত সুবিধা প্রদান করে। এই লাইব্রেরিগুলি বেশ কিছু ডেটা স্ট্রাকচার নিয়ে আসে যা সেগুলিকে ম্যানুয়ালি প্রয়োগ করার প্রয়োজনীয়তা দূর করে এবং ইটারটুলগুলিও যা লাইব্রেরির একটি অত্যন্ত গুরুত্বপূর্ণ অংশ৷
- উদাহরণস্বরূপ, আপনি একটি তালিকার সমস্ত সম্ভাব্য স্থানান্তর তৈরি করতে চান এবং এটিকে অন্য একক তালিকায় সংরক্ষণ করতে চান, itertools থেকে তালিকা বোঝা এবং পারমুটেশন ফাংশন ব্যবহার করে৷
পাইথন স্ট্যান্ডার্ড লাইব্রেরি
ডেটার প্রকার | স্ট্রিং | নেটওয়ার্কিং | থ্রেড |
অপারেটিং সিস্টেম | কম্প্রেশন | GUI | আর্গুমেন্ট |
CGI | জটিল সংখ্যা | FTP | ক্রিপ্টোগ্রাফি |
পরীক্ষা | মাল্টিমিডিয়া | ডাটাবেস | CSV ফাইল |
ক্যালেন্ডার | ইমেল | এক্সএমএল | ক্রমিকীকরণ |
iv. ডেটা স্ট্রাকচারের একটি বিশাল বৈচিত্র্য
- পাইথন আপনার কোডিং-এ অভিধান, সেট, টিপল, তালিকা এবং আরও অনেকগুলি সহ ব্যবহার করার জন্য ডেটা স্ট্রাকচারের একটি বড় সেট সরবরাহ করে যা স্ট্যান্ডার্ড প্যাকেজ হিসাবে আসে।
v. ব্যবহারের সহজতা
পাইথন সিনট্যাক্স মানুষের পাঠযোগ্য এবং পাইথনে কোডিং করা খুব সহজ এবং দ্রুত। এটি মূলত সিউডোকোডের মতো পড়ে৷
৷>>> 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