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

পাইথনে রেট লিমিটিং চেক করার ডেটা স্ট্রাকচার ডিফাইন করার প্রোগ্রাম


মান লিজিয়ে আমরা একটি ডেটা স্ট্রাকচার ডেভেলপ করতে চাই যা এক্সপায়ার টাইম দিয়ে বিল্ড আপ হবে এবং একটি ফাংশন সাপোর্ট করবে যা ইউজার আইডি এবং একটি টাইমস্ট্যাম্প নিবে। এই ফাংশনটি চেক করবে যে দেওয়া ইউজার আইডি এবং টাইমস্ট্যাম্পে রিকোয়েস্ট ফেইল হবে কিনা। রিকোয়েস্টটি শুধু তখন ফেইল হবে যখন ইউজারটি এক্সপায়ার টাইমের কম সময় আগে সফল রিকোয়েস্ট করেছে থাকে।

উদাহরণস্বরূপ, ইনপুট যদি expire = 6 হয়, তবে একটি অবজেক্ট obj কন্সট্রাক্ট করুন এবং ফাংশনগুলো কল করুন: obj.limit(0,10), obj.limit(0,16), obj.limit(0,17) এবং obj.limit(1,20)। আউটপুট হবে False, False, True এবং False। কারণ ইউজার 0-র জন্য প্রাথমিক রিকোয়েস্ট ছিল না সেজন্য false, তারপর টাইম 16-এ এক্সপায়ার টাইম 6 লাস্ট রিকোয়েস্ট 10-র চেয়ে বড় নয়, কিন্তু 17-এ true, এবং লাস্ট রিকোয়েস্ট ইউজার 1-র জন্য সেজন্য প্রাথমিক রিকোয়েস্ট false।

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

কন্সট্রাক্টর ডিফাইন করুন। এটি expire নিবে।

  • lastCall := একটি ডিকশনারি তৈরি করুন যার ডিফল্ট ভ্যালু -1
  • limit() ফাংশন ডিফাইন করুন। এটি uid, timestamp নিবে।
  • last := lastCall[uid]
  • যদি last == -1 বা (last + expire) <= timestamp হয়, তবে
    • lastCall[uid] := timestamp
    • False রিটার্ন করুন
  • True রিটার্ন করুন

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালো বুঝতে:

from collections import defaultdict
class RateLimit:
    def __init__(self, expire):
        self.expire = expire
        self.lastCall = defaultdict(lambda: -1)
    def limit(self, uid, timestamp):
        last = self.lastCall[uid]
        if last == -1 or last + self.expire <= timestamp:
            self.lastCall[uid] = timestamp
            return False
        return True

expire = 6
obj = RateLimit(expire)
print(obj.limit(0,10))
print(obj.limit(0,16))
print(obj.limit(0,17))
print(obj.limit(1,20))

ইনপুট

RateLimit(6) obj.limit(0,10) obj.limit(0,16) obj.limit(0,17) obj.limit(1,20)

আউটপুট

False False True False
  1. অ্যারে রোটেশনের পাইথন প্রোগ্রাম

  2. পাইথনে চক্রবৃদ্ধি বunga (Compound Interest) প্রোগ্রাম

  3. পাইথন প্রোগ্রাম: সিম্পল ইন্টারেস্ট ক্যালকুলেশন

  4. পাইথন প্রোগ্রাম: সিলেকশন সোর্ট অ্যালগরিদম