体験を伝える―『ガジェット通信』の考え方

面白いものを探しにいこう 本物を体験し体感しよう 会いたい人に会いに行こう 見たことのないものを見に行こう そしてそれをやわらかくみんなに伝えよう [→ガジェ通についてもっと詳しく] [→ガジェット通信フロアについて]

【選択式問題】相対URLパズル【言語不問】解答と解説

デジタル・IT

相対URLパズル

本問題は、仮想コードのルールに従った処理の結果を、選択肢から選ぶというものでした。

それでは以下、各問題とその解答を見ていきましょう。

問題のオープニング

あなたは、相対URLの女神「レラ=ティブ」の神殿にやって来ました。

この神殿では、女神の出す問題に正解すれば富を約束され、間違うと死を約束されます。

あなたは、歴戦のプログラマーとして、女神の意図をくんで解答しなければなりません。

この神殿では、仮想コードが提示されます。その計算結果を、選択肢から選んでください。

// 仮想コードのルール
resolve(arg1, arg2) ……
 arg1は基準となる絶対URL、arg2は相対URLの指定。
 arg1に対するarg2を解決した絶対URLを出力する。

資料

相対URLの挙動については、W3CのURLrelative path state)を見るとよいでしょう。

日本語の文書だと、URIURIとファイルディレクトリなどが簡潔で分かりやすいと思います。より詳しく見たい場合は、Uniform Resource Identifier (URI): 一般的構文あたりも役に立つと思います。

問題1

// 問題
resolve(“http://ab.c/def/ghi/jkl/”, “..”);

// 選択肢

http://ab.c/def/ghi/jkl/
http://ab.c/def/ghi/
http://ab.c/def/
http://ab.c/

それでは問題の答えが、どのような値になるか、見ていきましょう。

// 仮想コードの処理
「http://ab.c/def/ghi/jkl/」のディレクトリは「http://ab.c/def/ghi/jkl/」。

そこから「..」で、1つ上のディレクトリに移動して「http://ab.c/def/ghi/」。

上記の通り、答えは2番目の選択肢の『http://ab.c/def/ghi/』になります。

Javaサンプル

以下、サンドボックスの言語「Java8」を利用して、実行確認できるコードを示します。コード欄に、下記のコードをコピペして、INPUTは空で、RUNボタンを押してください。

// 参考コード
import java.net.URI;
class Main{
public static void main(String[]args) throws Exception {
// 問題
resolve(“http://ab.c/def/ghi/jkl/”, “..”);
}
// 関数
public static void resolve(String arg1, String arg2) throws Exception {
System.out.println(new URI(arg1).resolve(arg2));
}
}

1 2 3 4次のページ
CodeIQ MAGAZINEの記事一覧をみる
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。
GetNews girl / GetNews boy

オスカー2018年晴れ着撮影会