プログラミングを上達させたい

プログラミングの勉強を始めた、情報学専攻の大学院生です。モチベーション維持のため、ブログに勉強したことを書いていきます。→就職。IT全然関係ない仕事をしています

CodinGameが"初めて触るプログラミング言語の練習"にオススメ

新しいプログラミング言語に初めて触る、という際に、意外と"言語の内容"より"その言語の勉強の準備"に手間取ることがあります。処理系のインストール、エディタや実行環境を整えて・・・面倒くさいんだよ!!!!!
また、モチベーションの維持も大変です。簡単な問題を一人で解いていくだけではあまり面白くありません。

そんな人にちょうど良さそうなサイトがありました。
CodinGameというサイトです。
www.codingame.com

何が良いって、

  • ブラウザ上でコードを書いて実行までできる

 ⇒エディタ、実行環境を整えなくていい!

 ⇒C#, C++, Java, Javascript, Python3, Bash, C, Clojure, Dart, F#, Go, Groovy, Haskell, Kotlin, Lua, ObjectiveC, OCaml, Pascal, Perl, PHP, Python2, Ruby, Rust, Scala, Swift, VB.NETが使えます。

  • ゲーム形式

 ⇒やる気が出る!みんなゲームが大好き!

というサイトなのですよ。日本語対応していないのが残念ですが、「英語の勉強ができる!」とポジティブにとらえましょう。


さて、「色んなゲームを"コードを書いて"クリアしていく」というのがこのサイトのメインコンテンツですが、僕がハマったのがこの"CLASH OF CODE"というコンテンツ。
www.codingame.com

これは、"数人が集まって、同じ問題(1問)を早解きする"というゲームがひたすら行われる、というものです。

どんな感じか紹介します。

  • まず、ゲームに参加する(最大8人でプレーのようです)

上記のリンクの「JOIN A CLASH」をクリックすると、こんな感じになります。マッチング待ち、という感じですね。
※僕以外の方のユーザー名は消しています。実際は表示されます。友人とかとマッチングしたらアツいですね
f:id:frfrfrfr:20180602233329p:plain
長くとも2分くらいで締め切られ、ゲームが始まります。

  • ゲーム開始

開始と同時に、問題が開示され、下記のような画面になります。
※説明のため、少しコードを書いた状態の画面です。
f:id:frfrfrfr:20180602233459p:plain

左に(英語で)問題が出ます。問題文と、入力の条件、そして入力例&解答例が書かれています。この画面の右側のところに、直接コードを書けるようになっています。
何がありがたいって、標準入出力まわりはすでに書いていてくれていることです。初めて触る言語でも、処理の部分に集中できます。やったね!

  • コードを書いたら

そして、コードが完成したら、右下の「PLAY ALL TESTCASES」を押してコードが合っているか確かめましょう。ここで、そもそもコードにエラーがある、テストケースのうち何問中何問正解している、など確かめられます。

そして全部正解したら「SUBMIT」をクリックしてクリア!いかにはやくここまで辿り着けるか、が勝負です。

ちなみに何問か解いてみたのですが、AtCoderのように「実行速度」が問われる問題はなさそうです。あくまで、「ちゃんと問題内容を把握して、間違いなく実装できるか、そしてそれがはやいか」が問われるようです。

問題の書き方も
①何をすべきか書いてある問題
 (ex.「入力される文字列が次の条件を満たしているか、確かめなさい」)
②入力⇒出力が複数書いてあって、自分でルールを発見してコードを書く問題
 (ex."10⇒2、198⇒3、198652⇒6、1243676781⇒10"のみ書いてある⇒「入力の数字の桁数を答える」と推理して解く)
の2種類ありました。②は謎解きパズルみたいでわくわくします。

また、問題の制限時間は15分のようで、小さいサイクルでたくさん問題に取り組むことができます。早く解けた場合はすぐに次のCLASHに参加できるので、ガンガン取り組めます。

楽しい!!!!!!!!
以上です。


追記
もう一つ、問題のパターンがありました。
詳しくはコチラの記事をご覧ください!