ध्यान दें कि यह मुख्य रूप से डेटा-संरचनाओं पर ध्यान केंद्रित करने वाला प्रश्न है
परिचय
Bacefook चाहता है कि लोगों को दोस्ती हो! जैसे, वे दोस्तों को सुझाव देने के लिए एक नई प्रणाली लागू कर रहे हैं! आपका कार्य अपने नए सुझाव प्रणाली को लागू करने के लिए Bacefook की मदद करना है।
विशेष विवरण:
आपका कार्यक्रम एक आरईपीएल (पठन-eval प्रिंट पाश) आदेश के 3 प्रकार का समर्थन होना चाहिए: FRIEND
, SUGGEST
और KNOW
।
FRIEND X Y
- निर्दिष्ट करता है कि X
और Y
सामाजिक नेटवर्क में दोस्त हैं।
यदि X, Y से मित्र है, तो Y, X से मित्र है
कर सकते हैं, लेकिन उत्पादन करने के लिए नहीं है
X हमेशा X के साथ मित्र है
KNOW X Y
- यदि X और Y मित्र हैं, तो मिथ्या अन्यथा आउटपुट करें
KNOW X X
हमेशा एक सत्य मूल्य का उत्पादन करेगा
SUGGEST X Y
- यदि X और Y मित्र हों तो मिथ्या होना चाहिए अन्यथा सत्य मूल्य का उत्पादन करें। X और Y मित्र होने चाहिए यदि:
X और Y मित्र नहीं हैं
X और Y में कम से कम 1 दोस्त है
आपको प्रतिस्थापित करने की अनुमति है FRIEND
, SUGGEST
और KNOW
अपने स्वयं के तार के साथ, लेकिन आपको यह उल्लेख करना होगा कि आपने प्रत्येक कमांड को किस स्ट्रिंग से बदल दिया है।
आपका कार्यक्रम किसी भी तरह से इनपुट / आउटपुट आउटपुट में ले सकता है, जब तक कि यह कैसे काम करता है, इसे पहचानना काफी आसान है।
सोशल नेटवर्क में लोगों की संख्या N
1 से 100,000 के बीच है, लेकिन किसी भी संख्या में "मित्र लिंक" (किनारे) हो सकते हैं।
यदि आपने अभी तक ध्यान नहीं दिया है, तो यह एक ग्राफ खोज समस्या है। इसे लागू करने के लिए (संभावना) सबसे आसान (और संभवतः सबसे तेज़) डेटा संरचना एक आसन्न मैट्रिक्स होगी।
परीक्षण के मामलों
FRIEND A B
FRIEND A C
FRIEND B D
SUGGEST A B -> Falsy, as they are friends
SUGGEST A D -> Truthy, as they share B as a common friend
SUGGEST C D -> Falsy, they do not share a common friend
KNOW D B -> Truthy, they are friends
KNOW B C -> Falsy, not friends
=============
FRIEND Tom Tim
KNOW Tom Tim -> Truthy
KNOW Tim Tom -> Truthy
KNOW Tom Kit -> Falsy
=============
KNOW Tim Kit -> Falsy
FRIEND Tim Tom
KNOW Tim Kit -> Falsy
FRIEND Tom Kit
SUGGEST Tim Kit -> Truthy
=============
FRIEND X Y
SUGGEST X Y -> Falsy since X is friends with X
यहाँ छवि के रूप में कुछ और परीक्षण मामले हैं
जीत की स्थिति
यह कोड-गोल्फ है , सबसे छोटा कोड जीतता है!
SUGGEST UK EU
।
{A, B, C, D}
?