Đôi khi, một đường dẫn tuyệt đối dài, ví dụ như tham số dòng lệnh đến công cụ linux, có thể được rút ngắn, sử dụng thư mục làm việc hiện tại làm tham chiếu:
$ pwd
/home/heh
$ cat /home/heh/mydir/myfile
my stuff
$ cat mydir/myfile
my stuff
Trong thử thách này, bạn nên tạo một hàm hoặc một chương trình nhận hai tham số:
- Đường dẫn tuyệt đối, sử dụng định dạng linux (bắt đầu bằng
/
) - Thư mục hiện tại, sử dụng cùng định dạng
Đầu ra ngắn hơn như sau:
- Đầu vào 1 không thay đổi
- Đường dẫn tương đối đề cập đến cùng tệp / thư mục là đường dẫn tuyệt đối
Điểm tốt:
- Nếu hệ điều hành của bạn tương thích với linux, bạn có thể sử dụng thư mục hiện tại của hệ thống thay vì nhận nó làm đầu vào
- Bạn có thể giả sử các đầu vào chỉ chứa các ký tự chữ và số (và dấu phân cách đường dẫn)
- Bạn có thể giả sử đường dẫn tuyệt đối đầu vào không có dấu phân cách đường dẫn
/
ở cuối - Bạn có thể giả sử thư mục hiện tại đầu vào có dấu phân cách đường dẫn
/
ở cuối - Bạn không thể cho rằng đường dẫn tuyệt đối đề cập đến một tệp hiện có hoặc bất kỳ phần nào trong đó là một thư mục có thể truy cập được; tuy nhiên, thư mục hiện tại có thể được coi là hợp lệ
- Bạn có thể cho rằng không có liên kết tượng trưng ở bất kỳ đâu gần đường dẫn - bởi vì tôi không muốn yêu cầu bất kỳ cách xử lý đặc biệt nào với liên kết tượng trưng
- Không cần hỗ trợ trong trường hợp một trong hai đầu vào là thư mục gốc
- "Thư mục hiện tại" phải là đầu ra dưới dạng
.
(một chuỗi trống không hợp lệ)
Các trường hợp thử nghiệm (input1, input2, output):
/home/user/mydir/myfile
/home/user
mydir/myfile
/var/users/admin/secret/passwd
/var/users/joe/hack
../../admin/secret/passwd
/home/user/myfile
/tmp/someplace
/home/user/myfile
/dir1/dir2
/dir1/dir2/dir3/dir4
../..
/dir1/dir2
/dir1/dir2
.
/home/test /home/user/mydir/myfile /home/test
và/a/b /a/b/d/e /a/b
/
ở cuối". Tuy nhiên, trong ví dụ của bạn, đây không phải là trường hợp.