Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन का उपयोग करके समान 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

  • smallest := अनंत

  • pts में प्रत्येक p के लिए, करें

    • यदि p[0], x के समान है या p[1], y के समान है, तो

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

      • यदि dist < smallest, तो

        • idx := pts में p का इंडेक्स

        • smallest := dist

      • अन्यथा जब dist, smallest के समान है, तो

        • यदि pts में p का इंडेक्स < idx, तो

          • idx := pts में p का इंडेक्स

          • smallest := dist

  • 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 से बाइनरी ट्री में दिए गए नोड के दाएं वाले नोड को कैसे ढूंढें? Python से बाइनरी ट्री में दिए गए नोड के दाएं वाले नोड को कैसे ढूंढें?

    लेवल ऑर्डर ट्रैवर्सल (BFS) से दिए गए नोड के उसी लेवल पर दाएं पड़ोसी नोड को ढूंढें। एल्गोरिदम क्यू से BFS, लेवल दर लेवल प्रोसेस करें। प्रत्येक लेवल के नोड्स को temp लिस्ट में स्टोर करें। अगर टारगेट नोड u मिले तो उसका इंडेक्स नोट करें। अगर इंडेक्स अंतिम है तो None रिटर्न (दाएं कोई नहीं)। अन्यथा temp[

  1. - Python से ऐरे गेम का विनर कैसे ढूंढें (k कंसेक्यूटिव विन्स)?

    ऐरे के पहले दो एलिमेंट्स कंपेयर करें: बड़ा इंडेक्स 0 पर रहता है, छोटा अंत में जाता है। k कंसेक्यूटिव विन्स वाला विनर ढूंढें। एल्गोरिदम prev = arr[0], count = 0। i=1 से n-1 तक: अगर arr[i] तो count++, वरना prev = arr[i], count = 1। अगर count == k तो prev रिटर्न। लूप खत्म होने पर prev रिटर्न (मैक्स ए

  1. Python से सबट्री में समान लेबल वाले नोड्स की संख्या कैसे ढूंढें? Python से सबट्री में समान लेबल वाले नोड्स की संख्या कैसे ढूंढें?

    रूटेड ट्री में प्रत्येक नोड के लिए, उसके सबट्री में उसी लेबल वाले नोड्स की संख्या ढूंढें (लेबल्स लोअरकेस लेटर्स)। एल्गोरिदम एज लिस्ट से ग्राफ बनाएं (अनडायरेक्टेड)। लेबल मैप बनाएं। रिकर्सिव DFS r(ni): चिल्ड्रन के काउंटर्स मर्ज करें, अपना लेबल जोड़ें, R[ni] = count[label]। पैरेंट लिंक हटाकर साइकिल अव