A veces, se puede acortar una ruta absoluta larga, por ejemplo, un parámetro de línea de comando a una herramienta de Linux, utilizando el directorio de trabajo actual como referencia:
$ pwd
/home/heh
$ cat /home/heh/mydir/myfile
my stuff
$ cat mydir/myfile
my stuff
En este desafío, debe hacer una función o un programa que reciba dos parámetros:
- Ruta absoluta, utilizando el formato de Linux (comienza con
/
) - Directorio actual, usando el mismo formato
La salida es la más corta de las siguientes:
- Entrada 1 sin cambios
- Ruta relativa que se refiere al mismo archivo / directorio que la ruta absoluta
Puntos finos:
- Si su sistema operativo es compatible con Linux, puede usar el directorio actual del sistema en lugar de recibirlo como entrada
- Puede suponer que las entradas contienen solo caracteres alfanuméricos (y separadores de ruta)
- Puede suponer que la ruta absoluta de entrada no tiene un separador de ruta
/
al final - Puede suponer que el directorio actual de entrada tiene un separador de ruta
/
al final - No puede suponer que la ruta absoluta se refiere a un archivo existente, o que cualquier parte de este es un directorio accesible; sin embargo, el directorio actual se puede suponer válido
- Puede suponer que no hay enlaces simbólicos en ninguna parte cerca de ninguna ruta, porque no quiero requerir ninguna forma especial de tratar con enlaces simbólicos
- No es necesario admitir el caso donde cualquiera de las entradas es el directorio raíz
- "El directorio actual" debe aparecer como
.
(una cadena vacía no es válida)
Casos de prueba (entrada1, entrada2, salida):
/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
y/a/b /a/b/d/e /a/b
/
al final". Sin embargo, en sus ejemplos, este no es el caso.