Bu meydan okuma için, mutlak bir yol ve "yeni" bir yol (mutlak veya göreli olabilir) verilecek ve son yolu döndürmeniz gerekecek.
Örneğin, geçerli dizininiz /var/tmp/test
:
my_dir
ya da my_dir/
geri dönmeli/var/tmp/test/my_dir
../../my_dir
geri dönmeli /var/my_dir
/my_dir/./
geri dönmeli /my_dir
../../../../../
geri dönmeli /
Daha bilgiç olmak için:
- Bir dizin alfanümerik karakterden oluşan boş olmayan bir dize ve semboller
-
,_
ya.
- Yol, kullanılarak ayrılmış 0 veya daha fazla dizin listesidir
/
. Mutlak yol a ile başlar/
, göreli yol başlamaz. Yollar bir bitiş içerebilir/
.
İlk yol verildiğinde, ikinci yolu "çözmeniz" gerekir.
Çözüm süreci:
- İkinci yolun göreli olup olmadığını test edin. Öyleyse, mutlak yolun dizinlerini ikinci yolun başına ekleyin.
- Dizinlerden herhangi biri varsa, dizini
..
ve önceki dizini kaldırın. İlk dizinse, kaldırın. - Dizinlerden herhangi biri varsa
.
, kaldırın. - Son mutlak yolu çıktılayın. Bir son vermemelisiniz
/
.
Yanlış girişi işlemenize gerek yoktur. Gönderilen dizinler makinenizde mevcut olsa da olmasa da komutlar çalışmalıdır. Bir uzantıya sahip olsa bile her şeyin bir dizin olduğunu varsayabilirsiniz.
Test senaryoları
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"
"/." "" -> "/"
Bu bir kod golf , bu yüzden gönderilerinizi en sevdiğiniz dilde mümkün olduğunca kısa yapın!
mkdir $patha; cd $patha; mkdir $pathb; cd $pathb; echo `abspath`
(veya bir şey) gibi yan etkiler ?