A volte un percorso assoluto lungo, ad esempio un parametro della riga di comando per uno strumento linux, può essere abbreviato, usando l'attuale directory di lavoro come riferimento:
$ pwd
/home/heh
$ cat /home/heh/mydir/myfile
my stuff
$ cat mydir/myfile
my stuff
In questa sfida, è necessario creare una funzione o un programma che riceve due parametri:
- Percorso assoluto, usando il formato linux (inizia con
/
) - Directory corrente, utilizzando lo stesso formato
L'output è il più breve dei seguenti:
- Ingresso 1 invariato
- Percorso relativo che fa riferimento allo stesso file / directory del percorso assoluto
Punti positivi:
- Se il tuo sistema operativo è compatibile con Linux, puoi utilizzare la directory corrente del sistema invece di riceverla come input
- Puoi assumere che gli input contengano solo caratteri alfanumerici (e separatori di percorso)
- Puoi supporre che il percorso assoluto di input non abbia un separatore di percorso
/
alla fine - Si può presumere che la directory corrente di input abbia un separatore di percorso
/
alla fine - Non si può presumere che il percorso assoluto si riferisca a un file esistente o che qualsiasi parte di esso sia una directory accessibile; tuttavia, la directory corrente può essere considerata valida
- Puoi presumere che non ci siano link simbolici da nessuna parte vicino a nessuno dei due percorsi, perché non voglio richiedere alcun modo speciale per gestire i link simbolici
- Non è necessario supportare il caso in cui uno degli input sia la directory principale
- "La directory corrente" deve essere emessa come
.
(una stringa vuota non è valida)
Casi di test (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
e/a/b /a/b/d/e /a/b
/
alla fine". Tuttavia, nei tuoi esempi, non è così.