競技プログラミングにおける私の使用言語、開発環境および利用サイト
今までにブログやTwitterで何度か言及しているように、私は数ヶ月前から競技プログラミングを楽しんでいます。この記事では、その際に私が用いているプログラミング言語および開発環境や、練習に利用したりコンテストに参加したりしているサイトについて述べます。
プログラミング言語
Haskell
数ヶ月前に使い始めました。競技プログラミングを始めた理由の一つは、Haskellの習得でした。今のところ、yukicoderにおける★1レベルや、AtCoder Regular Contest (ARC)におけるA問題に相当するような、比較的容易な問題への解答に使用しているにすぎません。
C++
かつて一度挫折しましたが、最近再び学び始めました。標準テンプレートライブラリの有用性を感じています。
開発環境
競技プログラミングに限らず、私は以下のような環境でプログラミングを行っています。
プログラミングだけではなく、それ以外の用途にも利用しているのは、Windows 10がインストールされたノートPCです。本来このPCにはWindows 7が搭載されていましたが、安易にアップデートを行いました。
また、私はコードを編集する際に、テキストエディタNotepad++をたいてい利用しています。その理由としては以下の項目が挙げられます。
- 導入が容易である
- 動作が軽快である
- プラグインを利用して、機能を拡張できる
- (PythonやC++について)入力補完機能が標準で備わっている
- (Pythonについて)関数やメソッドについてのヒントが表示される
Visual Studio 2015やNetBeansといった統合開発環境もインストールしてはいますが、少なくとも競技プログラミングにはあまり使用していません。
利用しているサイト
yukicoder
普段の練習によく利用しています。また、主に毎週金曜日の夜に開催されるコンテストにも時々参加しています。テストケースを閲覧できるのは、練習の際に自分の書いたコードの問題点を探す際に役立ちます。また、種々の条件による問題等の並べ替えや、入出力例の1クリックによるコピーなど、多数の便利な機能があります。さらに、各問題の解説や、ヘルプおよびWikiの内容も充実しています。現時点の私は★2の問題が解けたり解けなかったりするというレベルです。
Aizu Online Judge
普段の練習に利用しています。プログラミングコンテストの過去問からなる問題集のほかに、プログラミングの基礎や、アルゴリズム、動的計画法、数論などの各分野を学べるコースを利用できるという特徴があります。
感想
C++とJavaはたいていのオンラインジャッジやプログラミングコンテストで利用可能であるようです。それゆえ、これらの言語にもう少し触れる必要がありそうです。
Notepad++以外のエディタを試してみるのもいいかもしれません。最近では、Visual Studio Codeが気になっています。
今後は上掲のサイトに加え、CodeforcesやTopCoderなども利用したいと考えています。特に、Codeforcesは使いやすそうに見えます。