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

जांचें कि क्या पायथन में डीएफए का उपयोग करके बाइनरी स्ट्रिंग मल्टीपल 3 का है

मान लीजिए कि हमारे पास एक सरणी n है जो किसी भी संख्या के द्विआधारी प्रतिनिधित्व का प्रतिनिधित्व करती है। हमें यह जांचना है कि नियतात्मक परिमित ऑटोमेटा डीएफए का उपयोग करके इसका द्विआधारी प्रतिनिधित्व तीन से विभाज्य है या नहीं।

इसलिए, यदि इनपुट n =[1, 1, 0, 0] (12 का बाइनरी) जैसा है, तो आउटपुट ट्रू होगा।

इसे हल करने के लिए, हम नीचे की तरह DFA का निर्माण कर सकते हैं -

जांचें कि क्या पायथन में डीएफए का उपयोग करके बाइनरी स्ट्रिंग मल्टीपल 3 का है

विधि सरल है जब कोई संख्या 3 से विभाज्य होती है तो शेषफल 0 होगा, यदि नहीं तो शेष 1 या 2 होगा। इन तीन शेषफलों के लिए तीन अवस्थाएँ हैं। प्रारंभिक अवस्था भी अंतिम अवस्था होती है क्योंकि जब शेषफल 0 होता है तो इसका अर्थ है कि संख्या विभाज्य है।

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

  • dfa_state :=0
  • i के लिए 0 से लेकर अंकों के आकार -1 तक के लिए
    • अंक:=अंक[i]
    • यदि dfa_state 0 है, तो
      • यदि अंक 1 के समान है, तो
        • dfa_state :=1
    • अन्यथा जब dfa_state 1 है, तो
      • यदि अंक 0 के समान है, तो
        • dfa_state :=2
      • अन्यथा,
        • dfa_state :=0
    • अन्यथा जब dfa_state 2 है, तब
      • यदि अंक 0 के समान है, तो
        • dfa_state :=1
  • यदि dfa_state 0 है, तो
    • सही लौटें
  • झूठी वापसी

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

उदाहरण

def solve(nums):
   dfa_state = 0
   for i in range(len(nums)):
      digit = nums[i]
      if dfa_state == 0:
         if digit == 1:
            dfa_state = 1
         elif dfa_state == 1:
            if digit == 0:
               dfa_state = 2
            else:
               dfa_state = 0
         elif dfa_state == 2:
            if digit == 0:
               dfa_state = 1
            if dfa_state == 0:
               return True
   return False
n = [1, 1, 0, 0]
print(solve(n))

इनपुट

[1, 1, 0, 0]

आउटपुट

True

  1. पायथन का उपयोग करके कई फाइलों का नाम बदलें

    नाम बदलें () विधि का उपयोग Python3 में किसी फ़ाइल या निर्देशिका का नाम बदलने के लिए किया जाता है। नाम बदलें () विधि ओएस मॉड्यूल का एक हिस्सा है। os.rename के लिए सिंटैक्स () os.rename(src, dst) पहला तर्क src है जो नाम बदलने के लिए फ़ाइल का स्रोत पता है और दूसरा तर्क dstजो नए नाम के साथ गंतव्य है।

  1. पायथन में स्ट्रिंग को बाइनरी में कैसे बदलें?

    एक स्ट्रिंग को बाइनरी में बदलने के लिए, आपको प्रत्येक वर्ण पर पुनरावृति करने और इसे बाइनरी में बदलने की आवश्यकता है। फिर इन पात्रों को एक ही स्ट्रिंग में एक साथ जोड़ दें। आप वर्ण x को बाइनरी के रूप में प्रारूपित करने के लिए format(ord(x), b) का उपयोग कर सकते हैं। उदाहरण के लिए: >>>st = &quo

  1. कैसे जांचें कि स्ट्रिंग में केवल पायथन में कुछ वर्ण हैं या नहीं?

    आप सेट का उपयोग करके जांच सकते हैं कि स्ट्रिंग में केवल कुछ वर्ण हैं या नहीं। उन पात्रों का उपयोग करके एक सेट घोषित करें जिन्हें आप अनुमति देना चाहते हैं। उदाहरण के लिए यदि हम यह जांचना चाहते हैं कि क्या किसी स्ट्रिंग में केवल 1, 2, 3 और 4 हैं, तो हम उपयोग कर सकते हैं - उदाहरण from sets import Set a