सभी चुनौतियाँ
आसान 0 हल किए गए 0% स्वीकृति

कोसाइन समानता

दो वेक्टरों के बीच के कोण से मापें कि वे कितने मिलते-जुलते हैं, जैसे सर्च इंजन एम्बेडिंग की तुलना करते हैं।

आप क्या सीखेंगे

  • कोण से समानता मापना
  • डॉट प्रोडक्ट और वेक्टर नॉर्म निकालना
  • समझना कि सिमेंटिक सर्च टेक्स्ट की तुलना कैसे करता है

समस्या

कोसाइन समानता दो वेक्टरों की दिशा की तुलना करती है और उनकी लंबाई को नज़रअंदाज़ करती है। सिमेंटिक सर्च इसका इस्तेमाल मिलते-जुलते एम्बेडिंग वाले टेक्स्ट खोजने में करती है:

cos(a, b) = (a · b) / (|a| × |b|), जहाँ |a| = √(a₁² + a₂² + … + aₙ²)

एक ही दिशा होने पर परिणाम 1, लंबवत वेक्टरों के लिए 0 और उल्टी दिशा के लिए -1 होता है। अगर कोई भी वेक्टर पूरी तरह शून्य हो, तो 0 लौटाएँ।

cosine_similarity(a, b) लागू करें।

इनपुट

a, b: समान लंबाई की दो संख्या सूचियाँ।

आउटपुट

कोसाइन समानता को दशमलव संख्या के रूप में लौटाएँ।

सीमाएँ

1 ≤ लंबाई ≤ 1,000

-1,000 ≤ हर मान ≤ 1,000

उदाहरण

उदाहरण 1
इनपुट:
a = [1.0, 0.0]
b = [0.0, 1.0]

अपेक्षित आउटपुट:
expected = 0.0
इनपुट:
std::vector<double> a = {1.0, 0.0};
std::vector<double> b = {0.0, 1.0};

अपेक्षित आउटपुट:
double expected = 0.0;
इनपुट:
double[] a = new double[] {1.0, 0.0};
double[] b = new double[] {0.0, 1.0};

अपेक्षित आउटपुट:
double expected = 0.0;

व्याख्या

डॉट प्रोडक्ट 0 है, इसलिए वेक्टर लंबवत हैं और समानता 0 है।

उदाहरण 2
इनपुट:
a = [1.0, 2.0, 3.0]
b = [2.0, 4.0, 6.0]

अपेक्षित आउटपुट:
expected = 1.0
इनपुट:
std::vector<double> a = {1.0, 2.0, 3.0};
std::vector<double> b = {2.0, 4.0, 6.0};

अपेक्षित आउटपुट:
double expected = 1.0;
इनपुट:
double[] a = new double[] {1.0, 2.0, 3.0};
double[] b = new double[] {2.0, 4.0, 6.0};

अपेक्षित आउटपुट:
double expected = 1.0;

व्याख्या

b, a का 2 गुना है: दिशा एक ही है, इसलिए लंबाई अलग होने पर भी समानता 1 है।

संदर्भ

यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।

दूसरों से सीखें

समुदाय समाधान

अभी तक कोई प्रकाशित समाधान नहीं। पहला साझा करने के लिए इस चुनौती को हल करें।