Às vezes, um longo caminho absoluto, por exemplo, um parâmetro de linha de comando para uma ferramenta Linux, pode ser reduzido, usando o diretório de trabalho atual como referência:
$ pwd
/home/heh
$ cat /home/heh/mydir/myfile
my stuff
$ cat mydir/myfile
my stuff
Neste desafio, você deve criar uma função ou um programa que receba dois parâmetros:
- Caminho absoluto, usando o formato linux (começa com
/
) - Diretório atual, usando o mesmo formato
A saída é a mais curta do seguinte:
- Entrada 1 inalterada
- Caminho relativo que se refere ao mesmo arquivo / diretório que o caminho absoluto
Pontos finos:
- Se o seu sistema operacional for compatível com linux, você poderá usar o diretório atual do sistema em vez de recebê-lo como entrada
- Você pode assumir que as entradas contêm apenas caracteres alfanuméricos (e separadores de caminho)
- Você pode assumir que o caminho absoluto de entrada não possui um separador de caminho
/
no final - Você pode assumir que o diretório atual de entrada possui um separador de caminho
/
no final - Você não pode assumir que o caminho absoluto se refere a um arquivo existente ou que qualquer parte dele seja um diretório acessível; no entanto, o diretório atual pode ser considerado válido
- Você pode assumir que não há links simbólicos em nenhum lugar próximo a nenhum dos caminhos - porque eu não quero exigir nenhuma maneira especial de lidar com links simbólicos
- Não há necessidade de suportar o caso em que uma das entradas é o diretório raiz
- "O diretório atual" deve ser exibido como
.
(uma sequência vazia não é válida)
Casos de teste (entrada1, entrada2, saída):
/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
/
no final". No entanto, em seus exemplos, esse não é o caso.