Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

डेटा संरचना को परिभाषित करने के लिए कार्यक्रम जो पायथन में उपयोगकर्ता के लिए दर सीमित जाँच का समर्थन करता है

मान लीजिए कि हम एक डेटा संरचना विकसित करना चाहते हैं जो एक समय सीमा समाप्त हो सकती है, और एक ऐसे फ़ंक्शन का समर्थन करता है जो उपयोगकर्ता आईडी और टाइमस्टैम्प लेता है। यह जांच करेगा कि टाइमस्टैम्प दिए गए समय पर दिए गए user_id वाला उपयोगकर्ता अनुरोध विफल रहता है या नहीं। यह तभी विफल होगा जब उपयोगकर्ता के पास दिए गए समय सीमा से कम समय पहले एक सफल अनुरोध था।

इसलिए, यदि इनपुट एक्सपायर =6 जैसा है, तो ऑब्जेक्ट obj का निर्माण करें, और कॉल फ़ंक्शन obj.limit(0,10), obj.limit(0,16), obj.limit(0,17) और obj.limit( 1,20), तो आउटपुट क्रमशः असत्य, असत्य, सत्य और असत्य होगा क्योंकि उपयोगकर्ता 0 के लिए, शुरू में कोई अनुरोध नहीं था, इसलिए यह असत्य है, फिर समय 16 पर यह अंतिम अनुरोध 10 की तुलना में समाप्ति समय 6 से अधिक नहीं है, लेकिन 17 पर यह सच है और अंतिम अनुरोध के लिए, यह उपयोगकर्ता 1 के लिए है इसलिए प्रारंभिक अनुरोध गलत है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

कंस्ट्रक्टर को परिभाषित करें। इसकी समय सीमा समाप्त हो जाएगी

  • lastCall :=एक ऐसा शब्दकोश बनाएं जिसका डिफ़ॉल्ट मान -1 हो
  • एक फ़ंक्शन लिमिट () को परिभाषित करें। यह यूआईडी, टाइमस्टैम्प लेगा
  • अंतिम:=lastCall[uid]
  • यदि अंतिम -1 या (अंतिम + समाप्ति) <=टाइमस्टैम्प के समान है, तो
    • lastCall[uid] :=टाइमस्टैम्प
    • झूठी वापसी
  • सही लौटें

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

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. चक्रवृद्धि ब्याज के लिए पायथन कार्यक्रम

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन −हमें तीन इनपुट मान दिए गए हैं यानी सिद्धांत, दर और समय और हमें चक्रवृद्धि ब्याज की गणना करने की आवश्यकता है। नीचे दिया गया कोड चक्रवृद्धि ब्याज की गणना की प्रक्रिया को दर्शाता है। यहां प्रयुक्त

  1. साधारण रुचि के लिए पायथन कार्यक्रम

    इस लेख में, हम Python 3.x में साधारण ब्याज की गणना के बारे में जानेंगे। या पहले। साधारण ब्याज की गणना दैनिक ब्याज दर को मूल राशि से भुगतानों के बीच बीतने वाले दिनों की संख्या से गुणा करके की जाती है। गणितीय रूप से, Simple Interest = (P x T x R)/100 Where, P is the principal amount T is the time a

  1. चयन क्रम के लिए पायथन कार्यक्रम

    इस लेख में, हम Python 3.x में सिलेक्शन सॉर्ट और उसके कार्यान्वयन के बारे में जानेंगे। या पहले। चयन क्रम . में एल्गोरिथम, एक सरणी को पुनरावर्ती रूप से अनसोल्ड भाग से न्यूनतम तत्व ढूंढकर और शुरुआत में सम्मिलित करके सॉर्ट किया जाता है। किसी दिए गए सरणी पर चयन क्रम के निष्पादन के दौरान दो उप-सरणी बनते