কম্পিউটার টিউটোরিয়াল

পাইথনে রিসেন্ট কল সংখ্যা গণনা

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

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

এটি সমাধান করার জন্য আমরা নিচের ধাপগুলো অনুসরণ করব −

  • ক্লাস ইনিশিয়ালাইজ করুন একটি কিউ দিয়ে, যা প্রাথমিকভাবে খালি
  • ping() ফাংশন ডিফাইন করুন। এটি t নিবে
  • যখন কিউর সাইজ ০ নয় এবং t - queue[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. পাইথনে সিংগেল নাম্বার (Single Number)

  3. পাইথনে প্যালিনড্রোম নাম্বার যাচাই (Palindrome Number)

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