17
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AtCoderにJavaScriptで挑む方法

Last updated at Posted at 2020-03-31

AtCoderにJavaScript(またはTypeScript)で挑むときに最低限押さえておいた方が良いと思われるポイントを紹介します。競プロ初心者の方が対象です。

その1: 提出言語にJavaScriptでなくTypeScriptを選択する

JavaScriptでコードを記述する場合でも、提出言語はTypeScriptを選択した方が良いです。
image.png

というのも、AtCoderのサポートするJavaScriptランタイムはNode.js v5.12のみであり、これはいまや使いものになりません(例えばアロー関数や分割代入が使えません1)。

TypeScriptもv2.1.6とそれほど新しいわけではありませんが、ES2015が問題なく利用できますし、AtCoderのTSはコンパイラオプションが緩いのでJSのコードがそのまま実行できます。

その2: ts-nodeとonline-judge-toolsを使ってローカルでコーディング/テストする

AtCoderはブラウザ上でコーディングやテストをすることが出来ますが、やはり慣れたエディタで作業したり、テストを効率良く行うためにはローカル環境が便利です。

ここではts-nodeonline-judge-toolsを使った簡単なローカル環境構築方法を紹介します。

Step1. ts-nodeをインストール

前述のとおり提出言語にTypeScriptを選択するので、ローカルでもTSの実行環境があったほうが安心です。
適当な作業用ディレクトリで以下のようにts-nodeをインストールします。

$ npm init -y
$ npm install typescript@2.1.6 ts-node @types/node

Step2. online-judge-tools をインストール

online-judge-toolsは、競技プログラミングを行う上で存在する典型作業を自動化するためのツールです。

色々な機能があるようですが、例えばAtCoderの問題ページにあるテストケース(入出力例)をCLIでダウンロードすることができます。

個人的にはAtCoderのためだけに余計なツールを導入したくなかったのですが、問題を読んだ後に手動でテストケースを用意するのはかなり気持ちの萎える作業ですので、このツールだけはインストールしておいた方が良いと思います。

こちらを参考にインストールを行ってください。

Step3. コーディングとテスト

対象となる問題のテストケースを online-judge-toolsでダウンロードします。

$ oj dl https://atcoder.jp/contests/abs/tasks/practice_1

好みのエディタで問題を解きます。

$ vi main.ts

ts-nodeとonline-judge-toolsでテストを行います(先ほどダウンロードしたテストケースを自動で読み込んでくれます)。

$ oj t -c 'sh -c "npx ts-node main.ts"'
[*] 1 cases found

[*] sample-1
[x] time: 1.705760 sec
[+] AC

[x] slowest: 1.705760 sec  (for sample-1)
[+] test success: 1 cases

テストがパスしたらAtCoderのサイトから提出を行いましょう(提出言語をTypeScriptにするのを忘れずに!)

さいごに

AtCoderではJSやTSはかなりマイナーな言語のようです。

言語仕様レベルの根深い問題もいくつかあるようなのですが、それ以前にNode.jsのバージョンを見てあきらめてしまう人も多いような気がしました(私自身がそうでした)。

この記事を見てAtCoderに挑戦するJSerが増えてくれたら嬉しいです。

  1. https://node.green/

17
9
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?