এই চ্যালেঞ্জের জন্য, আপনাকে একটি পরম পথ এবং একটি "নতুন" পাথ দেওয়া হবে (যা নিরঙ্কুশ বা আপেক্ষিক হতে পারে), এবং আপনাকে চূড়ান্ত পথে ফিরে আসতে হবে।
উদাহরণস্বরূপ, যদি আপনার বর্তমান ডিরেক্টরিটি ছিল /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`
(বা কিছু) এর মতো পার্শ্ব প্রতিক্রিয়া ?