क्या कोई नियम है जैसे 20 मिनट के बाद आपको बस कोडिंग शुरू करनी चाहिए चाहे कोई भी हो?
नहीं, लेकिन यदि आप व्यवसाय में उतरने से पहले समस्या का विश्लेषण करते हुए 20 मिनट बिताते हैं, तो आप शायद पहले से ही परेशानी में हैं। एक नियोक्ता जो आपसे एक प्रश्न पूछता है जैसे आपने उद्धृत किया था कि आप किसी समस्या के बारे में कैसे सोचते हैं, लेकिन अगर वे इसे एक कोडिंग समस्या के रूप में पूछते हैं, तो वे कुछ कोड भी देखना चाहेंगे। अपनी विचार प्रक्रिया के माध्यम से उनसे बात करें ...
खैर, यहाँ स्पष्ट दृष्टिकोण पाशविक बल है। अगर मेरे पास तीन त्रिकोणों को देखते हुए एक सही त्रिकोण को पहचानने का एक तरीका है, तो मैं दो बिंदुओं के सभी संयोजनों और सही त्रिकोणों की तलाश कर सकता हूं। यह कठिन नहीं होना चाहिए - मैं सही त्रिकोण की पहचान करने के लिए पायथागॉरियन प्रमेय का उपयोग करने वाला एक फ़ंक्शन लिख सकता हूं। उस आसान को बनाने के लिए, मैं एक फ़ंक्शन भी लिखूंगा जो दूरी सूत्र का उपयोग करके दो बिंदुओं के बीच की दूरी को निर्धारित करता है ...
उन कार्यों को लिखने में लगभग तीन मिनट लगने चाहिए। अब, सवाल में बस कुछ ही मिनटों में, आप पहले ही दिखा चुके हैं कि आपको बुनियादी ज्यामिति याद है और आपको वास्तव में कोड लिखने का तरीका पता है। यह आपको कुछ बात करने के लिए भी देता है:
इसलिए, हम स्पष्ट रूप से isRightTriangle(p1, p2, p3)
फ़ंक्शन को चार for
लूपों के बीच में रख सकते हैं और प्रत्येक दो चर बिंदुओं के लिए सभी संभावित विकल्पों पर पुनरावृति कर सकते हैं। आइए देखें ... समस्या 50x50 ग्रिड पर मूल सहित सही त्रिकोणों की संख्या के लिए पूछती है, इसलिए ब्रूट बल विधि का उपयोग करके हमें प्रत्येक बिंदु के प्रत्येक समन्वय के लिए 50 संभावनाएं जांचनी पड़ती हैं। यह 50 ^ 4 चेक है ... मुझे यकीन है कि हम बेहतर कर सकते हैं, लेकिन कोड स्पष्ट है, इसलिए मुझे यह लिखना चाहिए ...
तो अब आप एक फ़ंक्शन लिखते हैं जो नेस्टेड for
लूप का उपयोग करता है और वह isRightTriangle()
फ़ंक्शन जो आपने अभी लिखा था। आपने समस्या हल कर ली है, लेकिन आपने साक्षात्कारकर्ता को यह देखने भी दिया है कि आप कहां जा रहे हैं। यदि उनका लक्ष्य सिर्फ यह देखना था कि आप कोड लिख सकते हैं, तो वे आपको रोकने के लिए कह सकते हैं। अधिक संभावना है, वे किसी ऐसे व्यक्ति से बात करने में प्रसन्न होते हैं जो जानता है कि वे क्या कर रहे हैं और वे यह देखना चाहते हैं कि आप इसे कितनी दूर ले जाते हैं। तो आप चलिए ...
यह मेरे साथ हुआ जब मैं लिख रहा था कि हम समरूपता का लाभ उठा सकते हैं। हम 45 ° लाइन के आसपास किसी भी दिए गए सही त्रिकोण को प्रतिबिंबित कर सकते हैं, इसलिए यदि हम उस लाइन के केवल एक तरफ एक बिंदु की जांच करना चुनते हैं, तो हम बस किसी भी सही त्रिकोण की गणना कर सकते हैं जो हम दो बार पाते हैं ... एक बार त्रिकोण के लिए और एक बार इसके प्रतिबिंब के लिए। यह चेक की संख्या को आधे से कम करता है। इसके अलावा, अब इसे देखते हुए, हम दो बिंदुओं के बीच की दूरी ज्ञात करने के लिए एक वर्गमूल ले रहे हैं, लेकिन फिर हम इसे फिर से वर्ग बनाते हैं isRightTriangle()
...
और इसी तरह। फिर, वे आम तौर पर एक सही समाधान नहीं देखना चाहते हैं, वे यह देखना चाहते हैं कि आपको समाधान कैसे मिलता है। आपकी विचार प्रक्रिया में ऊपर वाले की तरह कुछ भी नहीं होना चाहिए - बस जोर से सोचने के लिए आत्मविश्वास होना बहुत कुछ गिनाएगा। अगर आपको कोई गलती हो जाए तो उसे मत छोड़ें - बस "हम्मम, मुझे लगता है कि मैं यहाँ रेल से जा चुका हूँ - मुझे एक कदम पीछे हटने दो ..."