สำหรับความท้าทายนี้คุณจะได้รับเส้นทางที่แน่นอนและเส้นทาง "ใหม่" (ซึ่งอาจเป็นแบบสัมบูรณ์หรือแบบสัมพัทธ์) และคุณต้องกลับเส้นทางสุดท้าย
ตัวอย่างเช่นหากไดเรกทอรีปัจจุบันของคุณคือ/var/tmp/test
:
my_dir
หรือmy_dir/
ควรกลับมา/var/tmp/test/my_dir
../../my_dir
ควรกลับมา /var/my_dir
/my_dir/./
ควรกลับมา /my_dir
../../../../../
ควรกลับมา /
หากต้องการความคล่องแคล่วมากขึ้น:
- ไดเรกทอรีเป็นสตริงที่ไม่ว่างเปล่าประกอบด้วยตัวอักษรและตัวเลขและสัญลักษณ์
-
,_
หรือ.
- เส้นทางนี้เป็นรายการของ 0 หรือมากกว่าไดเรกทอรี
/
แยกโดยใช้ พา ธ สัมบูรณ์เริ่มต้นด้วย a/
, พา ธ สัมพัทธ์ไม่/
เส้นทางอาจรวมถึงตอนจบ
คุณต้อง "แก้ไข" เส้นทางที่สองให้เส้นทางแรก
กระบวนการแก้ไขคือ:
- ทดสอบว่าเส้นทางที่สองสัมพันธ์หรือไม่ ถ้าเป็นเช่นนั้นให้ใส่ไดเรกทอรีของเส้นทางที่แน่นอนไปยังจุดเริ่มต้นของเส้นทางที่สอง
- หากมีไดเรกทอรีใด ๆ ให้
..
ลบออกและไดเรกทอรีก่อนหน้า หากเป็นไดเรกทอรีแรกให้ลบออก - หากมีไดเรกทอรีใด ๆ ให้
.
ลบออก - เอาต์พุตพา ธ สัมบูรณ์สุดท้าย
/
คุณไม่ควรออกสิ้นสุด
คุณไม่จำเป็นต้องจัดการกับอินพุตที่ไม่ถูกต้อง คำสั่งควรใช้งานได้ไม่ว่าจะมีไดเรกทอรีที่ส่งผ่านอยู่จริงในเครื่องของคุณหรือไม่ คุณสามารถสันนิษฐานได้ว่าทุกอย่างเป็นไดเรกทอรีแม้ว่าจะมีนามสกุลก็ตาม
กรณีทดสอบ
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"
"/." "" -> "/"
นี่คือรหัสกอล์ฟเพื่อให้การส่งของคุณสั้นที่สุดในภาษาที่คุณชื่นชอบ!
mkdir $patha; cd $patha; mkdir $pathb; cd $pathb; echo `abspath`
(หรืออะไร)?