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

পাইথনে সবার জন্য আসন উপলব্ধ কিনা যাচাই করার প্রোগ্রাম


মান लीজিয়ে আমাদের কাছে একটি সংখ্যা n আছে, যেখানে n জন মানুষ আসন খুঁজছেন। আমাদের কাছে একটি বিটের তালিকাও আছে যেখানে 1 উপস্থিত করে ইতিমধ্যে দখল করা আসন এবং 0 উপস্থিত করে খালি আসন। দুজন মানুষ পাশাপাশি বসে না, তাই আমাদের যাচাই করতে হবে যে সব n জন মানুষ আসন পেতে পারেন কিনা।

উদাহরণস্বরূপ, ইনপুট যদি n = 2 এবং seats = [1, 0, 0, 0, 1, 0, 0] হয়, তবে আউটপুট হবে True, কারণ তারা ২ এবং ৬ নম্বর ইনডেক্সে বসতে পারেন।

এটি সমাধান করার জন্য আমরা নিচের ধাপগুলো অনুসরণ করব:

  • seats তালিকার শুরুতে ০ যোগ করুন এবং শেষে [0, 1] যোগ করুন
  • res := 0, gap := 0
  • seats তালিকার প্রতিটি i এর জন্যループ চালান:
    • যদি i ০ এর সমান হয়, তবে
      • gap := gap + 1
    • অথবা যদি gap > 0 হয়, তবে
      • res := res + floor((gap - 1)/2)
      • gap := 0
  • যদি res >= n হয় তবে true রিটার্ন করুন, অন্যথায় false

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালো বুঝতে:

def solve(n, seats):
    seats = [0] + seats + [0, 1]
    res = 0
    gap = 0
    for i in seats:
        if i == 0:
            gap += 1
        elif gap > 0:
            res += (gap - 1) // 2
            gap = 0
    return res >= n

n = 2
seats = [1, 0, 0, 0, 1, 0, 0]
print(solve(n, seats))

ইনপুট

2, [1, 0, 0, 0, 1, 0, 0]

আউটপুট

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

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

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

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