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

चार बिंदु खोजें जैसे कि वे एक वर्ग बनाते हैं जिसकी भुजाएँ पायथन में x और y कुल्हाड़ियों के समानांतर होती हैं

मान लीजिए कि हमारे पास n अंक हैं; हमें चार बिंदु खोजने होंगे ताकि वे एक वर्ग उत्पन्न कर सकें जिसकी भुजाएँ x और y कुल्हाड़ियों के समानांतर हों अन्यथा "संभव नहीं" लौटते हैं यदि हम एक से अधिक वर्ग पा सकते हैं तो वह चुनें जिसका क्षेत्रफल अधिकतम है।

इसलिए, यदि इनपुट n =6 की तरह है, तो अंक =[(2, 2), (5, 5), (4, 5), (5, 4), (2, 5), (5, 2)] , तो आउटपुट 3 होगा, अंक हैं (2, 2) (5, 2) (2, 5) (5, 5)

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • my_map :=एक नया नक्शा

  • मेरे लिए 0 से n की सीमा में, करें

    • my_map[(अंक [i,0], अंक [i,1])] =my_map। [(अंक [i,0], अंक [i,1]], 0) + 1

  • पक्ष :=-1

  • x :=-1

  • वाई:=-1

  • मेरे लिए 0 से n की सीमा में, करें

    • my_map [अंक [i, 0], अंक [i, 1]]:=my_map [अंक [i, 0], अंक [i, 1]] - 1

    • j के लिए 0 से n की सीमा में, करें

      • my_map[points[j, 0], points[j, 1]]:=my_map[points[j, 0], points[j, 1]] - 1

      • अगर (मैं जे के समान नहीं है और (अंक [i,0] - अंक [जे, 0]) समान है (अंक [i,1]- अंक [जे, 1])), तो

        • अगर my_map[(points[i,0], points[j, 1])]> 0 and my_map[(points[j,0], points[i,1])]> 0, तब

          • अगर (पक्ष <| अंक [i, 0] - अंक [जे, 0] | या (पक्ष | अंक [i, 0] के समान है - अंक [जे, 0] | और ((अंक [i,0] * अंक [i,0] + अंक [i,1] * अंक [i,1]) <(x * x + y * y))) -

            • एक्स:=अंक [i, 0]

            • y:=अंक[i, 1]

            • साइड :=|points[i,0] - पॉइंट्स[j,0]|

      • my_map [अंक [जे, 0], अंक [जे, 1]]:=my_map [अंक [जे, 0], अंक [जे, 1]] + 1

    • my_map [अंक [i, 0], अंक [i, 1]]:=my_map [अंक [i, 0], अंक [i, 1]] + 1

  • यदि भुजा -1 के समान नहीं है, तो

    • डिस्प्ले साइड

    • डिस्प्ले पॉइंट (x,y), (x+side, y), (x,y + side), (x+side, y+side)

  • अन्यथा,

    • "ऐसा कोई वर्ग नहीं" प्रदर्शित करें

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

def get_square_points(points,n):
   my_map = dict()
   for i in range(n):
      my_map[(points[i][0], points[i][1])] = my_map.get((points[i][0], points[i][1]), 0) + 1
   side = -1
   x = -1
   y = -1
   for i in range(n):
      my_map[(points[i][0], points[i][1])]-=1
      for j in range(n):
         my_map[(points[j][0], points[j][1])]-=1
            if (i != j and (points[i][0]-points[j][0]) == (points[i][1]-points[j][1])):
               if (my_map[(points[i][0], points[j][1])] > 0 and my_map[(points[j][0], points[i][1])] > 0):
                  if (side < abs(points[i][0] - points[j][0]) or (side == abs(points[i][0] - points[j][0]) and ((points[i][0] * points[i][0] + points[i][1] * points[i][1]) < (x * x + y * y)))):
                     x = points[i][0]
                     y = points[i][1]
                     side = abs(points[i][0] - points[j][0])
            my_map[(points[j][0], points[j][1])] += 1
         my_map[(points[i][0], points[i][1])] += 1
      if (side != -1):
         print("Side:", side)
         print("Points:", (x,y), (x+side, y), (x,y + side), (x+side, y+side))
      else:
         print("No such square")
n = 6
points=[(2, 2), (5, 5), (4, 5), (5, 4), (2, 5), (5, 2)]
get_square_points(points, n)

इनपुट

6, [(2, 2), (5, 5), (4, 5), (5, 4), (2, 5), (5, 2)]

आउटपुट

Side: 3 Points: (2, 2) (5, 2) (2, 5) (5, 5)

  1. एक सरणी में एक तत्व खोजें जैसे कि तत्व पायथन में एक सख्ती से घटते और बढ़ते क्रम का निर्माण करते हैं

    मान लीजिए कि हमारे पास सकारात्मक संख्याओं की एक सरणी है; हमें एक बिंदु/वस्तु की जांच करनी होती है, जहां तक ​​आइटम सख्ती से घटते अनुक्रम को पहले सख्ती से बढ़ते पूर्णांक के अनुक्रम के बाद बनाते हैं। ये निम्नलिखित गुण हैं:हमें यह ध्यान रखना होगा कि अनुक्रम न्यूनतम लंबाई 2 का होना चाहिए साथ ही, हमने इस

  1. एक सकारात्मक संख्या एम खोजें जैसे कि जीसीडी (एन ^ एम, एन एंड एम) पायथन में अधिकतम है

    मान लीजिए कि हमारे पास एक संख्या एन है, हमें एक सकारात्मक संख्या एम खोजना है जैसे कि जीसीडी (एन ^ एम, एन एंड एम) जितना संभव हो उतना बड़ा हो और एम <एन। हम इस प्रकार प्राप्त सबसे बड़ा gcd भी लौटा देंगे। तो, अगर इनपुट 20 की तरह है, तो आउटपुट 31 होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - य

  1. पायथन में अभिकथन क्या हैं और उन्हें कैसे किया जाता है?

    एक अभिकथन एक विवेक-परीक्षण होता है जब आप किसी कार्यक्रम के अपने परीक्षण के साथ कर लेते हैं। एक अभिकथन एक बढ़ा-चढ़ाकर बयान के समान है (या अधिक सटीक होने के लिए, एक बढ़ा-चढ़ाकर बयान)। एक अभिव्यक्ति का परीक्षण किया जाता है, और यदि परिणाम गलत निकला, तो एक अपवाद उठाया जाता है। अभिकथन कथन का उपयोग करके अ