ガジェット通信 GetNews

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

【選択式問題】ループ処理パズル【言語不問】解答と解説

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

ループ処理パズル

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

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

問題のオープニング

あなたは、ループの女神「ルー=プ」の神殿にやって来ました。

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

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

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

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

問題1

// 問題
cnt = 0
while (cnt < 3) {
cnt = cnt + 1
}
ANSWER(cnt)

// 選択肢
cntは0
cntは1
cntは2
cntは3

それでは問題の答えが、どのような値になるか、見ていきましょう。ループ処理を順に見ていき、変数の値を確かめていきます。

// 仮想コードの処理

cnt = 0 // 変数cntは0

▼▼▼▼▼▼▼▼▼▼

while (cnt < 3) {
cnt = cnt + 1
}

while (0 < 3) { // 変数cntは0、「0 < 3」はtrueなので{ }内を処理
cnt = 0 + 1 // 変数cntは0+1で、1になる
}

▼▼▼▼▼▼▼▼▼▼

while (cnt < 3) {
cnt = cnt + 1
}

while (1 < 3) { // 変数cntは1、「1 < 3」はtrueなので{ }内を処理
cnt = 1 + 1 // 変数cntは1+1で、2になる
}

▼▼▼▼▼▼▼▼▼▼

while (cnt < 3) {
cnt = cnt + 1
}

while (2 < 3) { // 変数cntは2、「2 < 3」はtrueなので{ }内を処理
cnt = 2 + 1 // 変数cntは2+1で、3になる
}

▼▼▼▼▼▼▼▼▼▼

while (cnt < 3) {
cnt = cnt + 1
}

while (3 < 3) // 変数cntは3、「3 < 3」はfalseなので終了

▼▼▼▼▼▼▼▼▼▼

ANSWER(cnt)

ANSWER(3) // 変数cntは3、3が解答

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

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

// 参考コード

// 関数
function ANSWER(n) {console.log(“cntは” + n)}

// 問題
cnt = 0
while (cnt < 3) {
cnt = cnt + 1
}
ANSWER(cnt)

// 出力結果
cntは3

問題2

// 問題
cnt = 0
i = 0
while (i < 3) {
cnt = cnt + i
i = i + 1
}
ANSWER(cnt)

// 選択肢
cntは0
cntは1
cntは2
cntは3

それでは問題の答えが、どのような値になるか、見ていきましょう。ループ処理を順に見ていき、変数の値を確かめていきます。

// 仮想コードの処理

cnt = 0 // 変数cntは0
i = 0 // 変数iは0

▼▼▼▼▼▼▼▼▼▼

while (i < 3) {
cnt = cnt + i
i = i + 1
}

while (0 < 3) { // 変数iは0、「0 < 3」はtrueなので{ }内を処理
cnt = 0 + 0 // 変数cntは0+0で、0になる
i = 0 + 1 // 変数iは0+1で、1になる
}

▼▼▼▼▼▼▼▼▼▼

while (i < 3) {
cnt = cnt + i
i = i + 1
}

while (1 < 3) { // 変数iは1、「1 < 3」はtrueなので{ }内を処理
cnt = 0 + 1 // 変数cntは0+1で、1になる
i = 1 + 1 // 変数iは1+1で、2になる
}

▼▼▼▼▼▼▼▼▼▼

while (i < 3) {
cnt = cnt + i
i = i + 1
}

while (2 < 3) { // 変数iは2、「2 < 3」はtrueなので{ }内を処理
cnt = 1 + 2 // 変数cntは1+2で、3になる
i = 2 + 1 // 変数iは2+1で、3になる
}

▼▼▼▼▼▼▼▼▼▼

while (i < 3) {
cnt = cnt + i
i = i + 1
}

while (3 < 3) // 変数iは3、「3 < 3」はfalseなので終了

▼▼▼▼▼▼▼▼▼▼

ANSWER(cnt)

ANSWER(3) // 変数cntは3、3が解答

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

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

// 参考コード

// 関数
function ANSWER(n) {console.log(“cntは” + n)}

// 問題
cnt = 0
i = 0
while (i < 3) {
cnt = cnt + i
i = i + 1
}
ANSWER(cnt)

// 出力結果
cntは3

問題3

// 問題
cnt = 0
i = 0
while (cnt < 10) {
cnt = cnt + i
i = i + 1
}
ANSWER(cnt)

// 選択肢
cntは6
cntは7
cntは8
cntは9
cntは10

それでは問題の答えが、どのような値になるか、見ていきましょう。ループ処理を順に見ていき、変数の値を確かめていきます。

// 仮想コードの処理

cnt = 0 // 変数cntは0
i = 0 // 変数iは0

▼▼▼▼▼▼▼▼▼▼

while (cnt < 10) {
cnt = cnt + i
i = i + 1
}

while (0 < 10) { // 変数cntは0、「0 < 10」はtrueなので{ }内を処理
cnt = 0 + 0 // 変数cntは0+0で、0になる
i = 0 + 1 // 変数iは0+1で、1になる
}

▼▼▼▼▼▼▼▼▼▼

while (cnt < 10) {
cnt = cnt + i
i = i + 1
}

while (0 < 10) { // 変数cntは0、「0 < 10」はtrueなので{ }内を処理
cnt = 0 + 1 // 変数cntは0+1で、1になる
i = 1 + 1 // 変数iは1+1で、2になる
}

▼▼▼▼▼▼▼▼▼▼

while (cnt < 10) {
cnt = cnt + i
i = i + 1
}

while (1 < 10) { // 変数cntは1、「1 < 10」はtrueなので{ }内を処理
cnt = 1 + 2 // 変数cntは1+2で、3になる
i = 2 + 1 // 変数iは2+1で、3になる
}

▼▼▼▼▼▼▼▼▼▼

while (cnt < 10) {
cnt = cnt + i
i = i + 1
}

while (3 < 10) { // 変数cntは3、「3 < 10」はtrueなので{ }内を処理
cnt = 3 + 3 // 変数cntは3+3で、6になる
i = 3 + 1 // 変数iは3+1で、4になる
}

▼▼▼▼▼▼▼▼▼▼

while (cnt < 10) {
cnt = cnt + i
i = i + 1
}

while (6 < 10) { // 変数cntは6、「6 < 10」はtrueなので{ }内を処理
cnt = 6 + 4 // 変数cntは6+4で、10になる
i = 4 + 1 // 変数iは4+1で、5になる
}

▼▼▼▼▼▼▼▼▼▼

while (cnt < 10) {
cnt = cnt + i
i = i + 1
}

while (10 < 10) // 変数cntは10、「10 < 10」はfalseなので終了

▼▼▼▼▼▼▼▼▼▼

ANSWER(cnt)

ANSWER(10) // 変数cntは10、10が解答

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

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

// 参考コード

// 関数
function ANSWER(n) {console.log(“cntは” + n)}

// 問題
cnt = 0
i = 0
while (cnt < 10) {
cnt = cnt + i
i = i + 1
}
ANSWER(cnt)

// 出力結果
cntは10

CodeIQ運営事務局より

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

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