Đối với thử thách này, bạn sẽ được cung cấp một đường dẫn tuyệt đối và một đường dẫn "mới" (có thể là tuyệt đối hoặc tương đối) và bạn cần trả về đường dẫn cuối cùng.
Ví dụ: nếu thư mục hiện tại của bạn là /var/tmp/test
:
my_dir
hoặc my_dir/
nên trở lại/var/tmp/test/my_dir
../../my_dir
nên trở về /var/my_dir
/my_dir/./
nên trở về /my_dir
../../../../../
nên trở về /
Để được nhiều hơn phạm vi:
- Một thư mục là một chuỗi không có sản phẩm nào bao gồm ký tự chữ và các biểu tượng
-
,_
hoặc.
- Đường dẫn là danh sách 0 hoặc nhiều thư mục , được phân tách bằng cách sử dụng
/
. Một đường dẫn tuyệt đối bắt đầu bằng một/
, một đường dẫn tương đối thì không. Đường dẫn có thể bao gồm một kết thúc/
.
Bạn cần "giải quyết" đường dẫn thứ hai, đưa ra đường dẫn đầu tiên.
Quá trình giải quyết là:
- Kiểm tra nếu đường dẫn thứ hai là tương đối. Nếu vậy, sau đó chèn các thư mục của đường dẫn tuyệt đối vào đầu đường dẫn thứ hai.
- Nếu bất kỳ thư mục là
..
, sau đó loại bỏ nó và thư mục trước. Nếu nó là thư mục đầu tiên, sau đó chỉ cần loại bỏ nó. - Nếu bất kỳ thư mục là
.
, sau đó loại bỏ nó. - Đầu ra đường dẫn tuyệt đối cuối cùng. Bạn không nên kết thúc
/
.
Bạn không cần phải xử lý đầu vào không chính xác. Các lệnh sẽ hoạt động, cho dù các thư mục được truyền có thực sự tồn tại trên máy của bạn hay không. Bạn có thể cho rằng mọi thứ là một thư mục, ngay cả khi nó có phần mở rộng.
Các trường hợp thử nghiệm
Absolute New Output
"/a/b/c" "d" -> "/a/b/c/d"
"/a/b/c/" "d" -> "/a/b/c/d"
"/a/b/c/" "d/" -> "/a/b/c/d"
"/a/b/c" "/d" -> "/d"
"/a/b/c" "/d/" -> "/d"
"/../a/b/c/" "d" -> "/a/b/c/d"
"/a/../b/c/" "d" -> "/b/c/d"
"/a/b/../c" "d" -> "/a/c/d"
"/a/b/c/.." "d" -> "/a/b/d"
"/a/b/c/" ".." -> "/a/b"
"/a/b/c" "../d" -> "/a/b/d"
"/a/b/c" "/../d" -> "/d"
"/a/b/c" "" -> "/a/b/c"
"/a/b/c" "." -> "/a/b/c"
"/a/b/c" "./d" -> "/a/b/c/d"
"/a/b/c" "/./d" -> "/d"
"/a/b/c" "d.txt" -> "/a/b/c/d.txt"
"/a/b/c" "d." -> "/a/b/c/d."
"/a/b/c" ".txt" -> "/a/b/c/.txt"
"/a/b/c" ".txt/d" -> "/a/b/c/.txt/d"
"/a/b/." "./././." -> "/a/b"
"/direc" "tory" -> "/direc/tory"
"/a-_.b/" "__._-." -> "/a-_.b/__._-."
"/a/b" "../.." -> "/"
"/a/b" "../../.."-> "/"
"/a" "../../.."-> "/"
"/" "" -> "/"
"/" "a" -> "/a"
"/.." "a" -> "/a"
"/." "" -> "/"
Đây là một môn đánh gôn , vì vậy hãy gửi bài của bạn càng ngắn càng tốt bằng ngôn ngữ yêu thích của bạn!
mkdir $patha; cd $patha; mkdir $pathb; cd $pathb; echo `abspath`
(hoặc cái gì đó)?