現在の作業ディレクトリを参照として使用して、Linuxツールへのコマンドラインパラメーターなどの長い絶対パスを短縮できる場合があります。
$ pwd
/home/heh
$ cat /home/heh/mydir/myfile
my stuff
$ cat mydir/myfile
my stuff
この課題では、2つのパラメーターを受け取る関数またはプログラムを作成する必要があります。
- Linux形式を使用した絶対パス(で始まる
/
) - 同じ形式を使用した現在のディレクトリ
出力は、次のうち短い方です。
- 入力1は変更なし
- 絶対パスと同じファイル/ディレクトリを参照する相対パス
細かい点:
- オペレーティングシステムがLinuxと互換性がある場合は、入力として受け取る代わりに、システムの現在のディレクトリを使用できます。
- 入力には英数字(およびパス区切り文字)のみが含まれると想定できます。
- 入力絶対パス
/
の最後にパス区切り記号がないと仮定できます - 入力現在のディレクトリ
/
の最後にパス区切り文字があると仮定できます - 絶対パスが既存のファイルを参照している、またはその一部がアクセス可能なディレクトリであると想定することはできません。ただし、現在のディレクトリは有効であると想定できます。
- いずれかのパスの近くにシンボリックリンクがないと仮定できます-シンボリックリンクを処理する特別な方法を必要としないため
- 入力のいずれかがルートディレクトリである場合をサポートする必要はありません
- 「現在のディレクトリ」として出力する必要があります
.
(空の文字列は無効です)
テストケース(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
.
私はこの方法が好きですが、別の方法が好きな人もいます
—
アナトリグ
密接に関連しています。
—
AdmBorkBork
絶対パスと相対パスの長さが同じ場合はどうなりますか?
—
デニス
これは、いくつかの重要なテストケースが欠落しています。
—
ネイサンメリル
/home/test /home/user/mydir/myfile /home/test
と/a/b /a/b/d/e /a/b
/
の最後にパス区切り文字があると仮定できます」。ただし、例ではそうではありません。