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

Python-এ সিট রিজারভেশন ম্যানেজার ইমপ্লিমেন্ট করা


মনে করুন আমাদের n সিটের রিজারভেশন স্টেট ম্যানেজ করার একটি সিস্টেম ডিজাইন করতে হবে। সিটগুলো 1 থেকে n পর্যন্ত নম্বর করা আছে। সুতরাং আমাদের SeatReserveManager ক্লাস ইমপ্লিমেন্ট করতে হবে, এই ফাংশনগুলোসহ −

  • কনস্ট্রাক্টর যা n ইনপুট হিসেবে নেবে এবং 1 থেকে n পর্যন্ত নম্বর করা n সিট ম্যানেজ করার অবজেক্ট ইনিশিয়ালাইজ করবে। ابتدায় সব সিট উপলব্ধ।

  • reserve(), এটি সবচেয়ে ছোট নম্বরের অনরিজার্ভড সিট বের করবে, সেটি রিজার্ভ করবে, এবং এর নম্বর রিটার্ন করবে।

  • unreserve(seatNumber), এটি দেয়া seatNumber-ওয়ালা একটি রিজার্ভড সিট অনরিজার্ভ করবে।

সুতরাং, যদি ইনপুট হয়

  • obj = SeatReserveManager(7)

  • obj.reserve()

  • obj.reserve()

  • obj.reserve()

  • obj.unreserve(2)

  • obj.unreserve(5)

  • obj.reserve()

  • obj.reserve()

তবে আউটপুট হবে 1, 2, 3, 2, 5, ابتداয় তিনটি সিট 1, 2, 3 রিজার্ভ, তারপর 2 এবং 5 অনরিজার্ভ কিন্তু 5 রিজার্ভড ছিল না, তারপর 5 আবার রিজার্ভ।

এটি সমাধান করতে আমরা নিচের ধাপগুলো অনুসরণ করব −

  • কনস্ট্রাক্টর() ডিফাইন করুন। এটি n নেবে

  • current_seat := 0

  • empty_seats := একটি নতুন তালিকা

  • reserve() ফাংশন ডিফাইন করুন। এটি নেবে

  • যদি empty_seats-এর দৈর্ঘ্য > 0 হয়, তবে

    • s := empty_seats-এর ন্যূনতম

    • empty_seats থেকে s মুছে দিন

    • s রিটার্ন করুন

  • current_seat := current_seat + 1

  • current_seat রিটার্ন করুন

  • unreserve() ফাংশন ডিফাইন করুন। এটি seatNumber নেবে

  • empty_seats-এর শেষে seatNumber ইনসার্ট করুন

উদাহরণ

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

class SeatReserveManager:
    def __init__(self, n):
        self.current_seat = 0
        self.empty_seats = []

    def reserve(self):
        if len(self.empty_seats) > 0:
            s = min(self.empty_seats)
            self.empty_seats.remove(s)
            return s
        self.current_seat += 1
        return self.current_seat

    def unreserve(self, seatNumber):
        self.empty_seats.append(seatNumber)

obj = SeatReserveManager(7)
print(obj.reserve())
print(obj.reserve())
print(obj.reserve())
obj.unreserve(2)
obj.unreserve(5)
print(obj.reserve())
print(obj.reserve())

ইনপুট

obj = SeatReserveManager(7)
print(obj.reserve())
print(obj.reserve())
print(obj.reserve())
obj.unreserve(2)
obj.unreserve(5)
print(obj.reserve())
print(obj.reserve())

আউটপুট

1 2 3 2 5

  1. পাইথন প্রোগ্রাম কীভাবে রান করবেন?

  2. পাইথন প্রোগ্রামে bool() ফাংশন

  3. পাইথন প্রোগ্রামে callable() ফাংশন

  4. পাইথনে রক-পেপার-সিসর গেম ইমপ্লিমেন্টেশন