इस चुनौती के लिए, आपको एक पूर्ण पथ दिया जाएगा, और एक "नया" पथ (जो पूर्ण या सापेक्ष हो सकता है), और आपको अंतिम पथ वापस करने की आवश्यकता है।
उदाहरण के लिए, यदि आपकी वर्तमान निर्देशिका थी /var/tmp/test
:
my_dir
या my_dir/
लौटना चाहिए/var/tmp/test/my_dir
../../my_dir
लौट जाना चाहिए /var/my_dir
/my_dir/./
लौट जाना चाहिए /my_dir
../../../../../
लौट जाना चाहिए /
अधिक पांडित्य होना:
- एक निर्देशिका एक गैर खाली अक्षरांकीय अक्षर से मिलकर स्ट्रिंग है और प्रतीकों
-
,_
या.
- एक पथ 0 या अधिक निर्देशिकाओं की एक सूची है, जिसका उपयोग करके अलग किया जाता है
/
। एक निरपेक्ष पथ एक के साथ शुरू होता है/
, एक सापेक्ष पथ नहीं होता है। पथ में एक समाप्ति शामिल हो सकती है/
।
आपको पहले पथ को देखते हुए, दूसरे पथ को "हल" करने की आवश्यकता है।
हल करने की प्रक्रिया है:
- यदि दूसरा मार्ग सापेक्ष है तो परीक्षण करें। यदि ऐसा है, तो दूसरे पथ की शुरुआत के लिए निरपेक्ष पथ की निर्देशिकाएं डालें।
- यदि कोई निर्देशिका है
..
, तो उसे और पूर्ववर्ती निर्देशिका को हटा दें। यदि यह पहली निर्देशिका है, तो बस इसे हटा दें। - यदि कोई निर्देशिका है
.
, तो उसे हटा दें। - अंतिम निरपेक्ष पथ का उत्पादन। आपको एंडिंग आउटपुट नहीं करना चाहिए
/
।
आपको गलत इनपुट को संभालने की आवश्यकता नहीं है। आदेशों को काम करना चाहिए, पारित निर्देशिका वास्तव में आपकी मशीन पर मौजूद हैं या नहीं। आप मान सकते हैं कि सब कुछ एक निर्देशिका है, भले ही इसका विस्तार हो।
परीक्षण के मामलों
Absolute New Output
"/a/b/c" "d" -> "/a/b/c/d"
"/a/b/c/" "d" -> "/a/b/c/d"
"/a/b/c/" "d/" -> "/a/b/c/d"
"/a/b/c" "/d" -> "/d"
"/a/b/c" "/d/" -> "/d"
"/../a/b/c/" "d" -> "/a/b/c/d"
"/a/../b/c/" "d" -> "/b/c/d"
"/a/b/../c" "d" -> "/a/c/d"
"/a/b/c/.." "d" -> "/a/b/d"
"/a/b/c/" ".." -> "/a/b"
"/a/b/c" "../d" -> "/a/b/d"
"/a/b/c" "/../d" -> "/d"
"/a/b/c" "" -> "/a/b/c"
"/a/b/c" "." -> "/a/b/c"
"/a/b/c" "./d" -> "/a/b/c/d"
"/a/b/c" "/./d" -> "/d"
"/a/b/c" "d.txt" -> "/a/b/c/d.txt"
"/a/b/c" "d." -> "/a/b/c/d."
"/a/b/c" ".txt" -> "/a/b/c/.txt"
"/a/b/c" ".txt/d" -> "/a/b/c/.txt/d"
"/a/b/." "./././." -> "/a/b"
"/direc" "tory" -> "/direc/tory"
"/a-_.b/" "__._-." -> "/a-_.b/__._-."
"/a/b" "../.." -> "/"
"/a/b" "../../.."-> "/"
"/a" "../../.."-> "/"
"/" "" -> "/"
"/" "a" -> "/a"
"/.." "a" -> "/a"
"/." "" -> "/"
यह एक कोड-गोल्फ है , इसलिए अपनी पसंदीदा भाषा में अपने सबमिशन को जितना हो सके कम करें!
mkdir $patha; cd $patha; mkdir $pathb; cd $pathb; echo `abspath`
(या कुछ)?