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

दो क्षेत्रों की जांच करने के लिए कार्यक्रम कभी भी पायथन में एक 3 डी अंतरिक्ष में तेजी से या नहीं मिल सकता है

मान लीजिए कि दो गोले हैं जिनकी त्रिज्या मान r1 और r2 हैं। वे (x1, y1, z1) और (x2, y2, z2) निर्देशांकों पर हैं। और उनके त्वरण मान दिए गए हैं जैसे (ax1, ay1, az1) और (ax2, ay2, az2)। हमें यह जांचना होगा कि क्या ये दो गोले कभी 3D स्थान पर मिलेंगे, यदि वे दिए गए त्वरण के साथ चलते हैं या नहीं।

इसलिए, यदि इनपुट r1 =1 r2 =2 pos1 =(0, 0, 0) acc1 =(100,0,0) pos2 =(4, 0, 0) acc2 =(0,0,0) जैसा है, तब आउटपुट ट्रू होगा, क्योंकि दूसरे गोले में कोई त्वरण नहीं है, इसलिए यह गति नहीं करेगा, लेकिन पहले वाला x दिशा में आगे बढ़ेगा ताकि वे टकराएं।

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

  • px :=pos1[0] - pos2[0]
  • py :=pos1[1] - pos2[1]
  • pz :=pos1[2] - pos2[2]
  • कुल्हाड़ी:=acc1[0] - acc2[0]
  • अय:=acc1[1] - acc2[1]
  • az :=acc1[2] - acc2[2]
  • दा:=कुल्हाड़ी * कुल्हाड़ी + अय * अय + अज़ * अज़
  • dp :=px * px + py * py + pz * pz
  • सह :=कुल्हाड़ी * px + ay * py + az * pz
  • x :=0.0
  • यदि दा 0 के समान नहीं है, तो
    • x :=- सह / दा
  • x :=अधिकतम x, 0
  • dis :=वर्गमूल (da * x * x + 2 * co * x + dp)
  • यदि डिस −=r1 + r2, तो
    • सही लौटें
  • अन्यथा झूठी वापसी

उदाहरण

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

def solve(r1, r2, pos1, acc1, pos2, acc2):
   px, py, pz = pos1[0] - pos2[0], pos1[1] - pos2[1], pos1[2] - pos2[2]
   ax, ay, az = acc1[0] - acc2[0], acc1[1] - acc2[1], acc1[2] - acc2[2]
   da = (ax * ax + ay * ay + az * az)
   dp = (px * px + py * py + pz * pz)
   co = (ax * px + ay * py + az * pz)

   x = 0.0
   if da != 0:
      x = - co / da
   x = max(x, 0)
   dis = (da * x * x + 2 * co * x + dp) ** 0.5
   if dis <= r1 + r2:
      return True
   else:
      return False

r1 = 1
r2 = 2
pos1 = (0, 0, 0)
acc1 = (100,0,0)
pos2 = (4, 0, 0)
acc2 = (0,0,0)
print(solve(r1, r2, pos1, acc1, pos2, acc2))

इनपुट

1, 2, (0, 0, 0), (100,0,0), (4, 0, 0), (0,0,0)

आउटपुट

False

  1. पायथन में नोड्स की अदला-बदली से दो पेड़ बन सकते हैं या नहीं, इसकी जाँच करने के लिए कार्यक्रम

    मान लीजिए कि हमारे पास दो पेड़ हैं, हमें यह जांचना होगा कि क्या हम किसी भी नोड के बाएँ और दाएँ सबट्री को कितनी भी बार स्वैप करके पहले पेड़ को दूसरे में बदल सकते हैं। तो, अगर इनपुट पसंद है तो आउटपुट सही होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - que1 :=शुरुआत में root0 वाली एक कतार

  1. पायथन में दो आयताकार ओवरलैप या नहीं की जाँच करने का कार्यक्रम

    मान लीजिए कि हमारे पास एक आयत है जिसे चार तत्वों [x1, y1, x2, y2] के साथ एक सूची के रूप में दर्शाया गया है, जहां (x1, y1) इसके निचले-बाएं कोने के निर्देशांक हैं, और (x2, y2) के निर्देशांक हैं इसका स्टॉप-राइट कॉर्नर। दो आयतें ओवरलैप करती हैं जब उनके चौराहे का क्षेत्र सकारात्मक होता है। इसलिए, दो आयते

  1. एक स्ट्रिंग के दो भागों की जाँच करने के लिए प्रोग्राम पैलिंड्रोम हैं या पायथन में नहीं हैं

    मान लीजिए कि हमारे पास समान लंबाई के दो तार S और T हैं, हमें यह जांचना है कि क्या दोनों तारों को एक समान बिंदु पर काटना संभव है ताकि S का पहला भाग और T का दूसरा भाग एक पैलिंड्रोम बना सके। इसलिए, यदि इनपुट एस =कैट टी =पीएसी जैसा है, तो आउटपुट ट्रू होगा, जैसे कि अगर हम स्ट्रिंग्स को सी + एट और डी + ए