ধরুন আমাদের এমন একটি সিস্টেম ডিজাইন করতে হবে যা n আসনের রিজার্ভেশন অবস্থা পরিচালনা করে। আসন সংখ্যা 1 থেকে n পর্যন্ত। তাই আমাদের এই ফাংশনগুলি −
সহ SeatReserveManager ক্লাস বাস্তবায়ন করতে হবে-
কনস্ট্রাক্টর যেটি n ইনপুট হিসাবে নেয় এবং অবজেক্ট শুরু করে যেটি 1 থেকে n পর্যন্ত সংখ্যাযুক্ত n আসন পরিচালনা করবে। প্রাথমিকভাবে সব আসন পাওয়া যায়।
-
reserve(), এটি ক্ষুদ্রতম-সংখ্যার অসংরক্ষিত আসন আনবে, তারপর এটি সংরক্ষণ করবে এবং এর নম্বর ফেরত দেবে।
-
unreserve(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টি রিজার্ভ করুন৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
Constuctor() সংজ্ঞায়িত করুন। এটি n
লাগবে৷ -
বর্তমান_আসন :=0
-
empty_seats :=একটি নতুন তালিকা
-
একটি ফাংশন রিজার্ভ () সংজ্ঞায়িত করুন। এটি লাগবে
-
যদি খালি_সিটের দৈর্ঘ্য> 0, তাহলে
-
s :=ন্যূনতম খালি_সিট
-
খালি_সিট থেকে s মুছুন
-
s
ফেরত দিন
-
-
বর্তমান_সিট :=বর্তমান_সিট + 1
-
বর্তমান_আসন ফেরত দিন
-
একটি ফাংশন unreserve() সংজ্ঞায়িত করুন। এটি আসন সংখ্যা গ্রহণ করবে
-
খালি_সীট
শেষে 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