কম্পিউটার

পাইথনে রান লেন্থ স্ট্রিং ডিকোডিং ইটারেটর ক্লাস বাস্তবায়নের জন্য প্রোগ্রাম


ধরুন আমরা একটি ইটারেটর ক্লাস সংজ্ঞায়িত করতে চাই যেটি একটি রান-লেংথ এনকোডেড লোয়ারকেস স্ট্রিং s দিয়ে তৈরি করে, এই ইটারেটরের জন্য দুটি ফাংশন রয়েছে সেগুলি হল −

  • next() এটি ইটারেটরে পরবর্তী উপাদান খুঁজে পায়
  • hasnext() এটি পরের উপাদানটি উপস্থিত আছে কিনা তা পরীক্ষা করে

সুতরাং, যদি ইনপুটটি s ="2b1a" এর মত হয়, তাহলে s দিয়ে একটি অবজেক্ট তৈরি করুন, তারপর next(), hasnext(), next(), next(), hasnext(), তারপর আউটপুট হবে "b" , সত্য, "b", "a", মিথ্যা।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি কনস্ট্রাক্টর সংজ্ঞায়িত করুন। এটি s
  • লাগবে
  • আউটপুট :=একটি নতুন তালিকা
  • সংখ্যা :=ফাঁকা স্ট্রিং
  • s এর প্রতিটি i এর জন্য, করুন
    • যদি আমি বর্ণানুক্রমিক হয়, তাহলে
      • আউটপুটের শেষে num সন্নিবেশ করান
      • আউটপুটের শেষে i ঢোকান
      • সংখ্যা :=ফাঁকা স্ট্রিং
    • অন্যথায়,
      • সংখ্যা :=সংখ্যা + i
  • পরের একটি ফাংশন সংজ্ঞায়িত করুন().
  • যদি hasnext() সত্য হয়, তাহলে
    • গণনা :=আউটপুট[0]
    • অক্ষর :=আউটপুট[1]
    • গণনা :=গণনা - 1
    • যদি গণনা> 0 হয়, তাহলে
      • আউটপুট[0] :=আউটপুট[0] - 1
    • অন্যথায়,
      • আউটপুট :=আউটপুট[সূচী 2 থেকে শেষ]
    • রিটার্ন লেটার
  • একটি ফাংশন সংজ্ঞায়িত করুন hasnext().
  • আউটপুটের আকার যদি 0 না হয়, তাহলে
    • সত্য ফেরান
  • মিথ্যে ফেরত দিন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

class RunLengthIterator:def __init__(self, s):self.output =[] num ="" এর জন্য i in s:if i.isalpha():self.output.append(int(num)) self.output .append(i) num ="" else:num +=i def next(self):if self.hasnext():count =self.output[0] letter =self.output[1] count -=1 গণনা হলে> 0:self.output[0] -=1 else:self.output =self.output[2:] return letter def hasnext(self):if len(self.output) !=0:return True return Falses =" 2b1a"obj =RunLengthIterator(s)print(obj.next())print(obj.hasnext())print(obj.next())print(obj.next())print(obj.hasnext()) 

ইনপুট

"2b1a"obj =RunLengthIterator(s)obj.next()obj.hasnext()obj.next()obj.next()obj.hasnext()

আউটপুট

bTruebaFalse

  1. পাইথন প্রোগ্রাম কিভাবে চালাবেন?

  2. পাইথন প্রোগ্রাম একটি স্ট্রিং মধ্যে এমনকি দৈর্ঘ্য শব্দ মুদ্রণ

  3. পাইথনে স্ট্রিং টেমপ্লেট ক্লাস?

  4. পাইথনে ইটারেটর ফাংশন