Lệnh cd và pwd

Đề bài

Mô tả

Hệ thống thư mục có cấu trúc cây phân cấp truyền thống. Có duy nhất một thư mục gốc, ký hiệu bằng dấu gạch chéo "/". Mỗi thư mục khác thư mục gốc có một tên là xâu không rỗng gồm các chữ cái Latin thường, và có một thư mục cha (thư mục chứa nó). Thư mục cha được ký hiệu là "..".

Bạn cần cài đặt hai lệnh làm việc với thư mục hiện hành:

  • cd nhận một tham số là một đường dẫn, và đổi thư mục hiện hành tới thư mục mà đường dẫn chỉ tới. Đường dẫn gồm các tên thư mục cách nhau bởi dấu "/". Tên thư mục có thể là "..", nghĩa là đi lên thư mục cha. ".." có thể xuất hiện ở bất kỳ vị trí nào trong đường dẫn, và có thể nhiều lần. Nếu đường dẫn bắt đầu bằng dấu "/" thì đó là đường dẫn tuyệt đối (tính từ thư mục gốc); ngược lại là đường dẫn tương đối (tính từ thư mục hiện hành).
  • pwd in ra đường dẫn tuyệt đối của thư mục hiện hành. Đường dẫn này không được chứa "..".

Ban đầu thư mục hiện hành là thư mục gốc. Mọi thư mục được nhắc tới (trực tiếp hoặc gián tiếp) trong các lệnh cd đều được coi là tồn tại. Dữ liệu bảo đảm không có thao tác nào đi lên thư mục cha của thư mục gốc.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n là số lệnh.
  • n dòng tiếp theo, mỗi dòng chứa một lệnh: hoặc là lệnh pwd, hoặc là lệnh cd theo sau bởi một dấu cách và một tham số không rỗng.

Tham số của lệnh cd chỉ gồm chữ cái Latin thường, dấu "/" và dấu chấm; không có hai dấu "/" liên tiếp; các dấu chấm chỉ xuất hiện dưới dạng tên thư mục cha "..". Tham số của lệnh cd không kết thúc bằng dấu "/", ngoại trừ khi nó chỉ gồm đúng một ký tự "/" (chỉ tới thư mục gốc). Các thư mục trong hệ thống có thể trùng tên nhau.

Dữ liệu ra

Với mỗi lệnh pwd, in ra đường dẫn tuyệt đối đầy đủ của thư mục hiện hành, kết thúc bằng dấu "/". Đường dẫn bắt đầu bằng dấu "/", liệt kê các thư mục cách nhau bởi dấu "/" theo thứ tự lồng nhau từ gốc tới thư mục hiện hành, và không chứa dấu chấm.

Ràng buộc

  • 1n50.
  • Độ dài tham số của mỗi lệnh cd từ 1 đến 200 ký tự.

Ví dụ

Input Output Giải thích
7
pwd
cd /home/vasya
pwd
cd ..
pwd
cd vasya/../petya
pwd
/
/home/vasya/
/home/
/home/petya/
Ban đầu ở gốc. Sau cd tuyệt đối tới /home/vasya. Lệnh cd .. đi lên /home. Đường dẫn tương đối vasya/../petya: vào vasya rồi lên cha (về /home) rồi vào petya.
4
cd /a/b
pwd
cd ../a/b
pwd
/a/b/
/a/a/b/
Từ /a/b, đường dẫn tương đối ../a/b: lên /a rồi vào a/b thành /a/a/b.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0