কম্পিউটার

পাইথনে পাথ সরলীকরণ করুন


ধরুন আমাদের কাছে একটি ফাইলের জন্য একটি পরম পথ আছে (যেমন ইউনিক্স ফাইল সিস্টেম), আমাদের এটিকে সরল করতে হবে। বা অন্য কথায়, আমাদের এটিকে ক্যানোনিকাল পাথে রূপান্তর করতে হবে। UNIX-শৈলী ফাইল সিস্টেমে, একটি সময়কাল '.' বর্তমান ডিরেক্টরিকে বোঝায়। এবং একটি ডবল পিরিয়ড '..' ডিরেক্টরিটিকে একটি স্তরের উপরে নিয়ে যায় (প্যারেন্ট ডিরেক্টরি)। ক্যানোনিকাল পাথের বৈশিষ্ট্যগুলি নিম্নরূপ।

  • পথ সর্বদা একটি স্ল্যাশ দিয়ে শুরু করতে হবে /
  • দুটি ডিরেক্টরি নামের মধ্যে শুধুমাত্র একটি স্ল্যাশ / থাকতে হবে।
  • সর্বশেষ ডিরেক্টরির নাম (যদি এটি বিদ্যমান থাকে) অবশ্যই একটি ট্রেলিং দিয়ে শেষ হবে না।
  • ক্যাননিকাল পাথটি অবশ্যই পরম পথের প্রতিনিধিত্বকারী ক্ষুদ্রতম স্ট্রিং হতে হবে৷

সুতরাং উদাহরণস্বরূপ, যদি প্রদত্ত পাথগুলি হয় “/home/”, “/../” এবং “/home//user/”, তাহলে রূপান্তরিত পাথগুলি হল “/home”, “/”, এবং “/home/” ব্যবহারকারী"

আসুন ধাপগুলো দেখি -

  • একটি তালিকা নিন এবং এতে '/' রাখুন
  • a :=প্রদত্ত পাথকে ডিলিমিটার দিয়ে বিভক্ত করার পরে স্ট্রিংগুলির একটি তালিকা '/'
  • প্রতিটি উপাদানের জন্য আমি একটি
    • যদি আমি ডবল পিরিয়ড হয়, তাহলে
      • যদি st> 1 এর দৈর্ঘ্য হয়, তাহলে st থেকে শেষ উপাদান মুছে দিন, অন্যথায় চালিয়ে যান
    • অন্যথায় আমি যদি একক পিরিয়ড হই, তাহলে চালিয়ে যান
    • অন্যথায় যদি খালি স্ট্রিং না হয়, তাহলে ঢোকান ('/' কনক্যাটেনেট i) st এ
  • যদি st শুধুমাত্র একটি উপাদান থাকে, তাহলে '/'
  • ফেরত দিন
  • st-এ উপস্থিত সমস্ত উপাদান একত্রিত করার পরে ফিরে আসুন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

class Solution:
   def simplifyPath(self, a):
      st = ['/']
      a = a.split("/")
      for i in a:
         if i == '..':
            if len(st) > 1:
               st.pop()
            else:
               continue
         elif i == '.':
            continue
         elif i != '':
            st.append("/" + str(i))
      if len(st) == 1:
         return "/"
      return "".join(st[1:])
ob1 = Solution()
print(ob1.simplifyPath("/home/"))
print(ob1.simplifyPath("/../"))
print(ob1.simplifyPath("/home//user/"))

ইনপুট

"/home/"
"/../"
"/home//user/"

আউটপুট

/home
/
/home/user

  1. পাইথনে পাথ ইন জিগজ্যাগ লেবেলযুক্ত বাইনারি ট্রি

  2. পাইথনে পাথ সাম

  3. মিন কস্ট পাথের জন্য পাইথন প্রোগ্রাম

  4. কিভাবে পাইথনে পাথ যোগ করবেন?