কম্পিউটার

পাইথনে সাম্প্রতিক কলের সংখ্যা


ধরুন আমরা সাম্প্রতিক অনুরোধগুলি গণনা করার জন্য RecentCounter নামে একটি ক্লাস লিখতে চাই। এই ক্লাসের শুধুমাত্র একটি পদ্ধতি রয়েছে:ping(t), যেখানে t মিলিসেকেন্ডে কিছু সময় উপস্থাপন করে। এটি 3000 মিলিসেকেন্ড আগে থেকে এখন পর্যন্ত তৈরি করা পিংগুলির সংখ্যা ফিরিয়ে দেবে। [t - 3000, t] সময়ের সাথে যেকোনো পিং গণনা করা হবে, বর্তমান পিং সহ। এবং এটি নিশ্চিত যে প্রতিটি কল টপিং পূর্বের তুলনায় t এর একটি কঠোরভাবে বড় মান ব্যবহার করে।

সুতরাং, ইনপুট যদি কল পিং এর মত হয় চার বার পিং(1), পিং(100), পিং(3001), পিং(3002), তাহলে আউটপুট হবে যথাক্রমে 1,2,3,3।

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

  • একটি সারি তৈরি করে ক্লাস শুরু করুন, প্রাথমিকভাবে এটি খালি
  • একটি ফাংশন ping() সংজ্ঞায়িত করুন। এটি
  • লাগবে
  • যদিও সারির আকার 0 এবং t - সারি নয়[0]> 3000, করুন
    • সারি থেকে প্রথম উপাদান মুছুন
  • সারির শেষে t ঢোকান
  • সারির রিটার্ন সাইজ

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

উদাহরণ

class RecentCounter:
   def __init__(self):
      self.queue = []
   def ping(self, t):
      while len(self.queue) and t - self.queue[0] > 3000:
         self.queue.pop(0)
         self.queue.append(t)
      return len(self.queue)
ob = RecentCounter()
print(ob.ping(1))
print(ob.ping(100))
print(ob.ping(3001))
print(ob.ping(3002))

ইনপুট

ob.ping(1) ob.ping(100) ob.ping(3001) ob.ping(3002)

আউটপুট

1
2
3
3

  1. পাইথনে শুভ সংখ্যা

  2. পাইথনে একক সংখ্যা

  3. পাইথনে প্যালিনড্রোম নম্বর

  4. পাইথনে ফ্যাক্টোরিয়াল()