CodeIQ MAGAZINECodeIQ MAGAZINE

世界の秘宝をゲットせよ!~その23~問題解説 #javascript

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

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

JavaScriptで書かれたプログラムを正しく修正して、鍵となるアスキーアートを出力する「世界の秘宝をゲットせよ!」問題シリーズ。

23個めの秘宝「トロイアの木馬」はぶじゲットできましたか?

というわけで解説をどうぞ!
by クロノス・クラウン合同会社 柳井政和

今回の問題

今回の『世界の秘宝をゲットせよ23――「トロイアの木馬」編――』は、以下のような問題でした。

問題

あなたは、世界でもトップレベルの「トレジャーハンター」だ。そんなあなたに、「ムーン=ジェルマン」という人物から手紙が届いた。その中には、便箋と地図と10万ドルの小切手が入っていた。

「仕事を依頼したい。地図の場所にパズルボックスがある。君の手で、パズルを解き、中の秘宝を私に届けて欲しい。成功時には100万ドル支払う。小切手は手付金だ」

「また、あの人物からか」

あなたは秘境に飛び、地図の場所に行き、パズルボックスを見つけた。その箱には、JavaScriptのコードが書いてあり、所々に「正解のコードを選ぶ」ボタンが付いていた。

あなたは、その昔、プログラマーとして活躍していた。あなたは精神を統一して、コードのパズルを解き始めた。

コード

出力結果)トロイアの木馬

というわけで、問題を1つずつ説明して、解答を書いていきます。3つの選択肢の中から、正解を見つけていきます。

個別の問題の解説

問題1

問題1は、JavaScriptのURIエンコードを行う関数を問う問題です。

「URIencode」「URI」という組み込み関数は存在しません。

「encodeURI」という組み込み関数は存在して、URIエンコードを行ってくれます。

そのため答えは「encodeURI」です。そのことから、この問題では「緑」を選ぶと正解になります。

問題2

問題2は、正規表現についての知識を問う問題です。

Javascriptには、「\e」という特殊文字はありません。

「\w」は、アンダースコアを含む英数字に一致する特殊文字です。

「\d」は数字に一致する特殊文字です。

そのため答えは「\w」です。そのことから、この問題では「緑」を選ぶと正解になります。

問題3

問題3は、配列の関数「map」についての問題です。この「map」は関数を引数に取ります。そして、配列の全ての要素に対して関数を実行し、その戻り値からなる新しい配列を生成します。

そのことから、この問題では「function」の「青」を選ぶと正解になります。

問題4

問題4は、答えに迷う問題です。この問題を解く際には、次の行のコードを見て下さい。

plot(pos[i], pos[i + 1]);

「pos[i]」「pos[i + 1]」のように、配列の値を2つずつ参照しています。

そのため、再初期化式では、変数「i」を2ずつ増加させていけばよさそうだと推測できます。

ここは、JavaScriptの仕様からではなく、処理の内容から元のコードを推測するという問題になります。

「2」の「緑」を選ぶと正解になります。

正解コードまとめ

以下、コードをまとめておきます。

成績の分布

今回の問題の成績をまとめておきます。

攻略時間の平均は、67.11秒でした。前回までの平均68.86秒とほぼ同じです。

平均的な難易度の問題だったようです。

10秒単位の時間の分布は、下のグラフの通りです。今回は、60秒未満をたたき出せば、まずまずの成績だと思います。

確認回数の平均は、1.77回でした。前回までの平均1.58回よりわずかに多いです。

確認回数の分布は、下のグラフの通りとなりました。

これまでの問題の攻略時間の平均と、確認回数の平均は、以下の通りです。

問題 攻略時間(秒) 確認回数
23 67.11 1.77
22 72.40 1.60
21 50.27 1.42
20 47.23 1.39
19 59.37 2.15
18 42.51 1.70
17 60.73 1.93
16 52.47 1.57
15 49.41 1.25
14 84.02 1.90
13 83.74 1.90
12 59.11 1.58
11 98.52 1.93
10 94.36 1.78
9 140.56 1.87
8 42.92 1.15
7 89.75 1.56
6 66.99 1.44
5 76.47 1.28
4 50.67 1.09
3 62.67 1.45
2 63.09 1.43
1 73.41 1.41
平均 68.78 1.58

CodeIQ運営事務局より

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

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

■この記事を書いた人

avatar

クロノス・クラウン合同会社 柳井政和

クロノス・クラウン合同会社 代表。ゲームやアプリを作ったり、プログラムを 書いたり、文章を書いたり、絵を描いたり。『マンガでわかるJavaScript』、 CodeIQの問題を解説付きでまとめた『プログラマのためのコードパズル~ JavaScriptで挑むコードゴルフとアルゴリズム』執筆。 twitter: @ruten Web Site: http://crocro.com/

■関連記事

【謎解きプログラム】条件に当てはまる文字列は?【正規表現】解答と解説... 【謎解きプログラム】条件に当てはまる文字列は?【正規表現】 本問題は、表題のテーマで、プログラムにちなんだ謎を解くというものでした。 それでは以下、各問題とその解答を見ていきましょう。 問題のオープニング ある日、出社すると、あなたのPCのログイン画面に、謎の挑戦状が表示されていた。 「2...
【謎解きプログラム】乱数で発生する数値は?【組み合わせ】解答と解説... 【謎解きプログラム】乱数で発生する数値は?【組み合わせ】 本問題は、表題のテーマで、プログラムにちなんだ謎を解くというものでした。 それでは以下、各問題とその解答を見ていきましょう。 問題のオープニング ある日、出社すると、あなたのPCのログイン画面に、謎の挑戦状が表示されていた。 「24...
「放物線とマス目の関係」問題の解答と解説... table.nabe{ margin-left:30px; } .nabefloat{ float:right; } table.nabe td, table.nabe th{ padding:3px; } table.nabe th{ ...
【謎解きプログラム】データをバイナリで見てみよう【バイナリ】解答と解説... 【謎解きプログラム】データをバイナリで見てみよう【バイナリ】 本問題は、表題のテーマで、プログラムにちなんだ謎を解くというものでした。 それでは以下、各問題とその解答を見ていきましょう。 問題のオープニング ある日、出社すると、あなたのPCのログイン画面に、謎の挑戦状が表示されていた。 「...
【謎解きプログラム】データベースを扱ってみよう【SQLite】解答と解説... 【謎解きプログラム】データベースを扱ってみよう【SQLite】 本問題は、表題のテーマで、プログラムにちなんだ謎を解くというものでした。 それでは以下、各問題とその解答を見ていきましょう。 問題のオープニング ある日、出社すると、あなたのPCのログイン画面に、謎の挑戦状が表示されていた。 ...
【謎解きプログラム】弾幕の軌跡を作ってみよう【描画】解答と解説... 【謎解きプログラム】弾幕の軌跡を作ってみよう【描画】 本問題は、表題のテーマで、プログラムにちなんだ謎を解くというものでした。 それでは以下、各問題とその解答を見ていきましょう。 問題のオープニング ある日、出社すると、あなたのPCのログイン画面に、謎の挑戦状が表示されていた。 「24時間...

今週のPickUPレポート

新着記事

週間ランキング

CodeIQとは

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

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

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