কখনও কখনও একটি দীর্ঘ পরম পথ, যেমন একটি লিনাক্স সরঞ্জামের একটি কমান্ড-লাইন প্যারামিটার, সংক্ষিপ্ত করা যেতে পারে, বর্তমান কার্যনির্বাহী ডিরেক্টরিটি রেফারেন্স হিসাবে ব্যবহার করে:
$ 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
/
শেষে একটি পাথ বিভাজক রয়েছে"। তবে, আপনার উদাহরণগুলিতে, এটি ক্ষেত্রে নয় is