Manchmal kann ein langer absoluter Pfad, z. B. in einem Befehlszeilenparameter zu einem Linux-Tool, unter Verwendung des aktuellen Arbeitsverzeichnisses als Referenz verkürzt werden:
$ pwd
/home/heh
$ cat /home/heh/mydir/myfile
my stuff
$ cat mydir/myfile
my stuff
In dieser Herausforderung sollten Sie eine Funktion oder ein Programm erstellen, das zwei Parameter erhält:
- Absoluter Pfad im Linux-Format (beginnt mit
/
) - Aktuelles Verzeichnis im selben Format
Die Ausgabe ist die kürzere der folgenden:
- Eingang 1 unverändert
- Relativer Pfad, der sich auf dieselbe Datei / dasselbe Verzeichnis bezieht wie der absolute Pfad
Feine punkte:
- Wenn Ihr Betriebssystem mit Linux kompatibel ist, können Sie das aktuelle Verzeichnis des Systems verwenden, anstatt es als Eingabe zu empfangen
- Sie können davon ausgehen, dass die Eingaben nur alphanumerische Zeichen (und Pfadtrennzeichen) enthalten.
- Sie können davon ausgehen, dass der absolute Eingabepfad
/
am Ende kein Pfadtrennzeichen enthält - Sie können davon ausgehen, dass das aktuelle Eingabeverzeichnis
/
am Ende ein Pfadtrennzeichen hat - Sie können nicht davon ausgehen, dass der absolute Pfad auf eine vorhandene Datei verweist oder dass ein Teil davon ein zugängliches Verzeichnis ist. Das aktuelle Verzeichnis kann jedoch als gültig angenommen werden
- Sie können davon ausgehen, dass es in der Nähe beider Pfade keine Symlinks gibt - da ich keine spezielle Art des Umgangs mit Symlinks benötigen möchte
- Es ist nicht erforderlich, den Fall zu unterstützen, in dem eine der Eingaben das Stammverzeichnis ist
- "Das aktuelle Verzeichnis" sollte ausgegeben werden als
.
(eine leere Zeichenkette ist ungültig)
Testfälle (Eingabe1, Eingabe2, Ausgabe):
/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
und/a/b /a/b/d/e /a/b
/
am Ende ein Pfadtrennzeichen hat ". In Ihren Beispielen ist dies jedoch nicht der Fall.