अगर 4 अंक एक वर्ग बनाते हैं तो कैसे जांचें?


35

मान लें कि मेरे 4 अंक हैं (वे 2-आयाम हैं), जो एक दूसरे से अलग हैं, और मैं जानना चाहता हूं कि क्या वे एक वर्ग बनाते हैं। यह कैसे करना है? (प्रक्रिया को यथासंभव सरल होने दें।)


3
मुझे लगता है कि आपको घुमाए गए वर्गों के लिए खाते की आवश्यकता होगी?
मार्टिज़न पीटर्स

क्या आपको बिंदुओं के क्रम के बारे में जानकारी है? यानी आप बता सकते हैं कि क्या दो बिंदु आसन्न हैं, या एक विकर्ण बनाते हैं? (इस जानकारी का उपयोग प्रक्रिया को सरल बनाने के लिए किया जा सकता है)
डैनियल बी

1
@DanielB कोई अन्य जानकारी नहीं। यह वैसा ही है जैसे मेरे पास एक श्वेत पत्र है और उस पर 4 अंक बेतरतीब ढंग से आकर्षित करते हैं। तब मैं जानना चाहता हूं कि क्या वे एक वर्ग बनाते हैं।
मार्शल

5
विशेष रूप से यदि अंकों को फ्लोटिंग पॉइंट नंबरों के रूप में दर्शाया जाता है, तो नीचे दिए गए किसी भी तुलनात्मक रूप में "सहिष्णुता" की भावना को शामिल करना उपयोगी है। सटीक समतुल्यता जाँच फ़्लोटिंग पॉइंट संचालन के परिणामों के लिए विफल हो सकती है, तब भी जब हम मनुष्य उन्हें "पर्याप्त रूप से बंद" मानेंगे।
स्टेफान ए। टेरे न।

यह एक होमवर्क प्रश्न की तरह खुशबू आ रही है। ऐसा नहीं है कि इसके साथ कुछ गलत है। : / whathaveyoutried.com
जिम जी।

जवाबों:


65

यह मानते हुए कि आपके पास जो भी निर्देशांक प्रणाली है, उसके विरुद्ध आपका वर्ग घुमाया जा सकता है, आप अपने चार बिंदुओं में X और Y मानों की पुनरावृत्ति होने पर भरोसा नहीं कर सकते।

आप क्या कर सकते हैं चार अंकों में से प्रत्येक के बीच की दूरी की गणना करें। यदि आपको निम्नलिखित सही लगता है, तो आपके पास एक वर्ग है:

  1. A और C, दो बिंदु हैं, जो दूरी पर हैं एक दूसरे से x , और दो अन्य बिंदु हैं, B और D कहते हैं जो एक दूसरे से दूरी x भी हैं ।

  2. प्रत्येक बिंदु {ए, बी, सी, डी} दो बिंदुओं से एक समान दूरी है जो x दूर नहीं हैं । अर्थात: यदि A x है सी से दूर है, तो यह हो जाएगा जेड दोनों बी और डी से दूर

संयोग से, दूरी z को SQRT (( x ^ 2) / 2) होना चाहिए, लेकिन आपको इसकी पुष्टि करने की आवश्यकता नहीं है। यदि परिस्थितियां 1 और 2 सत्य हैं तो आपके पास एक वर्ग है। नोट: कुछ लोग वर्गमूल की अक्षमता के बारे में चिंतित हैं। मैंने ऐसा नहीं कहा यह गणना करनी चाहिए , मैंने सिर्फ इतना कहा कि अगर आपने किया तो आपको एक पूर्वानुमानित परिणाम मिलेगा!

वर्ग नियमों का चित्रण

काम के नंगे न्यूनतम जो आपको करने की आवश्यकता होगी वह एक बिंदु चुनने के लिए होगा, ए कहें और अन्य तीन बिंदुओं में से प्रत्येक के लिए दूरी की गणना करें। यदि आप पा सकते हैं कि A एक बिंदु और z से x है दो अन्य बिंदुओं से है, तो आपको बस उन दो अन्य बिंदुओं को एक दूसरे के खिलाफ जांचने की आवश्यकता है। यदि वे एक दूसरे से x भी हैं तो आपके पास एक वर्ग है। अर्थात:

  • एबी = जेड
  • एसी = एक्स
  • AD = z

AB = AD के बाद से, BD जांचें:

  • बीडी = एक्स

बस सुनिश्चित करने के लिए, आपको अन्य पक्षों की जांच करने की आवश्यकता है: बीसी और सीडी।

  • बीसी = जेड
  • सीडी = जेड

चूंकि AC = BD और चूंकि AB = AD = BC = CD है, इसलिए यह एक वर्ग है।

रास्ते में, यदि आपको दो से अधिक अलग-अलग किनारे मिलते हैं, तो आकृति चौकोर नहीं हो सकती है, इसलिए आप देखना बंद कर सकते हैं।


कार्य उदाहरण कार्यान्वयन

मैंने jsfiddle ( यहां देखें ) पर एक काम करने का उदाहरण बनाया है । एल्गोरिथ्म की मेरी व्याख्या में, मैं ए, बी, सी और डी का उपयोग करता हूं। वे मनमाने अंक उदाहरण के माध्यम से चलने के लिए एक निश्चित क्रम में होते हैं। एल्गोरिथ्म अंक, एक अलग क्रम में हैं फिर भी, यहां तक कि अगर काम करता है उदाहरण जरूरी उन बिंदुओं एक अलग क्रम में हैं, तो काम नहीं करता।


धन्यवाद: इस जवाब को बेहतर बनाने के लिए उपयोगी टिप्पणियों के लिए मेशुई, ब्लरफ्ल, एमएसलेटर्स और बार्ट वैन इनगेन शेनौ।


19
आप इस प्रक्रिया को शॉर्ट-सर्किट कर सकते हैं और इस बात की चिंता नहीं कर सकते हैं कि उनके बीच की दूरी को मापने के द्वारा अंक का आदेश कैसे दिया जाता है और वे कितनी अनोखी दूरी पाते हैं, इसका ध्यान रखें। एक बार जब आप दो (जोएल के एक्स और जेड ) से अधिक हो जाते हैं, तो आंकड़ा एक वर्ग नहीं होता है।
Blrfl

3
एक और अनुकूलन दूरियों के बजाय वर्ग दूरी की तुलना करना होगा।
14

4
@ ब्लरफ्ल: आपका परीक्षण काम नहीं करता है। ABCD को AB = BC = CD = DA = 1, AC = 1 भी (लघु विकर्ण) के साथ एक हीरा होने दें, फिर AD ~ 1.7 (लंबे विकर्ण) / आपके पास केवल दो लंबाई x और z हैं, फिर भी आकृति एक वर्ग नहीं है ।
मसलक

2
@JoelBrown: विकर्ण AC = BD = x, भुजाओं AB = BC = AD = z और अंतिम पक्ष CD = y! = Z के साथ एक ट्रेपेज़ियम आकृति बनाना संभव है।
बार्ट वैन इनगेन शेनॉउ

2
पर्याप्त रूप से, ध्यान दें कि ओपी ने स्पष्ट रूप से 2 आयामों को कहा।
जोएल ब्राउन

24

चार में से तीन अंक उठाओ।

अगर अंक के बीच तीन वैक्टरों में से एक 90 डिग्री से घुमाए गए एक के बराबर है, तो यह जांच कर कि क्या यह सही समद्विबाहु त्रिभुज है।

यदि हां, तो वेक्टर के अलावा चौथे बिंदु की गणना करें और दिए गए चौथे बिंदु से तुलना करें।

ध्यान दें कि इसके लिए महंगी वर्ग जड़ों की आवश्यकता नहीं है, गुणा भी नहीं।


दो अच्छे उत्तरों में से एक। sqrtजब तक महत्वपूर्ण उपयोग न करें ! आपको पूर्णांक गणनाओं को एफपी से नीचा दिखाने की जरूरत नहीं है ... एफपी गणना की सटीकता को खराब करने के लिए नहीं।
क्फ्फ

धन्यवाद। एक अच्छी पहल।
5:48 बजे मार्शल

अब इसे करने का सही तरीका है। गुणन वास्तव में यहाँ की जरूरत नहीं है।
आते हैं

आपको कैसे पता चलेगा कि 2 वैक्टर अपने डॉट उत्पाद के बिना एक-दूसरे के लंबवत हैं जिसमें गुणन शामिल है?
पावन मंजुनाथ

1
(x, y) एक समकोण द्वारा घुमाया जाता है (-y, x) या (y, -x), इस पर निर्भर करता है कि आप क्रमशः सकारात्मक या नकारात्मक दिशा में घूमते हैं या नहीं।
Starblue

17

मुझे लगता है कि सबसे आसान समाधान निम्नलिखित है:

  • सबसे पहले, 4 बिंदुओं के केंद्र की गणना करें: center = (A + B + C + D)/4

  • फिर वेक्टर की गणना करें A - center। इसे रहने दोv := (x,y)

  • चलो v2वेक्टर हो v90 डिग्री तक घुमाया:v2 := (-y, x)

  • अब अन्य बिंदु होने चाहिए center - v, center + v2और center - v2

इस समाधान का लाभ यह है कि आपको वर्गाकार जड़ों का उपयोग नहीं करना है।


2
हाँ। यह सबसे अधिक समझ में आता है और शायद इसे लागू करने में सबसे आसान है।
एरिक जी

यह खंडों की वेक्टर समानता जैसा लगता है। क्या कोई इसे विस्तृत कर सकता है या साबित कर सकता है कि यह क्यों काम करता है?
vCillusion

यह विशेष रूप से मामले (0,0), (2,1), (3, -1), (1, -2) के लिए विफल रहता है - वर्ग अक्ष में संरेखित नहीं
vCillusion

1
यह इस मामले के लिए काम करता है। केंद्र बिंदु (1.5, -0.5) है, पहला बिंदु है (0, 0) और तीन अन्य बिंदु हैं (1.5, -0.5) + (1.5, -0.5) = (3, -1); (1.5, -0.5) + (0.5, 1.5) = (2, 1) और (1.5, -0.5) - (0.5, 1.5) = (1, -2) जिसका अर्थ है कि यह एक वर्ग है। प्रमाण है .. समरूपता?
२१:३६ पर आर्गेनर

1
"डिस्टेंस सॉल्यूशन" को चौकोर जड़ों की जरूरत होती है, लेकिन "स्क्वेर्ड डिस्टेंस सॉल्यूशन" की जरूरत होती है, जिसकी जरूरत किसी को नहीं होती। आपका अभी भी अधिक कुशल हो सकता है ...
maaartinus

5

मुझे क्षमा करें लेकिन कुछ उत्तर लागू नहीं होते हैं।

मामले के लिए आप 3 किनारों को मापते हैं (मान लें कि AB, AC और AD) यह पता लगाने के लिए कि दो का आकार समान है (मान लें कि AC और AD) और एक बड़ा है (मान लें कि AB कहते हैं)। फिर आप सीडी को मापने के लिए देखेंगे कि क्या यह एबी के समान आकार का है, और आप पाते हैं कि यह है। एक वर्ग के बजाय, आपके पास नीचे दी गई तस्वीर हो सकती है, और यह एक गलत समाधान बनाता है।

एक वर्ग नहीं ...

फिर आप कुछ अन्य समाधान आजमाते हैं: कम से कम एक बार सभी दूरियों को मापें: AB, AC, AD, BC, BD, CD। तब आप पाते हैं कि 4 तो बराबर हैं, और अन्य 2 भी आपस में बराबर हैं। लेकिन आपके पास नीचे की तरह एक तस्वीर हो सकती है:

और यह एक वर्ग भी नहीं है ...

इसलिए, वे उत्तर सही नहीं हैं, जो उन्हें प्राप्त उच्च उठाव के बावजूद हैं।

एक संभव समाधान: यदि दो समान उपाय समान बिंदु को नहीं जोड़ते हैं। तो: यदि AB और CD समान हैं, तो अन्य सभी संयोजन (AC, AD, BC, BD) भी समान हैं, आपके पास एक वर्ग है। यदि आपके पास एक ही बिंदु है जो सबसे बड़ी लंबाई बना रहा है (एबी और एसी सबसे बड़ा है, और सभी अन्य समान हैं), आपके पास ऊपर दी गई तस्वीरों में से एक है।


नहीं, उनके एल्गोरिथ्म ने कहा कि दूरी के 2 किनारों x एक बिंदु साझा नहीं करते हैं। लेकिन आप सी। साझा करते हैं। तो मान लीजिए कि एसी x है, तो BD आपके BC के बजाय एक और x होना चाहिए।
मार्शल 15

3

बता दें कि चार बिंदुओं में वैक्टर, बी, सी, डी का समन्वय है।

फिर उनके अंतरों को w = (ad), x = (ba), y = (cb), z = (dc) कहते हैं।

यदि आप 90-डिग्री-रोटेशन से w बना सकते हैं तो w ऑर्थोगोनल है। गणितीय रूप से 2-स्पेस में 90-डिग्री-रोटेशन-मैट्रिक्स है ((0, -1), (1, 0))। इस प्रकार, शर्त यह है कि क्या डब्ल्यू 90-डिग्री-घुमाया गया है, जिसके परिणामस्वरूप

(w_1 == -x_2 और w_2 == x_1)

यदि यह धारण करता है, तो आपको उस w == -y और x == -z, या की जाँच करनी होगी

((w_1 == -y_1 और w_2 == -_2) और (x_1 == -z_1 और x_2 == -z_2)

यदि वे तीन संबंध धारण करते हैं, तो, बी, सी, डी एक उन्मुख वर्ग बनाते हैं।


1
मुझे लगता है कि आयत आपकी शर्तों को पूरा कर सकती है, साथ ही साथ।
मार्शलशिप

नहीं, पहली स्थिति ऑर्थोगोनल से नहीं मिली, लेकिन समान रूप से लम्बे वैक्टर से नहीं।
मार्क सैल्ज़र

1
हाँ, मैं सिर्फ पहली याद आती है। लेकिन 4 अंक का आदेश नहीं दिया जाता है। इसलिए, हमें पुष्टि करने के लिए अधिक चरणों की आवश्यकता है।
15

हां ... यदि कोई चतुर विचार नहीं उठता है, तो एक बार एक लूप की आवश्यकता होती है। मुझे लगता है कि किसी व्यक्ति को w, x, y, z tuple के प्रत्येक संभव क्रम के लिए a, b, c, d, और प्रत्येक इनर लूप के प्रत्येक संभव क्रम से w, x, y, z की गणना करने के लिए बाहरी लूप की आवश्यकता है।
मार्क सैल्जर

2

स्टारब्ले द्वारा उत्तर के समान

चार में से कोई भी तीन अंक चुनें।

उनके बीच एक समकोण वर्कटेक्स की तलाश करें : यह जाँच कर कि क्या तीन वैक्टरों में से किसी दो का डॉट उत्पाद शून्य है। अगर नहीं मिला, तो वर्ग नहीं।

जांचें कि क्या इस कोण से सटे कोने सही कोण पर भी हैं। यदि नहीं, तो एक वर्ग नहीं।

जांचें कि क्या विकर्ण लंबवत हैं : यदि पहले और चौथे वर्टेक्स के बीच वैक्टर का डॉट उत्पाद और अन्य दो कोने (विकर्ण) शून्य हैं, तो इसका एक वर्ग है।


अच्छा विचार है, लेकिन आपको अभी भी यह जांचने की आवश्यकता है कि 4 वें शीर्ष अन्य बिंदुओं से सही दूरी पर है। आप केवल यह देखते हैं कि यह विकर्ण पर है।
starblue

@स्टारब्ल्यू राइट! अन्यथा यह पतंग बना सकता है। अपडेट किया गया।
अधिकतम

2

मुझे लगता है कि आप इसे सरल जोड़ और घटाव और न्यूनतम / अधिकतम ज्ञात कर सकते हैं। शर्तें (अन्य लोगों के आरेख से मेल खाती हैं):

  • उच्चतम y मान => A के साथ बिंदु
  • उच्चतम एक्स => बी
  • सबसे कम y => C
  • सबसे कम x => D

यदि 4 अंक केवल 2 x मान और 2 y मान साझा करते हैं, तो आपके पास एक स्तर वर्ग है।

अन्यथा, आपके पास एक वर्ग है यदि आपके बिंदु निम्नलिखित को संतुष्ट करते हैं:

  • कुल्हाड़ी + सीएक्स = बीएक्स + डीएक्स
  • अय + साइ = बाय + दय
  • अय - साइ = बीएक्स - डीएक्स

स्पष्टीकरण: लाइन सेगमेंट AC और BD को उनके मध्य बिंदु पर मिलना चाहिए। इस प्रकार (Ax + Cx) / 2 AC का मध्यबिंदु है और (Bx + Dx) / 2 BD का मध्यबिंदु है। मेरा पहला समीकरण पाने के लिए इस समीकरण के प्रत्येक पक्ष को 2 से गुणा करें। दूसरा समीकरण Y- मानों के लिए समान है। डायमंड-शेप्स (rhomboids) इन गुणों को संतुष्ट करेंगे, इसलिए आपको यह जांचने की आवश्यकता है कि आपके पास समान भुजाएँ हैं - कि चौड़ाई ऊँचाई के समान हो। वह तीसरा समीकरण है।


2

यहाँ छवि विवरण दर्ज करें

यहाँ कुछ अच्छे उत्तर हैं, लेकिन सबसे सरल दृष्टिकोण के लिए पूछा गया प्रश्न। मैंने इसे कुछ जल्दी सोचा और यह है कि मैं इसे कैसे करूंगा।

आप यह बता सकते हैं कि चार बिंदु एक वर्ग का प्रतिनिधित्व करते हैं (भले ही घुमाया गया हो), लेकिन चार बिंदुओं का औसत ज्ञात करना।

R = (A+B+C+D)/4

एक बार आपके पास औसत होने पर, प्रत्येक बिंदु और औसत के बीच की दूरी सभी चार बिंदुओं के लिए समान होगी।

if(dist(R,A) == dist(R,B) == dist(R,C) == dist(R,D) then
   print "Is Square"
else
   print "Is Not Square"

संपादित करें:

मेरी गलती। यदि फॉर्म पॉइंट एक सर्कल में होते हैं, तो यह आपको बताएगा। यदि आप अंकों के बीच की दूरी की भी जांच करते हैं, तो यह एक वर्ग होना चाहिए।

if(dist(R,A) == dist(R,B) == dist(R,C) == dist(R,D) AND
  (dist(A,B) == dist(B,C) == dist(C,D) == dist(A,D) then
   print "Is Square"
else
   print "Is Not Square"

यह मानता है कि ए, बी, सी, डी को पार नहीं करता है (जैसा कि एक वैध घुमावदार आदेश है)।


1

यह निर्धारित मानकों के अनुसार उत्तर नहीं है, लेकिन मुझे आशा है कि इससे मदद मिलेगी:

[नीचे दिए गए लिंक से कॉपी किया गया ताकि आपको लिंक खोलने की जरूरत न पड़े] पायथन 76 अक्षर

def S(A):c=sum(A)/4.0;return set(A)==set((A[0]-c)*1j**i+c for i in range(4))

फंक्शन एस अपने इनपुट (ए) के रूप में जटिल संख्याओं की एक सूची लेता है। यदि हम केंद्र के दोनों और एक वर्ग के एक कोने को जानते हैं, तो हम केंद्र बिंदु (c) के चारों ओर कोने 90,180 और 270 डिग्री को घुमाकर वर्ग का पुनर्निर्माण कर सकते हैं। उत्पत्ति के बारे में 90 डिग्री से जटिल विमान के रोटेशन पर बिंदु को i से गुणा करके किया जाता है। यदि हमारे मूल आकार और पुनर्निर्मित वर्ग में समान बिंदु हैं तो यह एक वर्ग होना चाहिए था।

इससे लिया गया था: यह निर्धारित करें कि 4 अंक एक वर्ग बनाते हैं

यदि आपको उत्तर पसंद है, तो मैं कहता हूं, उस व्यक्ति को धन्यवाद देने के लिए कुछ क्षण निकाल लें, या उस पृष्ठ पर उसका उत्तर दें।


1
आप यहां एल्गोरिथम को संक्षेप में प्रस्तुत कर सकते हैं। आप किसी अन्य SE साइट से लिंक कर रहे हैं, जो किसी अन्य साइट की ओर इशारा करने की तुलना में थोड़ा बेहतर है, लेकिन हम चाहते हैं कि उत्तर इस पृष्ठ पर हो , जहां प्रश्न पूछा जा रहा है। अब लोगों को यह जानने के लिए फिर से क्लिक करना होगा कि उत्तर क्या हो सकता है।
मार्टीजन पीटरर्स

0

मूल विचार (यह इस सवाल का जवाब देता है कि क्या मैं कुछ नया योगदान दे रहा था, जिसे मैंने जवाब देने के लिए क्लिक करने पर बॉट से पूछा था:

  • एक समभुज के साथ एक समभुज एक वर्ग है।
  • "सरल संभव" में शामिल हैं:
    • कोई विभाजन नहीं,
    • कोई वर्गमूल नहीं,
    • कोई शाखा नहीं,
    • कोई खोज नहीं,
    • कोई कोण-जाँच या परीक्षण नहीं,
    • कोई वैक्टर नहीं,
    • कोई परिवर्तन नहीं,
    • कोई जटिल संख्या नहीं,
    • कोई बहु-कार्य नहीं, और
    • विशेष पैकेज का कोई आयात नहीं (केवल निर्मित सामान का उपयोग करें)।
    • (और कोई इम्पीरियल एंटांटलमेंट्स नहीं!)

आर में मेरा समाधान नीचे प्रस्तुत किया गया है। मैं देखते हैं कि यह सोचते हैं रहा हूँ वास्तव में चार अंक और कहा कि, समस्या बयान के अनुसार, यह पहले से ही निर्धारित किया गया है अंक अद्वितीय हैं।

sumsq <- function(x) sum(x^2)

quadrances.xy <- function(xy) vapply(
    as.data.frame(t(diff(xy)), optional=T), sumsq, 1)

नॉर्मन वाइल्डबर्गर के कार्यों को देखें, विशेष रूप से उनके यूट्यूब वीडियो ( वास्तविक मछली, वास्तविक संख्या, वास्तविक नौकरियां एट seq।) और उनकी पुस्तक "क्वाडरेन्स" की चर्चा के लिए उनकी दिव्य अनुपात

xyमैट्रिक्स का एक प्रकार आर के द्वारा स्वीकार करने के लिए संदर्भित करता है plot, pointsऔर linesकाम करता है।

as.data.frameआर-कॉलम चीजों को कॉलम-वार करने के लिए एक ट्रिक का अनुप्रयोग है ।

optional=Tखंड के नाम है, जो वैसे भी उपयोग नहीं किया जाता, दूर करता है।

quadrances.xy..i2. <- function(xy, i2) vapply(
    as.data.frame(i2, optional=T),
    function(k) quadrances.xy(m[k,]),
    1)

यह निर्दिष्ट बिंदुओं के बीच चतुर्भुज की गणना करने के लिए एक फ़ंक्शन है, जहां i2तर्क द्वारा बिंदुओं के जोड़े निर्दिष्ट किए जाते हैं। i2प्रतीक एक सूचकांक मैट्रिक्स जो सूचकांक प्रति एक स्तंभ है, और है को संदर्भित करता है 2 प्रति स्तंभ तत्वों (मैट्रिक्स के एक ही तरह से वापस लौटे combnसमारोह)।

quadrance.every.xy <- function(xy, .which=combn(nrow(xy), 2))
        quadrances.xy..i2.(xy, .which)

.whichके रूप में एक तर्क केवल इसे करने के लिए बेनकाब करने के लिए प्रस्तुत किया है formalsऔर क्या चल रहा है संवाद करने के लिए प्रयास करने के लिए।

is.square.xy <- function(xy) {
    qq <- sort(quadrance.every.xy(xy))
    all(qq[2:4] == qq[1]) && # ALL SIDES (SHORT QUADRANCES) EQUAL
    qq[5] == qq[6] # ALL DIAGONALS (LONG QUADRANCES) EQUAL
}

मैंने कहा "सरल" में कोई बहुस्तरीय कार्य शामिल नहीं था। आपको इस दो-लाइन फ़ंक्शन को बहाना होगा।

xy <- t(matrix(c(3,0,  7,3,  4,7,  0,4), ncol=4))
xy
#      [,1] [,2]
# [1,]    3    0
# [2,]    7    3
# [3,]    4    7
# [4,]    0    4
is.square.xy(xy)
# [1] TRUE

ध्यान दें कि पहले चार कार्य अपने आप में उपयोगी हैं, इसके अलावा चार बिंदुओं के बारे में सवाल।


0

चार अंक A = (ax, ay), B = (bx, by), C = (cx, cy), D = (dx, dy) मान लें, और वे एंटी-क्लॉकवाइज ऑर्डर में एक वर्ग के बिंदु बनाते हैं। हम बिंदुओं को स्थानांतरित करते हैं ताकि ए, बीएक्स, सीएक्स, और डीएक्स से कुल्हाड़ी को घटाकर और एआई द्वारा घटाकर, साइबर, और डाई को सेट करके, एक्स = एआई = 0 से घटाकर ए (0, 0) हो।

यदि अंक बिल्कुल एंटी-क्लॉकवाइज ऑर्डर में एक वर्ग के कोने हैं, तो ए और बी दिया जाता है, हम गणना कर सकते हैं कि सी और डी कहां हैं: हमें होना चाहिए (सीएक्स, साइबर) = (बीएक्स - बाय, बीएक्स + बाय) और (डीएक्स, डाई) = (-बी, बीएक्स)। इसलिए हम सी और डी जहां हैं, जहां उन्हें होना चाहिए, से वर्ग दूरी की गणना करते हैं: इरेक = (सीएक्स - बीएक्स + बाय) ^ 2 + (साइबर - बीएक्स - बाय) ^ 2, और आईरडी = (डीएक्स + बाय) ^ 2 + (डाई - बीएक्स) ^ 2। हम इन्हें जोड़ते हैं, और (= x + 2 को ^ 2) से विभाजित करते हैं, इरेट = (इरसी + इरेड) / (बीएक्स ^ 2 + बाय ^ 2) देते हैं।

परिणामी त्रुटि 0 होगी यदि एक पूर्ण वर्ग, या एक छोटी संख्या यदि लगभग एक वर्ग है, और संख्या गोल घूमने की त्रुटियों को छोड़कर अपरिवर्तित रहेगी यदि हम अनुवाद करते हैं, स्केल करते हैं, या वर्ग के बिंदुओं को घुमाते हैं। इसलिए हम यह तय करने के लिए उपयोग कर सकते हैं कि हमारे पास कितना अच्छा वर्ग है।

लेकिन हमें अंकों के क्रम का पता नहीं है। बी और डी ए से समान दूरी पर होना चाहिए; यदि हम इसे 2 के वर्गमूल से गुणा करते हैं, तो A से C तक की दूरी होनी चाहिए। हम इसका उपयोग यह पता लगाने के लिए करते हैं कि कौन सा बिंदु C है: distB = bx ^ 2 + को ^ 2, distD = dx ^ 2 + डाई से गणना करें ^ 2। यदि डिस्टीडी B 1.5 डिस्टर्ब है, तो हम सी और डी स्वैप करते हैं; अगर distB C 1.5 distD है तो हम C और B को स्वैप करते हैं। अब C सही है।

हम यह भी पता लगा सकते हैं कि कौन से बिंदु बी और डी हैं: यदि हमने गलत अनुमान लगाया कि कौन सा बी है और कौन सा डी है, तो हमारी गणना डी को पूरी तरह से गलत जगह में डालती है, जहां से यह विपरीत है। इसलिए यदि इरेड if (bx ^ 2 + by ^ 2), तो हम B और D को स्वैप करते हैं।

यह बी, सी और डी को सही ढंग से व्यवस्थित करेगा यदि हमारे पास वास्तव में एक वर्ग है या कम से कम लगभग एक वर्ग है। लेकिन अगर हमारे पास एक वर्ग भी नहीं है, तो हमें पता है कि अंत में त्रुटि गणना यह दिखाएगी।

सारांश:

  1. Bx, cx, dx से कुल्हाड़ी निकालना। , से, साइबर, डाई से घटाना।
  2. डिस्टबी = बीएक्स ^ 2 + बाय ^ 2, डिस्टीडी = डीएक्स ^ 2 + डाई ^ 2।
  3. यदि distD C 1.5 * distB, C और D को स्वैप करें और फिर से distD की गणना करें।
  4. अन्यथा, अगर डिस्टब ≥ 1.5 * डिस्टीडी, बी और सी को स्वैप करें और डिस्टब को फिर से गणना करें।
  5. आइ डी डी = (डीएक्स + बाय) ^ 2 + (डाई - बीएक्स) ^ 2।
  6. यदि इरेड err डिस्टब है तो बी और डी को स्वैप करें, डिस्टब और डिस्टैप को स्वैप करें, इरड को फिर से गणना करें।
  7. आईसीसी = (सीएक्स - बीएक्स + द्वारा) ^ 2 + (साइबर - बीएक्स - द्वारा) ^ 2।
  8. चलो = (इरेट + इरड) / डिस्टब।
  9. तय करें कि क्या हमारे पास एक वर्ग है या लगभग एक वर्ग गलत के मूल्य पर निर्भर करता है।

यदि हम अंकों के क्रम को जानते हैं, तो यह स्पष्ट रूप से सरल हो सकता है।


-3

समाधान सोच मीडिया के समान है।

पहला कदम:

x = (A+B+C+D)/4
f=0
if(dist(x,A) == dist(x,B) == dist(x,C) == dist(x,D) 
   f=1
else
   f=0

यह संपत्ति वर्ग द्वारा पीछा की जाती है क्योंकि यह चक्रीय है। अब इस संपत्ति का अनुसरण करने के लिए एक चक्र है। तो, अब बस जाँच करें

if(A.B==B.C==C.D==D.A==0)
  f=1
else 
  f=0

if (f==1)
  square
else 
  not square

यहां AB का मतलब A और B का डॉट प्रोडक्ट है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.