মান লিজিয়ে আমাদের একটি রেক্ট্যাঙ্গেল (rectangle) লিস্ট আছে যেগুলো দৈর্ঘ্য (length) এবং ব্রেডথ (breadth) দিয়ে রিপ্রেজেন্ট করা হয়েছে। আমরা যেকোনো রেক্ট্যাঙ্গেল ৯০ ডিগ্রি ঘুরিয়ে দিতে পারি, ঘুরালে ব্রেডথ দৈর্ঘ্য হবে এবং দৈর্ঘ্য ব্রেডথ। আমাদের যাচাই করতে হবে রেক্ট্যাঙ্গেলগুলো ব্রেডথ অনুযায়ী নন-ইনক্রিজিং অর্ডারে (non-increasing order) সাজানো সম্ভব কিনা।
যেমন, ইনপুট যদি rects = [[4, 5], [5, 7], [4, 6]] হয়, তবে আউটপুট হবে True কারণ ব্রেডথগুলো হল [5,7,6] এখন যদি শেষ দুটি রেক্ট্যাঙ্গেল ঘুরিয়ে দিই তবে ব্রেডথগুলো হবে [5,5,4] যা নন-ইনক্রিজিং অর্ডারে।
সমাধানের ধাপসমূহ
m := 99999i০ থেকেrect-এর সাইজ পর্যন্ত, করুন:- যদি
max(দৈর্ঘ্য, ব্রেডথ) <= mহয়, তবে:m := max(দৈর্ঘ্য, ব্রেডথ)
- অন্যথায় যদি
min(দৈর্ঘ্য, ব্রেডথ) <= mহয়:m := min(দৈর্ঘ্য, ব্রেডথ)
- অন্যথায়:
Falseরিটার্ন করুন
- যদি
Trueরিটার্ন করুন
উদাহরণ
বेहतर বোঝার জন্য নিচের বাস্তবায়নটি দেখুন:
def solve(rect):
m = 99999
for i in range(len(rect)):
if max(rect[i][0], rect[i][1]) <= m:
m = max(rect[i][0], rect[i][1])
elif min(rect[i][0], rect[i][1]) <= m:
m = min(rect[i][0], rect[i][1])
else:
return False
return True
rects = [[4, 5], [5, 7], [4, 6]]
print(solve(rects))
ইনপুট
[[4, 5], [5, 7], [4, 6]]
আউটপুট
True