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

পাইথনে রেক্ট্যাঙ্গেলগুলো ৯০ ডিগ্রি ঘুরিয়ে ব্রেডথ (breadth) অনুযায়ী নন-এসেন্ডিং অর্ডারে সাজানো সম্ভব কিনা তা যাচাই করা

মান লিজিয়ে আমাদের একটি রেক্ট্যাঙ্গেল (rectangle) লিস্ট আছে যেগুলো দৈর্ঘ্য (length) এবং ব্রেডথ (breadth) দিয়ে রিপ্রেজেন্ট করা হয়েছে। আমরা যেকোনো রেক্ট্যাঙ্গেল ৯০ ডিগ্রি ঘুরিয়ে দিতে পারি, ঘুরালে ব্রেডথ দৈর্ঘ্য হবে এবং দৈর্ঘ্য ব্রেডথ। আমাদের যাচাই করতে হবে রেক্ট্যাঙ্গেলগুলো ব্রেডথ অনুযায়ী নন-ইনক্রিজিং অর্ডারে (non-increasing order) সাজানো সম্ভব কিনা।

যেমন, ইনপুট যদি rects = [[4, 5], [5, 7], [4, 6]] হয়, তবে আউটপুট হবে True কারণ ব্রেডথগুলো হল [5,7,6] এখন যদি শেষ দুটি রেক্ট্যাঙ্গেল ঘুরিয়ে দিই তবে ব্রেডথগুলো হবে [5,5,4] যা নন-ইনক্রিজিং অর্ডারে।

সমাধানের ধাপসমূহ

  • m := 99999
  • i ০ থেকে 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
  1. পাইথনে ভেক্টর A-কে রোটেট এবং ভেক্টর C যোগ করে ভেক্টর B-তে পৌঁছানো সম্ভব কিনা তা যাচাই করা

  2. পাইথনে স্ট্রিংয়ের ক্যারেক্টার প্যাটার্ন অনুসরণ করছে কিনা

  3. পাইথনে যাচাই করুন তিনটি কোণ দিয়ে ধনাত্মক ক্ষেত্রফলের ত্রিভুজ সম্ভব কিনা

  4. পাইথন - ডিকশনারি খালি কিনা যাচাই করা