कभी-कभी एक लंबा निरपेक्ष पथ, उदाहरण के लिए एक लाइन-टूल के लिए एक कमांड-लाइन पैरामीटर, संदर्भ के रूप में वर्तमान कार्य निर्देशिका का उपयोग करके छोटा किया जा सकता है:
$ pwd
/home/heh
$ cat /home/heh/mydir/myfile
my stuff
$ cat mydir/myfile
my stuff
इस चुनौती में, आपको एक फ़ंक्शन या एक प्रोग्राम बनाना चाहिए जो दो पैरामीटर प्राप्त करता है:
- पूर्ण पथ, लिनक्स प्रारूप का उपयोग करके (के साथ शुरू होता है)
/
) - एक ही प्रारूप का उपयोग करके वर्तमान निर्देशिका
आउटपुट निम्न में से छोटा है:
- इनपुट 1 अपरिवर्तित
- सापेक्ष पथ जो पूर्ण पथ के समान फ़ाइल / निर्देशिका को संदर्भित करता है
ठीक अंक:
- यदि आपका ऑपरेटिंग सिस्टम लिनक्स के साथ संगत है, तो आप इसे इनपुट के रूप में प्राप्त करने के बजाय सिस्टम की वर्तमान निर्देशिका का उपयोग कर सकते हैं
- आप मान सकते हैं कि इनपुट में केवल अल्फ़ान्यूमेरिक वर्ण (और पथ विभाजक) हैं
- आप मान सकते हैं कि इनपुट निरपेक्ष पथ
/
के अंत में एक पथ विभाजक नहीं है - आप मान सकते हैं कि इनपुट करंट डायरेक्टरी में
/
अंत में एक पथ विभाजक है - आप यह नहीं मान सकते कि निरपेक्ष पथ एक मौजूदा फ़ाइल को संदर्भित करता है, या इसका कोई भी हिस्सा एक सुलभ निर्देशिका है; हालाँकि, वर्तमान निर्देशिका को मान्य माना जा सकता है
- आप मान सकते हैं कि किसी भी मार्ग के पास कहीं भी सिम्बलिंक नहीं हैं - क्योंकि मुझे सिम्बलिंक से निपटने के लिए किसी विशेष तरीके की आवश्यकता नहीं है
- उस मामले का समर्थन करने की आवश्यकता नहीं है जहां या तो इनपुट मूल निर्देशिका है
- "वर्तमान निर्देशिका" को आउटपुट होना चाहिए
.
(एक रिक्त स्ट्रिंग मान्य नहीं है)
टेस्ट केस (इनपुट 1, इनपुट 2, आउटपुट):
/home/user/mydir/myfile
/home/user
mydir/myfile
/var/users/admin/secret/passwd
/var/users/joe/hack
../../admin/secret/passwd
/home/user/myfile
/tmp/someplace
/home/user/myfile
/dir1/dir2
/dir1/dir2/dir3/dir4
../..
/dir1/dir2
/dir1/dir2
.
/home/test /home/user/mydir/myfile /home/test
और/a/b /a/b/d/e /a/b
/
के अंत में एक पथ विभाजक है "। हालांकि, आपके उदाहरणों में, यह मामला नहीं है।