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

পাইথনে সমীকরণের সর্বোচ্চ মান খুঁজে বের করার প্রোগ্রাম


মান লিজিয়ে আমাদের একটি অ্যারে আছে points যাতে ২D প্লেনের কোঅর্ডিনেট পয়েন্টগুলো রয়েছে, সেগুলো x-ভ্যালু অনুযায়ী সর্টেড, যেখানে points[i] = (x_i, y_i) এবং x_i < x_j সব 1 <= i < j <= points এর জন্য। আরেকটি মান আছে k। আমাদের সমীকরণ y_i + y_j + |x_i - x_j| এর সর্বোচ্চ মান বের করতে হবে যেখানে |x_i - x_j| <= k এবং 1 <= i < j <= points।

যেমন, ইনপুট হলে points = [[2,4],[3,1],[6,11],[7,-9]] এবং k = 1, তবে আউটপুট হবে 6 কারণ প্রথম দুটি পয়েন্ট শর্ত |xi - xj| <= 1 পূরণ করে এবং সমীকরণের মান হয় 4 + 1 + |2 - 3| = 6। তৃতীয় ও চতুর্থ পয়েন্টও শর্ত পূরণ করে এবং মান দেয় 11 + (-9) + |6 - 7| = 3, তাই সর্বোচ্চ হল ৬।

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

  • left := 0, right := 1

  • max_value := -inf

  • right < len(points) থাকা পর্যন্ত:

    • (xl, yl) := points[left]

    • (xr, yr) := points[right]

    • diff := |xr - xl|

    • যদি left == right হয়, তবে right := right + 1

    • অন্যথায় যদি diff <= k হয়, তবে:

      • m := yl + yr + diff

      • max_value := max(max_value, m)

      • যদি yl >= yr - diff হয়, তবে right := right + 1

      • অন্যথায়, left := left + 1

    • অন্যথায়, left := left + 1

  • max_value রিটার্ন করুন।

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন:

def solve(points, k):
    left, right = 0, 1
    max_value = float('-inf')
    while right < len(points):
        xl, yl = points[left]
        xr, yr = points[right]
        diff = abs(xr - xl)
        if left == right:
            right += 1
        elif diff <= k:
            m = yl + yr + diff
            max_value = max(max_value, m)
            if yl >= yr - diff:
                right += 1
            else:
                left += 1
        else:
            left += 1
    return max_value

points = [[2,4],[3,1],[6,11],[7,-9]]
k = 1
print(solve(points, k))

ইনপুট

[[2,4],[3,1],[6,11],[7,-9]], 1

আউটপুট

6

  1. পাইথনে পলিগনের ক্ষেত্রফল বের করার প্রোগ্রাম

  2. পাইথনে পলিগনের পরিসীমা বের করার প্রোগ্রাম

  3. Python-এ ডায়реक्टেড গ্রাফে সর্বোচ্চ রঙ মান বের করার প্রোগ্রাম

  4. পাইথনে অ্যারে থেকে সর্বোচ্চ এলিমেন্ট বের করা