अपनी स्थिति को त्रिपक्षीय करें


11

परिचय

कल्पना कीजिए कि आप एक दो आयामी कार्टेशियन विमान पर हैं और उस पर अपनी स्थिति निर्धारित करना चाहते हैं। आप उस विमान पर 3 बिंदु जानते हैं और उनमें से प्रत्येक के लिए आपकी दूरी। हालांकि आपकी स्थिति की गणना करना हमेशा संभव होता है, ऐसा करना आपके सिर में काफी कठिन होता है। तो आप उसके लिए एक कार्यक्रम लिखने का फैसला करते हैं।

चुनौती

3 बिंदुओं और उन्हें अपनी दूरी को देखते हुए, अपनी स्थिति के कॉर्डिनेट को आउटपुट करें।

  • इनपुट और आउटपुट किसी भी सुविधाजनक प्रारूप में हो सकते हैं, जिसमें वास्तविक संख्याओं के बजाय जटिल का उपयोग करना शामिल है। कृपया अपने उत्तर में स्पष्ट करें कि आप किस प्रारूप का उपयोग करते हैं।
  • आपको उनकी दूरी के साथ हमेशा 3 अलग-अलग बिंदु मिलेंगे।
  • निर्देशांक और दूरियां मनमानी परिशुद्धता के साथ तैरती रहेंगी। आपका आउटपुट 3 दशमलव स्थानों पर सही होना चाहिए। गोलाई आप पर निर्भर है। कृपया अपने उत्तर में स्पष्ट करें।
  • आप मान सकते हैं कि तीन बिंदु आपस में नहीं मिलते हैं, इसलिए हमेशा एक अनूठा समाधान होगा।
  • आपको समाधान को भंग करने की अनुमति नहीं है।
  • आप किसी भी ऐसे भवन का उपयोग नहीं कर सकते हैं जो इस विशेष समस्या का समाधान करता है। वेक्टर मानदंड, आदि के लिए निर्मित की अनुमति है, हालांकि।

आरंभ करने के संकेत:

उन 3 बिंदुओं में से प्रत्येक के चारों ओर एक चक्र के बारे में सोचें, जो आपकी त्रिज्या के रूप में आपकी दूरी है।

नियम

परीक्षण के मामलों

एक बिंदु के लिए इनपुट प्रारूप यहाँ है [[x,y],d]के साथ xऔर yनिर्देशांक जा रहा है और dइस मुद्दे पर दूरी जा रहा है। उन बिंदुओं में से 3 एक सूची में व्यवस्थित हैं। आउटपुट होगा xऔर फिर yएक सूची में होगा।

[[[१, २], १.४१४], [[१, १], २.२३६], [[२, २], १.०]] -> [२, ३]
[[[२४.२३४, -१३.९ ०२], ३१.४६], [[१२.३२४२, २३४.१२], २२ ९.९ ५३], [[२०83. ,३, ०.०५], २५.५ ]२]] -> [-1.234, 4.567]
[[[९ ,३.२३, -३२.२२१], १३ ९] ९ ०६६], [[-१२.१२३,-९ 9.००१], ९ ९ ०.५३]], [[-१.9६.९ २, ०], ९ १२.०]]]]> [[१२.३४५, १२.2.२३४]

आप इस पायथ कार्यक्रम के साथ अतिरिक्त परीक्षण मामले उत्पन्न कर सकते हैं । स्थान इनपुट की पहली पंक्ति पर जाता है और 3 अंक निम्नलिखित 3 लाइनों पर हैं।

हैप्पी कोडिंग!


क्योंकि इसे दो-आयामी कार्टेशियन विमान पर फिट करने की आवश्यकता है, कोड को यथासंभव छोटा होना चाहिए।
wizzwizz4

आप स्पष्ट रूप से अनुभवहीन परिणामों का उपयोग कर रहे हैं जो अभी भी अस्पष्टता का परिणाम हो सकता है, हमें इसे कैसे संभालना चाहिए?
दोष

@flawr बस यह मान लें कि सभी परिणाम सटीक सटीक अनन्य हैं। आपका कार्यक्रम बहुत कम दशमलव स्थानों वाले मामलों के लिए काम करना चाहिए, अस्पष्टता के बारे में चिंता न करें। जब मैं घर जाऊंगा तो मैं चुनौती को साफ करूंगा।
डेनकर

चूंकि स्वीकृत उत्तर प्रभावी रूप से सिर्फ एक रेखांकन कैलकुलेटर है, मैं उल्लेख करूंगा कि टीआई-बेसिक (68k संस्करण) में 96-बाइट समाधान है। स्पष्ट करने के लिए, solve(तीन वृत्त समीकरण दिए गए हैं) समस्या का तुच्छ वर्णन करते हैं? मैंने सोचा था कि यह होगा, लेकिन अगर आप ऐसी चीजों के साथ ठीक हैं तो मैं इसे आगे बढ़ाऊंगा।
फॉक्स

जवाबों:


4

डेसमोस, 122 बाइट्स

ऑनलाइन उपयोग । प्रत्येक समीकरण को एक समीकरण बॉक्स में कॉपी + पेस्ट करें, प्रत्येक बॉक्स के लिए "सभी जोड़ें" पर क्लिक करें, फिर चौराहे के बिंदु पर क्लिक करें, फिर प्रत्येक मान में उचित रूप में दर्ज करें। में से प्रत्येक के A, B, और Cअंक के लिए दूरी हैं (a,b), (c,d), और (E,f), क्रमशः। मान में एक वर्गमूल प्राप्त करने के लिए, sqrtतब बॉक्स में मान लिखें ।

\left(x-a\right)^2+\left(y-b\right)^2=AA
\left(x-c\right)^2+\left(y-d\right)^2=BB
\left(x-E\right)^2+\left(y-f\right)^2=CC

पहले परीक्षण मामले की जाँच करें

या आप यहां देख सकते हैं:

हलकों!


यह बहुत अच्छा लग रहा है, लेकिन क्या यह प्रोग्रामिंग भाषाओं के लिए हमारे मानदंडों को पूरा करता है? यह मेरे लिए एक प्लॉटिंग टूल की तरह लगता है, इसने कभी भी इसे इस्तेमाल नहीं किया, इसलिए मैं गलत हो सकता हूं।
डेन्कर


2
ठीक है, मेरा उत्थान है तब :)
Denker

मैं बाइट काउंट का विवाद करता हूं। आप मुक्त करने के लिए चौराहे के बिंदु पर क्लिक करते हैं, जो सही नहीं लगता है।
२०:०६

@lirtosiast का तर्क है कि बिंदु हमेशा परिभाषा और आगे राज्य द्वारा होता है कि ओपी ने कहा कि इस तरह की बातचीत ठीक थी। यदि, हालांकि, आप मानते हैं कि कुछ जुर्माना होना चाहिए, तो मैं सुझाव के लिए खुला हूं।
कॉनर ओ'ब्रायन

4

सी, 362 348 345 बाइट्स

इनपुट को स्टड पर अंतरिक्ष-पृथक फ्लोट्स के अनुक्रम के रूप में दिया गया है x1 y1 d1 x2 y2 d2 x3 y3 d3:। आउटपुट स्टडआउट पर समान है x y:।

#define F"%f "
#define G float
#define T(x)(b.x*b.x-a.x*a.x)
typedef struct{G a;G b;G c;}C;G f(C a,C b,G*c){G x=b.b-a.b;*c=(T(a)+T(b)-T(c))/x/2;return(a.a-b.a)/x;}main(){C a,b,c;G x,y,z,t,m;scanf(F F F F F F F F F,&a.a,&a.b,&a.c,&b.a,&b.b,&b.c,&c.a,&c.b,&c.c);x=f(a,a.b==b.b?c:b,&y);z=f(b.b==c.b?a:b,c,&t);m=t-y;m/=x-z;printf(F F"\n",m,x*m+y);}

Cएक संरचना प्रकार है जिसके सदस्य एक एक्स-समन्वय a, एक वाई-समन्वय bऔर एक दूरी (त्रिज्या) हैं c। फ़ंक्शन fदो Cसंरचनाओं और एक संकेतक को एक फ्लोट पर ले जाता है, और उस रेखा को निर्धारित करता है जिस पर C(सर्कल) प्रतिच्छेद होता है। इस रेखा के y- अवरोधन को पॉइंट-इन फ्लोट में रखा गया है, और ढलान वापस आ गया है।

कार्यक्रम fदो जोड़े हलकों को बुलाता है , फिर उत्पादित लाइनों के प्रतिच्छेदन को निर्धारित करता है।


चूँकि हमने स्पष्ट किया है कि इनपुट समतुल्य नहीं हैं, इसलिए निर्मित लाइनें fसमानांतर नहीं होंगी। परीक्षण यह सुनिश्चित करने के लिए हैं कि वे भी ऊर्ध्वाधर नहीं हैं, क्योंकि मैं ढलान-अवरोधन रूप का उपयोग कर रहा हूं। इस तरह, हमेशा एक ही उत्तर होता है।
फॉक्स

2

अजगर - 172

प्रपत्र (x, y, d) के tuples की सूची के रूप में इनपुट लेता है। मुझे पता है अगर आप इसे आगे गोल्फ के लिए एक रास्ता देखते हैं, मुझे लगता है कि वहाँ होना चाहिए, लेकिन मैं इसे समझ नहीं सकता!

import numpy as N
def L(P):
    Z=[p[2]**2-p[0]**2-p[1]**2 for p in P];return N.linalg.solve([[P[i][0]-P[0][0],P[i][1]-P[0][1]]for i in[1,2]],[(Z[0]-Z[i])*0.5 for i in [1,2]])

आप यहां कुछ व्हाट्सएप को छोड़ सकते हैं। उदाहरण के लिए कुछ -1 if 1 else 1बन सकता है -1if 1else 1। यह कोष्ठक के साथ भी काम करता है। कुछ स्थान ऐसे हैं जहां आप इसका लाभ उठा सकते हैं। इसके अलावा भी .5ऐसा ही है 0.5
डेनकर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.