কম্পিউটার টিউটোরিয়াল

পাইথনে ফাইল সিস্টেম ডিজাইন করা


মনে করুন আমাদের একটি ফাইল সিস্টেম ডিজাইন করতে হবে যা নিচের দুটি ফাংশন প্রদান করবে:

  1. createPath(path, value) — এটি একটি নতুন পাথ তৈরি করে এবং সেটির সাথে একটি ভ্যালু অ্যাসোসিয়েট করে যদি সম্ভব হয়, এবং True রিটার্ন করে। যদি পাথটি ইতিমধ্যে থাকা থাকে বা এর প্যারেন্ট পাথ না থাকে তবে False রিটার্ন করে।
  2. get(path) — এটি একটি পাথের সাথে অ্যাসোসিয়েটেড ভ্যালু খুঁজে বের করে বা পাথ না থাকলে -1 রিটার্ন করে।

একটি পাথের ফরম্যাট হলো এক বা অধিক কনক্যাটেনেটেড স্ট্রিং যা ফরওয়ার্ড স্ল্যাশ (/) দিয়ে শুরু হয় এবং তারপর এক বা অধিক লোয়ারকেস ইংরেজি অক্ষর। উদাহরণস্বরূপ, /programming এবং /programming/problems বৈধ পাথ, কিন্তু খালি স্ট্রিং এবং / বৈধ নয়। এখানে আমাদের এই দুটি ফাংশন ইম্প্লিমেন্ট করতে হবে।

ইনপুট হিসেবে, যদি আমরা একটি ফাইল সিস্টেম তৈরি করি, তারপর ['/a', 1] দিয়ে পাথ তৈরি করি, তারপর get() কল করি প্যারামিটার ['/a'] দিয়ে, তবে আউটপুট হবে 1।

এটি সমাধান করতে আমরা নিচের ধাপগুলো ফলো করব:

  • d নামক একটি ম্যাপ ডিফাইন করুন।
  • createPath মেথড path এবং value নেবে, এটি নিচের মতো কাজ করবে:
    • p := path কে '/' দিয়ে স্প্লিট করে কম্পোনেন্ট লিস্ট
    • x := d
    • for i in range 1 to len(p) - 1
      • if p[i] not in x, তবে return false
      • x := x[p[i]][1]
    • if p[-1] in x, তবে return false
    • x[p[-1]] := [v, {}] (v এবং খালি ম্যাপের লিস্ট)
    • return true
  • get() মেথড path নেবে:
    • x := d
    • p := path কে '/' দিয়ে স্প্লিট করে কম্পোনেন্ট লিস্ট
    • for i in range 1 to len(p) - 1
      • if p[i] not in x, তবে return -1
      • x := x[p[i]][1]
    • if p[-1] in x, তবে return x[p[-1]][0], অন্যথায় return -1

উদাহরণ (Python)

নিচের ইমপ্লিমেন্টেশন দেখুন ভালো বুঝতে।

class FileSystem(object):
    def __init__(self):
        self.d = {}

    def create(self, p, v):
        p = p.split("/")
        x = self.d
        for i in range(1, len(p)-1):
            if p[i] not in x:
                return False
            x = x[p[i]][1]
        if p[-1] in x:
            return False
        x[p[-1]] = [v, {}]
        return True

    def get(self, p):
        x = self.d
        p = p.split("/")
        for i in range(1, len(p)-1):
            if p[i] not in x:
                return -1
            x = x[p[i]][1]
        if p[-1] in x:
            return x[p[-1]][0]
        else:
            return -1

ob = FileSystem()
print(ob.create("/a", 1))
print(ob.get("/a"))

ইনপুট

অবজেক্ট ইনিশিয়ালাইজ করুন, তারপর createPath("/a", 1) এবং get("/a") কল করুন

আউটপুট

True
1

  1. পাইথন Tkinter-এ asksaveasfile() ফাংশন

  2. পাইথন Tkinter-এ askopenfile() ফাংশন ব্যবহার করে ফাইল খোলা

  3. পাইথনে ফাইল অবজেক্ট: ফাইল পড়া, লিখা এবং ম্যানেজমেন্টের সম্পূর্ণ গাইড

  4. পাইথনে জাঙ্ক ফাইল অর্গানাইজার: ফাইলগুলো স্বয়ংক্রিয়ভাবে ক্যাটাগরাইজ করুন