Untuk tantangan ini, Anda akan diberikan jalur absolut, dan jalur "baru" (yang bisa absolut atau relatif), dan Anda harus mengembalikan jalur terakhir.
Misalnya, jika direktori Anda saat ini adalah /var/tmp/test:
my_diratau my_dir/ harus kembali/var/tmp/test/my_dir
../../my_dir harus kembali /var/my_dir
/my_dir/./ harus kembali /my_dir
../../../../../ harus kembali /
Untuk menjadi lebih bertele-tele:
- Sebuah direktori adalah string non-kosong yang terdiri dari karakter alfanumerik dan simbol-simbol
-,_atau. - Path adalah daftar 0 atau lebih direktori , dipisahkan menggunakan
/. Jalur absolut dimulai dengan a/, jalur relatif tidak. Jalur dapat menyertakan akhiran/.
Anda perlu "menyelesaikan" jalur kedua, mengingat jalur pertama.
Proses penyelesaiannya adalah:
- Uji apakah jalur kedua relatif. Jika demikian, maka masukkan direktori jalur absolut ke awal jalur kedua.
- Jika ada salah satu direktori
.., maka hapus dan direktori sebelumnya. Jika ini adalah direktori pertama, cukup hapus saja. - Jika ada direktori
., maka hapus. - Keluarkan jalan absolut terakhir. Anda seharusnya tidak menghasilkan akhir
/.
Anda tidak perlu menangani input yang salah. Perintah harus bekerja, apakah direktori yang dilewati benar-benar ada di mesin Anda. Anda dapat mengasumsikan bahwa semuanya adalah direktori, bahkan jika ia memiliki ekstensi.
Uji kasus
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"
"/." "" -> "/"
Ini adalah kode-golf , jadi buat kiriman Anda sesingkat mungkin dalam bahasa favorit Anda!
mkdir $patha; cd $patha; mkdir $pathb; cd $pathb; echo `abspath`(atau sesuatu)?