কম্পিউটার

পাইথন ব্যবহার করে একই x বা y স্থানাঙ্ক আছে এমন নিকটতম বিন্দু খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের একটি বিন্যাসে দেওয়া পয়েন্টের একটি সেট আছে যার নাম pts। আমাদের আরও একটি বিন্দু (x, y) রয়েছে যা আমাদের বর্তমান অবস্থান। আমরা একটি বৈধ বিন্দুকে সংজ্ঞায়িত করছি, একটি বিন্দু যা আমাদের বর্তমান বিন্দুর মতো একই x-অর্ডিনেট বা একই y-সমন্বয় ভাগ করে। আমাদের বর্তমান অবস্থান (x, y) থেকে ক্ষুদ্রতম ম্যানহাটান দূরত্ব সহ বৈধ বিন্দুর সূচকটি ফেরত দিতে হবে। যদি একাধিক পয়েন্ট থাকে, তাহলে সবচেয়ে ছোট সূচক সহ বৈধ পয়েন্টটি ফেরত দিন। (দ্রষ্টব্য:দুটি বিন্দু (a, b) এবং (p, q) এর মধ্যে ম্যানহাটনের দূরত্ব হল |a - p| + |b - q|।

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

পাইথন ব্যবহার করে একই x বা y স্থানাঙ্ক আছে এমন নিকটতম বিন্দু খুঁজে বের করার প্রোগ্রাম

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • x, y :=pt

  • idx :=-1

  • ক্ষুদ্রতম :=অসীম

  • প্রতিটি p এর জন্য pts, করুন

    • যদি p[0] x এর মত হয় অথবা p[1] y এর মত হয়, তাহলে

      • dist :=|x - p[0]| + |y - p[1]|

      • যদি dist <সবচেয়ে ছোট, তাহলে

        • idx :=p এর index in pts

        • ক্ষুদ্রতম :=dist

      • অন্যথায় যখন দূরত্ব সবচেয়ে ছোট হিসাবে একই হয়, তখন

        • যদি p এর সূচী pts

          • idx :=p এর index in pts

          • ক্ষুদ্রতম :=dist

  • রিটার্ন আইডিএক্স

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

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. পাইথন ব্যবহার করে দীর্ঘতম প্যালিনড্রোমিক পরবর্তী দৈর্ঘ্য খুঁজে বের করার জন্য প্রোগ্রাম

  2. পাইথন ব্যবহার করে বাইনারি ট্রিতে ডানদিকে নোড খুঁজে বের করার জন্য প্রোগ্রাম

  3. পাইথন ব্যবহার করে একটি অ্যারে গেমের বিজয়ী খুঁজে বের করার প্রোগ্রাম

  4. পাইথন ব্যবহার করে একই লেবেল সহ সাব-ট্রিতে নোডের সংখ্যা খুঁজে বের করার প্রোগ্রাম