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

পাইথনে ১২টা ঘণ্টার ক্লকে দেওয়া সেকেন্ডগুলো যোগ বা বিয়োগ করে আবার ১২টায় ফিরে আসা সম্ভব কিনা তা যাচাই করা

মান লিজিয়ে আমাদের n সংখ্যক ভিন্ন সেকেন্ড ভ্যালু দিয়ে একটি অ্যারে আছে। আমাদের যাচাই করতে হবে ১২টা ঘণ্টার ক্লক (12 O'clock) থেকে শুরু করে শুধু দেওয়া সেকেন্ডগুলো যোগ বা বিয়োগ করে আবার ১২টায় ফিরে আসা সম্ভব কিনা। আমরা সব দেওয়া সেকেন্ড একবারই ব্যবহার করতে পারি, যেকোনো সেকেন্ড বা যোগ করতে পারি বা বিয়োগ।

যেমন, ইনপুট যদি seconds = [40,90,50] হয়, তবে আউটপুট হবে True কারণ ৪০ যোগ, ৯০ বিয়োগ, আবার ৫০ যোগ করলে ফিরে আসা যায়।

সমাধানের ধাপসমূহ

  • size := 2^(seconds অ্যারে-এর দৈর্ঘ্য)
  • c ০ থেকে size - 1 পর্যন্ত, করুন:
    • add := 0
    • j ০ থেকে seconds-এর সাইজ - ১ পর্যন্ত, করুন:
      • যদি c AND (2^j) নন-জিরো হয়, তবে:
        • add := add + seconds[j]
      • অন্যথায়:
        • add := add - seconds[j]
    • যদি add (24 * 60) দ্বারা বিভাজ্য হয়, তবে:
      • True রিটার্ন করুন
  • False রিটার্ন করুন

উদাহরণ

বेहतर বোঝার জন্য নিচের বাস্তবায়নটি দেখুন:

def solve(seconds):
    size = 2**len(seconds)
    for c in range(size):
        add = 0
        for j in range(len(seconds)):
            if c & (1 << j):
                add += seconds[j]
            else:
                add -= seconds[j]
        if add % (24 * 60) == 0:
            return True
    return False

seconds = [40,90,50]
print(solve(seconds))

ইনপুট

[40,90,50]

আউটপুট

True
  1. পাইথনে দ্বীপে বাঁচে থাকা সম্ভব কিনা তা যাচাই করা

  2. পাইথনে ভেক্টর A-কে রোটেট এবং ভেক্টর C যোগ করে ভেক্টর B-তে পৌঁছানো সম্ভব কিনা তা যাচাই করা

  3. পাইথনে এক স্ট্রিংকে অন্য স্ট্রিংয়ের সাথে যোগ করা

  4. পাইথনে N লিস্টের সকল পারমুটেশন (All Permutations of N Lists)