Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Hệ điều hành Unix] realpath với bảng symlink

    realpath đầy đủ qua bảng symlink

    Mô phỏng realpath: cho một bảng symlink ánh xạ đường dẫn tuyệt đối đã chuẩn → chuỗi target (tuyệt đối hoặc tương đối). Phân giải đường dẫn p theo từng thành phần từ gốc:

    1. Bắt đầu từ /, duyệt từng thành phần của p.
    2. Sau khi thêm mỗi thành phần tạo thành tiền tố hiện tại, nếu tiền tố đó là một symlink (có trong bảng), thay thế nó: nếu target tuyệt đối → thay toàn bộ đường-dẫn-hiện-tại bằng target; nếu tương đối → ghép vào thư mục chứa tiền tố. Sau thay thế, tiếp tục phân giải phần còn lại.
    3. Xử lý .. bằng cách lùi một cấp trên kết quả đã phân giải; . bỏ qua.
    4. Nếu số bước thay thế symlink vượt quá 40 → in ELOOP (chống vòng lặp).

    In đường dẫn tuyệt đối cuối cùng (đã chuẩn). Bảo đảm mọi target trong bảng là đường dẫn đã chuẩn hợp lệ.

    Ví dụ

    • bảng: /a -> /x; p=/a/b → /x/b
    • bảng: /a -> /a (tự trỏ); p=/a → ELOOP
    • Định dạng đầu vào:

      Dòng 1: số mục bảng n. n dòng name target. Dòng cuối: p (tuyệt đối).

    • Ràng buộc đầu vào:

      0 ≤ n ≤ 100. Độ dài mỗi đường dẫn ≤ 500. Giới hạn thay thế symlink: 40.

    • Định dạng đầu ra:

      Một dòng: realpath hoặc ELOOP.

    Ví dụ:

    Đầu vào:

    1
    /a /x
    /a/b
    

    Đầu ra:

    /x/b

    Giải thích:

    /a là symlink tới /x nên /a/b phân giải thành /x/b.

    Đang tải editor...