ধরুন আমাদের একটি ফাইল সিস্টেম ডিজাইন করতে হবে যা এই দুটি ফাংশন প্রদান করে -
- createPath(path, value) − এটি একটি নতুন পথ তৈরি করে এবং সম্ভব হলে এটির সাথে একটি মান যুক্ত করে এবং True প্রদান করে। যদি পাথটি ইতিমধ্যেই বিদ্যমান থাকে বা এর মূল পথটি বিদ্যমান না থাকে তবে এটি False প্রদান করে৷
- get(path) − এটি একটি পথের সাথে সম্পর্কিত মান খুঁজে পায় বা যদি পাথটি বিদ্যমান না থাকে তবে -1 প্রদান করে।
একটি পথের বিন্যাস হল ফর্মের এক বা একাধিক সংযুক্ত স্ট্রিং - (ফরোয়ার্ড স্ল্যাশ) / তার পরে এক বা একাধিক ছোট হাতের ইংরেজি অক্ষর। উদাহরণস্বরূপ, /প্রোগ্রামিং এবং /প্রোগ্রামিং/সমস্যাগুলি বৈধ পথ যখন একটি খালি স্ট্রিং এবং / নয়৷ এখানে আমাদের এই দুটি ফাংশন বাস্তবায়ন করতে হবে।
তাই ইনপুট হিসাবে, যদি আমরা একটি ফাইল-সিস্টেম তৈরি করি, তারপর ['/a', 1] ব্যবহার করে একটি পাথ তৈরি করি, তারপর ['/a'] প্যারামিটার সহ get() ব্যবহার করার পরে, আউটপুট হবে 1।পি>
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি মানচিত্র সংজ্ঞায়িত করুন d
- createPath পদ্ধতিটি পথ এবং মান গ্রহণ করবে, এটি − এর মত কাজ করবে
- p :='/' দ্বারা বিভক্ত পথের উপাদানগুলির তালিকা
- x :=d
- আমি রেঞ্জ 1 থেকে p – 1 এর দৈর্ঘ্যের জন্য
- যদি p[i] x-এ উপস্থিত না থাকে, তাহলে মিথ্যা ফেরত দিন
- x :=x[p[i]][1]
- যদি p এর শেষ উপাদান x তে থাকে, তাহলে মিথ্যা ফেরত দিন
- x[p এর শেষ উপাদান] :=v এবং খালি মানচিত্র সহ একটি তালিকা
- সত্য ফেরত দিন
- get() পদ্ধতিটি পথ নিচ্ছে
- x :=d
- p :='/' দ্বারা বিভক্ত পথের উপাদানগুলির তালিকা
- আমি রেঞ্জ 1 থেকে p – 1 এর দৈর্ঘ্যের জন্য
- যদি p[i] x-এ উপস্থিত না থাকে, তাহলে -1 ফেরত দিন
- x :=x[p[i]][1]
- যদি p-এর শেষ উপাদান x-এ থাকে, তাহলে x[p-এর শেষ উপাদান][0] ফেরত দিন, অন্যথায় -1 ফেরত দিন
উদাহরণ(পাইথন)
আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -
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"))
ইনপুট
Initialize the object, then call createPath(“/a”, 1) and get(“/a”)
আউটপুট
True 1