ガジェット通信

見たことのないものを見に行こう

【謎解きプログラム】ゴールを当てよ!【比較と○△□○】解答と解説

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

【謎解きプログラム】ゴールを当てよ!【比較と○△□○】

本問題は、「ゴールを当てよ!」というテーマで、プログラムにちなんだ謎を解くというものでした。

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

問題のオープニング

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

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

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

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

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

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

説明

法則を見つけよう!

左から右に、数字をたどってゴールを目指します。

左の「S」は「Start」を意味します。

ヒントを元に、たどり着く先がA, B, C, Dのいずれであるかを答えてください。

問題1

// サンプル
ヒントは「==」演算子
2 → A
1
1 → B …… Goal!
S = 1;
2 → C
2
1 → D

// 問題
ヒントは「==」演算子
3 → A
1
1 → B
S = 2;
2 → C
2
3 → D

// 選択肢
A
B
C
D

ヒントは「==」演算子となっています。このヒントを元に、「S = 数値」を、変数の初期化と見なし、その後の分岐をif文と見なすと、ゴールを見つけることができます。

この問題は、実際のif文を見ていただくのが一番分かりやすいので、サンプルコードを見ていただくことにします。

Javaサンプル

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

// 参考コード
class Main{
public static void main(String[]args) {
int s;
// サンプル
s = 1;
if (s == 1) {
if (s == 2) {
System.out.println(“A”);
} else
if (s == 1) {
System.out.println(“B”);
}
} else
if (s == 2) {
if (s == 2) {
System.out.println(“C”);
} else
if (s == 1) {
System.out.println(“D”);
}
}
// 問題
s = 2;
if (s == 1) {
if (s == 3) {
System.out.println(“A”);
} else
if (s == 1) {
System.out.println(“B”);
}
} else
if (s == 2) {
if (s == 2) {
System.out.println(“C”);
} else
if (s == 3) {
System.out.println(“D”);
}
}
}
}

// 出力
B
C

JavaScriptサンプル

以下、ブラウザのコンソールで確認できるように、JavaScriptのコードを示します。

// 参考コード
var s;

// サンプル
s = 1;
if (s == 1) {
if (s == 2) {
console.log(“A”);
} else
if (s == 1) {
console.log(“B”);
}
} else
if (s == 2) {
if (s == 2) {
console.log(“C”);
} else
if (s == 1) {
console.log(“D”);
}
}

// 問題
s = 2;
if (s == 1) {
if (s == 3) {
console.log(“A”);
} else
if (s == 1) {
console.log(“B”);
}
} else
if (s == 2) {
if (s == 2) {
console.log(“C”);
} else
if (s == 3) {
console.log(“D”);
}
}

// 出力
B
C

各分岐で、「変数sの値」と「分岐先の数字」を、「==」演算子で比較しています。

上記の通り、答えは3番目の選択肢の『C』になります。

問題2

// サンプル
ヒントは「

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

TOP