Terkadang jalur absolut yang panjang, misalnya parameter baris perintah ke alat linux, dapat dipersingkat, menggunakan direktori kerja saat ini sebagai referensi:
$ pwd
/home/heh
$ cat /home/heh/mydir/myfile
my stuff
$ cat mydir/myfile
my stuff
Dalam tantangan ini, Anda harus membuat fungsi atau program yang menerima dua parameter:
- Path absolut, menggunakan format linux (dimulai dengan
/
) - Direktori saat ini, menggunakan format yang sama
Outputnya lebih pendek dari yang berikut:
- Masukan 1 tidak berubah
- Path relatif yang merujuk ke file / direktori yang sama dengan path absolut
Poin bagus:
- Jika sistem operasi Anda kompatibel dengan linux, Anda dapat menggunakan direktori sistem saat ini alih-alih menerimanya sebagai input
- Anda dapat mengasumsikan input hanya berisi karakter alfanumerik (dan pemisah jalur)
- Anda dapat mengasumsikan jalur absolut input tidak memiliki pemisah jalur
/
pada akhirnya - Anda dapat mengasumsikan direktori input saat ini memiliki pemisah jalur
/
di akhir - Anda tidak dapat berasumsi bahwa path absolut merujuk ke file yang ada, atau bagian mana pun dari itu adalah direktori yang dapat diakses; Namun, direktori saat ini dapat dianggap valid
- Anda dapat berasumsi bahwa tidak ada symlink di dekat kedua jalur - karena saya tidak ingin memerlukan cara khusus untuk berurusan dengan symlink
- Tidak perlu mendukung kasus di mana salah satu input adalah direktori root
- "Direktori saat ini" harus berupa keluaran sebagai
.
(string kosong tidak valid)
Kasus uji (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
dan/a/b /a/b/d/e /a/b
/
pada akhirnya". Namun, dalam contoh Anda, ini tidak terjadi.