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

পাইথনে সার্ভার কোর দিয়ে সব টাস্ক এক্সিকিউট করা সম্ভব কিনা চেক করা

প্রতিটি সার্ভারের কোর সংখ্যা এবং প্রতিটি টাস্কের প্রয়োজনীয় কোর দেওয়া আছে। প্রতিটি টাস্ক শুধু এক সার্ভারে চলবে, কিন্তু এক সার্ভারে একাধিক টাস্ক চলতে পারে। সব টাস্ক এক্সিকিউট করা সম্ভব কিনা বের করুন।

ইনপুট উদাহরণ

cores = [10, 7]
tasks = [7, 3, 2, 2, 1]

আউটপুট: True (সার্ভার ১: 7+3=10, সার্ভার ২: 2+2+1=5 ≤ 7)

অ্যালগরিদম

ব্যাকট্র্যাকিং ব্যবহার করে সব টাস্ককে সার্ভারগুলোর মধ্যে বিতরণ করার চেষ্টা করা হয়। যদি কোনো বিন্যাস কাজ করে তবে True।

পাইথন কোড

def solve(cores, tasks):
    if not tasks:
        return True
    for i in range(len(cores)):
        if cores[i] >= tasks[0]:
            cores[i] -= tasks[0]
            if solve(cores, tasks[1:]):
                return True
            cores[i] += tasks[0]  # ব্যাকট্র্যাক
    return False

# টেস্ট
cores = [10, 7]
tasks = [7, 3, 2, 2, 1]
print(solve(cores, tasks))  # True

ব্যাখ্যা

এটি Bin Packing সমস্যা। ব্যাকট্র্যাকিং এক্সপোনেনশিয়াল টাইম নেয়। বড় ইনপুটের জন্য হিউরিস্টিক বা DP ব্যবহার করা উচিত।

  1. পাইথনে গ্রাফ বাইপার্টাইট কিনা যাচাই করার প্রোগ্রাম

  2. পাইথনে টপ্লিট্জ ম্যাট্রিক্স (Toeplitz Matrix) যাচাই করার প্রোগ্রাম

  3. দেওয়া স্ট্রিংটি পাইথন কিওয়ার্ড কিনা চেক করার প্রোগ্রাম

  4. পাইথন প্রোগ্রাম: স্ট্রিং হেটেরোগ্রাম (Heterogram) কিনা চেক করা