Іноді довгий абсолютний шлях, наприклад, параметр командного рядка до інструмента Linux, може бути скорочений, використовуючи поточну робочу директорію в якості посилання:
$ pwd
/home/heh
$ cat /home/heh/mydir/myfile
my stuff
$ cat mydir/myfile
my stuff
У цьому виклику слід створити функцію або програму, яка отримує два параметри:
- Абсолютний шлях, використовуючи формат linux (починається з
/
) - Поточний каталог, використовуючи той самий формат
Вихід коротший з наступного:
- Введення 1 без змін
- Відносний шлях, який посилається на той самий файл / каталог, як і абсолютний шлях
Тонкі бали:
- Якщо ваша операційна система сумісна з linux, ви можете використовувати поточний каталог системи замість того, щоб отримувати її як вхід
- Можна припустити, що входи містять лише буквено-цифрові символи (та роздільники шляхів)
- Можна припустити, що абсолютний шлях введення не має в
/
кінці розділювача - Можна припустити, що в каталозі поточного входу є роздільник шляху
/
в кінці - Ви не можете припустити, що абсолютний шлях відноситься до наявного файлу або що будь-яка його частина є доступним каталогом; однак, поточний каталог можна вважати дійсним
- Ви можете припустити, що поблизу обох контурів немає жодних посилань - тому що я не хочу вимагати особливих способів поводження з символьними посиланнями
- Не потрібно підтримувати випадок, коли будь-який із входів є кореневою каталогом
- "Поточний каталог" повинен виводитися як
.
(порожній рядок недійсний)
Тестові приклади (вхід1, вхід2, вихід):
/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
і/a/b /a/b/d/e /a/b
/
в кінці". Однак у ваших прикладах це не так.