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

পাইথনে একই x বা y কোঅর্ডিনেট वाले নিকটতম পয়েন্ট খুঁজে বের করা


একটি pts পয়েন্টের অ্যারে এবং একটি বর্তমান লোকেশন (x, y) দেওয়া আছে। একটি পয়েন্ট ভ্যালিড হবে যদি তার x-কোঅর্ডিনেট বা y-কোঅর্ডিনেট বর্তমান লোকেশনের সাথে মিলে। সবচেয়ে কম ম্যানহ্যাটান দূরত্ব (|a-p| + |b-q|) वाले ভ্যালিড পয়েন্টের ইনডেক্স ফেরত দিন। একাধিক হলে ন্যূনতম ইনডেক্স ফেরত দিন।

যেমন, pts = [(1,2),(3,1),(3,4),(2,3),(4,4)], pt = (2,4) হলে আউটপুট ২। কারণ (3,4) এবং (2,3) দুটোই নিকটতম, কিন্তু (3,4)-এর ইনডেক্স ছোট।

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

  • x, y := pt
  • idx := -1, smallest := অসীম
  • pts-এর প্রতিটি p এর জন্য:
    • যদি p[0] == x বা p[1] == y হয়:
      • dist := |x - p[0]| + |y - p[1]|
      • যদি dist < smallest হয়, তবে idx := p-এর ইনডেক্স, smallest := dist
      • অন্যথায় যদি dist == smallest হয় এবং p-এর ইনডেক্স < idx হয়, তবে idx আপডেট করুন।
  • idx ফেরত দিন।

উদাহরণ

def solve(pts, pt):
    x, y = pt
    idx = -1
    smallest = float("inf")
    for p in pts:
        if p[0] == x or p[1] == y:
            dist = abs(x - p[0]) + abs(y - p[1])
            if dist < smallest:
                idx = pts.index(p)
                smallest = dist
            elif dist == smallest:
                if pts.index(p) < idx:
                    idx = pts.index(p)
                    smallest = dist
    return idx

pts = [(1,2),(3,1),(3,4),(2,3),(4,4)]
pt = (2,4)
print(solve(pts, pt))

ইনপুট

[(1,2),(3,1),(3,4),(2,3),(4,4)], (2,4)

আউটপুট

2

  1. Python দিয়ে সর্বোচ্চ দৈর্ঘ্যের প্যালিনড্রোমিক সাবসিকোয়েন্স বের করার প্রোগ্রাম

  2. Python দিয়ে বাইনারি ট্রিতে একটি নোডের ডানে অবস্থিত নোড বের করার প্রোগ্রাম

  3. Python দিয়ে অ্যারে গেমের বিজয়ী বের করার প্রোগ্রাম

  4. Python দিয়ে একই লেবেল ওয়ালা সাব-ট্রি নোড সংখ্যা বের করার প্রোগ্রাম