読者です 読者をやめる 読者になる 読者になる

プログラミングクイズサービス「CodeEval」を実際にやってみた

プログラミングの勉強を始めて早2年がたつのですが、ある程度勉強が進んだ自覚があるのですが、「次は、何をしようか…」と少しスランプ気味に陥っています。
 
作りたいサービスが思いつかないので、国内外で何かと話題を呼んでいるプログラミング特化型のクイズサービスをやってみました。いくつか有名なサービスがあるのですが今回はCodeEvalをやってみました。
 
 

CodeEvalとは?

f:id:since1991:20170206132353p:plain

18のプログラミング言語と、3万人以上が利用している人気のプログラミング系クイズサービス「CodeEval」。問題は「初級」「中級」「上級」に分かれており、それぞれ50問以上が用意されています。
 
お馴染みの「Fizz Buzz」などの多彩なクイズがたくさん揃っており、そのままオンラインエディタで解答をプログラミングすることが可能です。(外部エディタでも使用可)
 

f:id:since1991:20170206132430j:plain

 
解答結果はすぐに分かるようになっており、さまざまなクイズに解答することで自動的にユーザーランキングへ登録されるようになっています。さらにおもしろい点として、自分のマイページが解答結果に応じて、自動的に形成されていく点です。
 

f:id:since1991:20170206132440j:plain

 
これを見るだけで、どんな能力を持った人なのかが分かるようになっており、企業からオファーを受けることも可能になっています。
 
私は今回、JavaScriptで挑戦してみました。
 
 

クイズに挑戦

LL言語だと1行で終わったりする問題もあったので、JavaScriptで解くのは結構楽でした。例えば、受け取ったスペース区切りの単語列を逆順にするというこの問題。
 

f:id:since1991:20170206132359p:plain

 
Cでも難しくはないですが、JavaScriptだとこんだけになります。
 
function codeEvalExecute(line)
{  
   return line.split(" ").reverse().join(" ");
}
 
CodeEvalはJavaScript1.85までをサポートしているらしく、無名関数の略記法等が使えるので、上のコードは次のようにも書けます。
 
var codeEvalExecute = function(line) line.split(" ").reverse().join(" ");
 
中括弧とreturnを省略できるのは便利です。
 
 
難しい問題になってくると英語が得意じゃない人にとっては問題文から難しいかもしれません。ですが、Sample inputとSample outputは、問題文を理解するのに大いに役立ってくれました。
 
 
まとめ
プログラミング特化型のクイズサービス「CodeEval」は、目的が明確で、問題を解決する能力が得られました。元々は、ある企業が優秀なプログラマを探すために作ったサービスらしいですが、そのような理由は関係なく、出された問題を解くのがシンプルに楽しいです。結構ハマってしまう人も多いのではないでしょうか。
 
ただ、サービスの全てが英語なので、英語が苦手な方は少し難しい問題文が出てくると読むのに時間がかかるかもしれません。ですが、プログラミングの勉強中のひともスランプ気味の人も、息抜きになると思うので、ぜひ一度試してみてはいかがでしょうか。