Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ออกแบบระบบไฟล์ใน Python


สมมติว่าเราต้องออกแบบระบบไฟล์ที่มีสองฟังก์ชันนี้ -

  1. createPath(path, value) - สิ่งนี้สร้างเส้นทางใหม่และเชื่อมโยงค่ากับมันถ้าเป็นไปได้และส่งคืน True คืนค่า False หากเส้นทางมีอยู่แล้วหรือเส้นทางหลักไม่มีอยู่
  2. get(path) - ค้นหาค่าที่เกี่ยวข้องกับเส้นทางหรือคืนค่า -1 หากไม่มีเส้นทาง

รูปแบบของเส้นทางคือสตริงที่ต่อกันอย่างน้อยหนึ่งสตริงของแบบฟอร์ม - (เครื่องหมายทับ) / ตามด้วยตัวอักษรภาษาอังกฤษตัวพิมพ์เล็กอย่างน้อยหนึ่งตัว ตัวอย่างเช่น /programming และ /programming/problems เป็นเส้นทางที่ถูกต้องในขณะที่สตริงว่างและ / ไม่ใช่ ที่นี่เราต้องใช้งานทั้งสองฟังก์ชัน

เป็นอินพุต หากเราสร้างระบบไฟล์ ให้สร้างพาธโดยใช้ ['/a', 1] หลังจากใช้ get() ด้วยพารามิเตอร์ ['/a'] ผลลัพธ์จะเป็น 1

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดแผนที่ d
  • เมธอด createPath จะใช้พาธและค่า ซึ่งจะทำหน้าที่เหมือน −
  • p :=รายการคอมโพเนนต์ของพาธที่แบ่งโดย '/'
  • x :=d
  • สำหรับ i ในช่วง 1 ถึงความยาวของ p – 1
    • ถ้า p[i] ไม่มีอยู่ใน x ให้คืนค่าเท็จ
    • x :=x[p[i]][1]
  • ถ้าองค์ประกอบสุดท้ายของ p อยู่ใน x ให้คืนค่าเท็จ
  • x[องค์ประกอบสุดท้ายของ p] :=รายการที่มี v และแผนที่ว่างเปล่า
  • คืนค่าจริง
  • เมธอด get() กำลังนำทาง
  • x :=d
  • p :=รายการคอมโพเนนต์ของพาธที่แบ่งโดย '/'
  • สำหรับ i ในช่วง 1 ถึงความยาวของ p – 1
    • ถ้า p[i] ไม่มีอยู่ใน x ให้คืนค่า -1
    • x :=x[p[i]][1]
  • หากองค์ประกอบสุดท้ายของ p อยู่ใน x ให้คืนค่า x[องค์ประกอบสุดท้ายของ p][0] มิฉะนั้น ให้คืนค่า -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"))

อินพุต

Initialize the object, then call createPath(“/a”, 1) and get(“/a”)

ผลลัพธ์

True
1