কম্পিউটার

পাইথনে প্রদত্ত সময়ের একই অঙ্কগুলি পুনরায় ব্যবহার করে নিকটতম সময় খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের কাছে "hh:mm" বিন্যাসে একটি 24-ঘন্টা স্ট্রিং আছে, আমাদের পরবর্তী নিকটতম সময়টি খুঁজে বের করতে হবে যা প্রদত্ত সংখ্যাগুলি পুনরায় ব্যবহার করে গঠন করা যেতে পারে। আমরা প্রদত্ত স্ট্রিং থেকে সংখ্যাগুলি যতবার চাই ততবার পুনঃব্যবহার করতে পারি।

সুতরাং, যদি ইনপুটটি s ="03:15" এর মত হয়, তাহলে আউটপুট হবে 03:30, নিকটতম সময় হিসাবে 03:30 যা প্রদত্ত সংখ্যাগুলি পুনরাবৃত্তি করে৷

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:

  • ব্যবহার করুন :=দুই অঙ্কের ঘন্টা এবং দুই অঙ্কের মিনিট মান সহ একটি তালিকা
  • সম্ভব :=একটি নতুন সেট
  • একটি ফাংশন ব্যাকট্র্যাক() সংজ্ঞায়িত করুন। এটি পথ গ্রহণ করবে
  • পাথের আকার যদি 4 এর মত হয়, তাহলে
    • (পাথ[প্রথম দুই অঙ্ক] কনক্যাটেনেট ":" সংযোজিত পথ [শেষ দুটি সংখ্যা]) এবং এটি সম্ভাব্য মধ্যে সন্নিবেশ করান।
    • প্রত্যাবর্তন
  • ব্যবহৃত প্রতিটি পি এর জন্য, করুন
    • যদি (পাথের আকার 0 এবং p> "2" এর মতো) মিথ্যা এবং (পাথ "2" এবং p> "3" এর মতো) মিথ্যা এবং (পাথের আকার 2 এবং p এর মতো> "5") মিথ্যা, তারপর
      • ব্যাকট্র্যাক(পথ + p)
  • প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন:
  • ব্যাকট্র্যাক (খালি স্ট্রিং)
  • সম্ভব :=সম্ভাব্য থেকে একটি নতুন তালিকা
  • সম্ভব তালিকা সাজান
  • এর জন্য আমি 0 থেকে সম্ভাব্য আকার - 2 এর মধ্যে, কর
    • যদি সম্ভব[i] s এর মত হয়, তাহলে
      • প্রত্যাবর্তন সম্ভব[i + 1]
  • প্রত্যাবর্তন সম্ভব[0]

আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:

উদাহরণ

class Solution:
   def solve(self, s):
      use = [s[0], s[1], s[3], s[4]]
      possible = set()

      def backtrack(path):
         nonlocal possible, use
         if len(path) == 4:
            possible.add(path[:2] + ":" + path[2:])
            return
         for p in use:
            if (not (len(path) == 0 and p > "2") and not (path == "2" and p > "3") and not (len(path) == 2 and p > "5")):
backtrack(path + p)

         backtrack("")
         possible = list(possible)
         possible.sort()
         for i in range(len(possible) - 1):
            if possible[i] == s:
               return possible[i + 1]
         return possible[0]

ob = Solution()
s = "03:15"
print(ob.solve(s))

ইনপুট

"03:15"

আউটপুট

03:30

  1. পাইথন ব্যবহার করে একই x বা y স্থানাঙ্ক আছে এমন নিকটতম বিন্দু খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে K কাজগুলি শেষ করার জন্য সর্বাধিক সময় খোঁজার প্রোগ্রাম

  3. পাইথনে প্রদত্ত ম্যাট্রিক্সের স্থানান্তর খুঁজে বের করার জন্য প্রোগ্রাম

  4. পাইথনে প্রদত্ত সংখ্যার সমস্ত অঙ্কের যোগফল খুঁজে বের করার প্রোগ্রাম