ガジェット通信 GetNews

見たことのないものを見に行こう
「ジャスティス・リーグ」特集サイト

【謎解きプログラム】この処理は?【コードを読もう】解答と解説

DATE:
  • ガジェット通信 GetNewsを≫

【謎解きプログラム】この処理は?【コードを読もう】

本問題は、表題のテーマで、プログラムにちなんだ謎を解くというものでした。

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

問題のオープニング

ある日、出社すると、あなたのPCのログイン画面に、謎の挑戦状が表示されていた。

「24時間以内に謎が解けない場合は、このPCのデータは消失する。

 謎は、あなたが真のプログラマーなら解けるものだ」

これは挑戦状ではなく脅迫状だ!

そこには、見たことのない謎が掲載されていた。

あなたは歴戦のプログラマーとして、データを救うために、この謎に挑むことになった。

問題1

Javaの基本的なメソッドの内部のコードが示されます。コードは短いものですので、普段Javaを使わない人でも読みこなせるものです。

このコードのメソッド名は■で隠されています。示された処理をたどり、どのメソッドのコードなのかを、選択肢から選んでください。

● java.lang.Boolean

public static String ■(boolean b) {
return b ? “true” : “false”;
}

● 選択肢

equals …… 同値か否か
toString …… 文字列化
compare …… 値を比較

● 答え

問題の処理を日本語で表すと、以下のようになります。

引数bがtrueなら、文字列”true”を戻す。
引数bがfalseなら、文字列”false”を戻す。

この処理は、引数を文字列に変えていると言い換えてもよいです。つまり「文字列化」を行なっているわけです。

「同値か否か」は判定していません。「値を比較」しているわけでもありません。

というわけで、答えは選択肢2の「toString …… 文字列化」になります。以下、完全な「toString」のコードを示します。

toString

public static String toString(boolean b) {
return b ? “true” : “false”;
}

その他の処理(equals、compare)のコードも掲載します。

equals

private final boolean value;

public boolean equals(Object obj) {
if (obj instanceof Boolean) {
return value == ((Boolean)obj).booleanValue();
}
return false;
}

compare

public static int compare(boolean x, boolean y) {
return (x == y) ? 0 : (x ? 1 : -1);
}

問題2

Javaの基本的なメソッドの内部のコードが示されます。コードは短いものですので、普段Javaを使わない人でも読みこなせるものです。

このコードのメソッド名は■で隠されています。示された処理をたどり、どのメソッドのコードなのかを、選択肢から選んでください。

● java.lang.Math

public static int ■(int a, int b) {
return (a value.length) {
throw new StringIndexOutOfBoundsException(endIndex);
}
int subLen = endIndex – beginIndex;
if (subLen < 0) {
throw new StringIndexOutOfBoundsException(subLen);
}
return ((beginIndex == 0) && (endIndex == value.length)) ? this
: new String(value, beginIndex, subLen);
}

contains

public boolean contains(CharSequence s) {
return indexOf(s.toString()) > -1;
}

trim

public String trim() {
int len = value.length;
int st = 0;
char[] val = value;
while ((st < len) && (val[st]

カテゴリー : デジタル・IT タグ :
CodeIQ MAGAZINEの記事一覧をみる ▶
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。