ガジェット通信 GetNews

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

【選択式問題・言語不問】if文パズルの解答と解説

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

if文パズル

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

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

問題のオープニング

あなたは、分岐の女神「イフ」の神殿にやって来ました。

この神殿では、女神の出す選択肢を正しく選べば富を約束され、間違うと死を約束されます。

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

この神殿では、仮想コードが提示されます。その結果たどりつく処理の位置を、選択肢から選びます。

// 仮想コードのルール
A = B …… 変数AにBの値を代入。
A > B …… AがBより大きい場合にtrue。それ以外はfalse。
A

問題1

// 問題
m = 2
n = 3
if (m > n) {
if (m n) {
if (m 3) {
if (m < n) {
GOAL(1)
} else {
GOAL(2)
}
} else {
GOAL(3)
}

▼▼▼▼▼▼▼▼▼▼

m = 2
n = 3
if (false) {
if (m < n) {
GOAL(1)
} else {
GOAL(2)
}
} else {
GOAL(3)
}

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

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

// 参考コード

// 関数
function GOAL(n) {console.log(“GOAL(” + n + “)”)}

// 問題
m = 2
n = 3
if (m > n) {
if (m

// 出力結果
GOAL(3)

問題2

// 問題
m = 2
n = 3
if ((m > n) || (m n) && (m n) && (m n) || (m n) && (m n) && (m 3) || (2 n) && (m n) && (m n) && (m n) && (m n) && (m n) && (m n) && (m n) && (m 3) && (2 n) && (m n) && (m n) && (m < n)) {
GOAL(3)
} else {
GOAL(4)
}
}

上記の通り、答えは2番目の選択肢の『GOAL(2)』になります。

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

// 参考コード

// 関数
function GOAL(n) {console.log(“GOAL(” + n + “)”)}

// 問題
m = 2
n = 3
if ((m > n) || (m n) && (m n) && (m

// 出力結果
GOAL(2)

問題3

// 問題
m = 2
n = 3
if ((1 < n) && (n < 3)) {
if ((1 < m) && (m < 3)) {
GOAL(1)
} else {
GOAL(2)
}
} else {
if ((1 < m) && (m < 3)) {
GOAL(3)
} else {
GOAL(4)
}
}

// 選択肢
GOAL(1)
GOAL(2)
GOAL(3)
GOAL(4)

それでは問題の仮想コードが、どのように分岐していくか、見ていきましょう。変数に値を入れていき、比較演算子の結果を真偽値に置き換えていきます。

// 仮想コードの処理

m = 2
n = 3
if ((1 < n) && (n < 3)) {
if ((1 < m) && (m < 3)) {
GOAL(1)
} else {
GOAL(2)
}
} else {
if ((1 < m) && (m < 3)) {
GOAL(3)
} else {
GOAL(4)
}
}

▼▼▼▼▼▼▼▼▼▼

m = 2
n = 3
if ((1 < 3) && (3 < 3)) {
if ((1 < m) && (m < 3)) {
GOAL(1)
} else {
GOAL(2)
}
} else {
if ((1 < m) && (m < 3)) {
GOAL(3)
} else {
GOAL(4)
}
}

▼▼▼▼▼▼▼▼▼▼

m = 2
n = 3
if (true && false) {
if ((1 < m) && (m < 3)) {
GOAL(1)
} else {
GOAL(2)
}
} else {
if ((1 < m) && (m < 3)) {
GOAL(3)
} else {
GOAL(4)
}
}

▼▼▼▼▼▼▼▼▼▼

m = 2
n = 3
if (false) {
if ((1 < m) && (m < 3)) {
GOAL(1)
} else {
GOAL(2)
}
} else {
if ((1 < m) && (m < 3)) {
GOAL(3)
} else {
GOAL(4)
}
}

▼▼▼▼▼▼▼▼▼▼

m = 2
n = 3
if (falseif ((1 < m) && (m < 3)) {
GOAL(1)
} else {
GOAL(2)
}
} else {
if ((1 < 2) && (2 < 3)) {
GOAL(3)
} else {
GOAL(4)
}
}

▼▼▼▼▼▼▼▼▼▼

m = 2
n = 3
if (falseif ((1 < m) && (m < 3)) {
GOAL(1)
} else {
GOAL(2)
}
} else {
if (true && true) {
GOAL(3)
} else {
GOAL(4)
}
}

▼▼▼▼▼▼▼▼▼▼

m = 2
n = 3
if (falseif ((1 < m) && (m < 3)) {
GOAL(1)
} else {
GOAL(2)
}
} else {
if (true) {
GOAL(3)
} else {
GOAL(4)
}
}

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

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

// 参考コード

// 関数
function GOAL(n) {console.log(“GOAL(” + n + “)”)}

// 問題
m = 2
n = 3
if ((1

// 出力結果
GOAL(3)

CodeIQ運営事務局より

柳井さん、ありがとうございました!
現在、柳井さんの最新問題が出題中です。
ぜひ挑戦してみてくださいね!

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