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

পাইথনে অপারেটর रखে ২৪ তৈরি করা সম্ভব কিনা যাচাই করার প্রোগ্রাম


মান लीजिए हमारे पास चार संख्याओं की एक सूची है, प्रत्येक संख्या 1 से 9 की रेंज में है, एक निश्चित क्रम में। अब अगर हम संख्याओं के बीच +, -, *, और / (/ पूर्णांक विभाजन दर्शाता है) ऑपरेटर रखते हैं, और उन्हें ब्रैकेट्स से ग्रुप करते हैं, तो हमें जांचना है कि क्या 24 का मान प्राप्त करना संभव है या नहीं।

तो, अगर इनपुट nums = [5, 3, 6, 8, 7] है, तो आउटपुट True होगा, क्योंकि (5 * 3) - 6 + (8 + 7) = 24।

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

  • एक फंक्शन recur() परिभाषित करें। यह arr लेगा
  • answer := एक नई सूची
  • i को 0 से arr के आकार - 1 तक के लिए, करें
    • pre := recur(arr[इंडेक्स 0 से i])
    • suf := recur(arr[इंडेक्स i+1 से अंत])
    • प्रत्येक k के लिए pre में, करें
      • प्रत्येक j के लिए suf में, करें
        • (k + j) को answer के अंत में डालें
        • (k - j) को answer के अंत में डालें
        • (k * j) को answer के अंत में डालें
        • अगर j 0 नहीं है, तो
          • (k / j का भागफल) को answer के अंत में डालें
  • अगर answer का आकार 0 है और arr का आकार 1 है, तो
    • arr[0] को answer के अंत में डालें
  • answer लौटाएं
  • मुख्य विधि से जांचें कि क्या 24 recur(nums) में है या नहीं, अगर हां तो True लौटाएं, अन्यथा False

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশন দেখুন:

উদাহরণ

class Solution:
    def solve(self, nums):
        def recur(arr):
            answer = []
            for i in range(len(arr) - 1):
                pre, suf = recur(arr[:i+1]), recur(arr[i+1:])
                for k in pre:
                    for j in suf:
                        answer.append(k + j)
                        answer.append(k - j)
                        answer.append(k * j)
                        if j != 0:
                            answer.append(k // j)
            if len(answer) == 0 and len(arr) == 1:
                answer.append(arr[0])
            return answer
        return 24 in recur(nums)

ob = Solution()
nums = [5, 3, 6, 8, 7]
print(ob.solve(nums))

ইনপুট

[5, 3, 6, 8, 7]

আউটপুট

True

  1. পাইথনে দুটি ট্রি নোড স왪 করায় সমান হয় কিনা যাচাই করা (Flip Equivalent Trees)

  2. পাইথনে সব কোর্স নেওয়া সম্ভব কিনা যাচাই করার প্রোগ্রাম

  3. পাইথনে একটি স্ট্রিংকে অন্য স্ট্রিংএ 1-to-1 ম্যাপ করা সম্ভব কিনা যাচাই করার প্রোগ্রাম

  4. পাইথনে লিস্ট খালি কিনা যাচাই করার প্রোগ্রাম