CodeIQ MAGAZINECodeIQ MAGAZINE

【謎解きプログラム】乱数で発生する数値は?【組み合わせ】解答と解説

2017.03.24 Category:CodeIQ問題解説・リーダーボード Tag:

  • 1
  • このエントリーをはてなブックマークに追加
entry

言語不問で、プログラムにちなんだ謎を解く「謎解きプログラム」。

あなたは見事、謎を解けましたか? というわけで、出題者の柳井さんによる解答と解説をどうぞ!
by CodeIQ運営事務局

【謎解きプログラム】乱数で発生する数値は?【組み合わせ】

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

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

問題のオープニング

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

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

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

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

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

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

問題1

あなたは、乱数を発生する式を提示されました。この式で発生する数値としてあり得るものを、選択肢から答えて下さい。

// 式の意味
rnd(a, b) …… a, bは、0~100の整数。a以上、b以下の整数の乱数を発生する。
+ - * / …… 加減乗除の演算子。計算結果の小数点以下は切り捨てられ整数になる。
// 問題の式
rnd(2, 4) + 1
// 選択肢
1
2
3

この問題は、実際に発生する数字をピックアップすれば、どの選択肢と一致するか知ることができます。

まずは、式を変形していく形で求めてみましょう。「rnd(a, b)」を展開したものを、「[a, a+1, ……, b-1, b]」とします。

// 式を変形
  rnd(2, 4) + 1
→ [2, 3, 4] + 1
→ [3, 4, 5]

また、コードを書いて、発生する数値の一覧を出力してみましょう。

// JavaScript コンソールに出力
for (var r1 = 2; r1 <= 4; r1 ++) {
    var res = r1 + 1;
    console.log(`rnd:${r1} + 1`, '→', res);
}
// 出力結果
rnd:2 + 1 → 3
rnd:3 + 1 → 4
rnd:4 + 1 → 5

2種類の方法で求めてみました。発生する数値は「3」「4」「5」です。このうち、選択肢にあるのは「3」になります。

というわけで、3番目の選択肢「3」が答えになります。

問題2

あなたは、乱数を発生する式を提示されました。この式で発生する数値としてあり得るものを、選択肢から答えて下さい。

// 式の意味
rnd(a, b) …… a, bは、0~100の整数。a以上、b以下の整数の乱数を発生する。
+ - * / …… 加減乗除の演算子。計算結果の小数点以下は切り捨てられ整数になる。
// 問題の式
rnd(3, 5) * 3
// 選択肢
3
5
8
12
17

この問題は、実際に発生する数字をピックアップすれば、どの選択肢と一致するか知ることができます。

まずは、式を変形していく形で求めてみましょう。「rnd(a, b)」を展開したものを、「[a, a+1, ……, b-1, b]」とします。

// 式を変形
  rnd(3, 5) * 3
→ [3, 4, 5] * 3
→ [9, 12, 15]

また、コードを書いて、発生する数値の一覧を出力してみましょう。

// JavaScript コンソールに出力
for (var r1 = 3; r1 <= 5; r1 ++) {
    var res = r1 * 3;
    console.log(`rnd:${r1} * 3`, '→', res);
}
// 出力結果
rnd:3 * 3 → 9
rnd:4 * 3 → 12
rnd:5 * 3 → 15

2種類の方法で求めてみました。発生する数値は「9」「12」「15」です。このうち、選択肢にあるのは「12」になります。

というわけで、4番目の選択肢「12」が答えになります。

問題3

あなたは、乱数を発生する式を提示されました。この式で発生する数値としてあり得るものを、選択肢から答えて下さい。

// 式の意味
rnd(a, b) …… a, bは、0~100の整数。a以上、b以下の整数の乱数を発生する。
+ - * / …… 加減乗除の演算子。計算結果の小数点以下は切り捨てられ整数になる。
// 問題の式
rnd(3, 5) * rnd(2, 3) + 1
// 選択肢
3
6
8
13
15

この問題は、実際に発生する数字をピックアップすれば、どの選択肢と一致するか知ることができます。

まずは、式を変形していく形で求めてみましょう。「rnd(a, b)」を展開したものを、「[a, a+1, ……, b-1, b]」とします。

// 式を変形
  rnd(3, 5) * rnd(2, 3) + 1
→ [3, 4, 5] * [2, 3] + 1
→ [6, 9, 8, 12, 10, 15] + 1
→ [7, 10, 9, 13, 11, 16]

また、コードを書いて、発生する数値の一覧を出力してみましょう。

// JavaScript コンソールに出力
for (var r1 = 3; r1 <= 5; r1 ++) {
    for (var r2 = 2; r2 <= 3; r2 ++) {
        var res = r1 * r2 + 1;
        console.log(`rnd:${r1} * rnd:${r2} + 1`, '→', res);
    }
}
// 出力結果
rnd:3 * rnd:2 + 1 → 7
rnd:3 * rnd:3 + 1 → 10
rnd:4 * rnd:2 + 1 → 9
rnd:4 * rnd:3 + 1 → 13
rnd:5 * rnd:2 + 1 → 11
rnd:5 * rnd:3 + 1 → 16

2種類の方法で求めてみました。発生する数値は「7」「10」「9」「13」「11」「16」です。このうち、選択肢にあるのは「13」になります。

というわけで、4番目の選択肢「13」が答えになります。

CodeIQ運営事務局より

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

  • 1
  • このエントリーをはてなブックマークに追加

■関連記事

数学の問題をプログラミングで解こう!「ロンリー・ルーク」問題解説... 問題のおさらい 自然数 n, k に対し、縦横 n×n のマス目にチェスのルークの駒を k 個配置することを考えます。 このとき、自身から見て上下方向・左右方向のいずれにも他の駒が存在しないような駒を「はぐれルーク」と呼びます。 例えば以下は、(n, k)=(4, 5) のときの駒の配置例を示...
【謎解きプログラム】どんな数字になる?【整数のキャスト】... 【謎解きプログラム】どんな数字になる?【整数のキャスト】 本問題は、表題のテーマで、プログラムにちなんだ謎を解くというものでした。 それでは以下、各問題とその解答を見ていきましょう。 問題のオープニング ある日、出社すると、あなたのPCのログイン画面に、謎の挑戦状が表示されていた。 「24...
【謎解きプログラム】テキストのバイナリは?【テキスト バイナリ】解答と解説... 【謎解きプログラム】テキストのバイナリは?【テキスト バイナリ】 本問題は、表題のテーマで、プログラムにちなんだ謎を解くというものでした。 それでは以下、各問題とその解答を見ていきましょう。 問題のオープニング ある日、出社すると、あなたのPCのログイン画面に、謎の挑戦状が表示されていた。 ...
【謎解きプログラム】条件に当てはまる文字列は?【正規表現】解答と解説... 【謎解きプログラム】条件に当てはまる文字列は?【正規表現】 本問題は、表題のテーマで、プログラムにちなんだ謎を解くというものでした。 それでは以下、各問題とその解答を見ていきましょう。 問題のオープニング ある日、出社すると、あなたのPCのログイン画面に、謎の挑戦状が表示されていた。 「2...
「放物線とマス目の関係」問題の解答と解説... table.nabe{ margin-left:30px; } .nabefloat{ float:right; } table.nabe td, table.nabe th{ padding:3px; } table.nabe th{ ...
【謎解きプログラム】データをバイナリで見てみよう【バイナリ】解答と解説... 【謎解きプログラム】データをバイナリで見てみよう【バイナリ】 本問題は、表題のテーマで、プログラムにちなんだ謎を解くというものでした。 それでは以下、各問題とその解答を見ていきましょう。 問題のオープニング ある日、出社すると、あなたのPCのログイン画面に、謎の挑戦状が表示されていた。 「...

今週のPickUPレポート

新着記事

週間ランキング

CodeIQとは

CodeIQ(コードアイキュー)とは、自分の実力を知りたいITエンジニア向けの、実務スキル評価サービスです。

CodeIQご利用にあたって
関連サイト
codeiq

リクルートグループサイトへ