20
2

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 5 years have passed since last update.

AtCoderの問題をJavascriptで解くためのテンプレ作りました

Last updated at Posted at 2019-04-14

最近アルゴリズムの勉強も兼ねて競技プログラミング(AtCoder)をやるようになったのですが、
どうやら競技プログラミングをJavascript / Node.jsで解く人は少数派であり、各種コンテストサイトでの対応状況は芳しくないと思われます。

AtCoderの処理系はNode.js v5.12が利用されており(2019/4/14時点)、色々と使えない構文や関数が存在しています。

  • let (strict modeにすれば使える)
  • 分割代入
  • べき乗演算子
  • Array​.prototype​.includes()
  • String​.prototype​.pad​Start()
  • BigInt
  • Object.entries / Object.values ... etc

そのため、手元のNode.jsのバージョンが高いと、「解けた!」と思っていざ提出すると通らないなんてことがあるので、nvm入れて切り替えてやっていたのですが、「Javascriptなんだからトランスパイルすれば良くね...?」と思ったので作りました。

babelとbabel-polyfillだけで十分かなと思っていたら、BigIntに関してはpolyfillでもダメだったので、BigInteger.js を入れました。(外部ライブラリ使って問題解くのはどうなんだ、という気もしますが...)
webpackで1枚のjsにバンドルしますので、例えばlodash入れたりとかもできてしまいます。

当然のことながらコードはビルド後の物を提出することになり、こんな感じ になってしまうので、この方式で提出する人が増えると、回答を見比べるとかそういった楽しみが無くなってしまうのが痛いです!

最新のNode.jsのバージョンに追従してくれればこんなことしなくていいのに(チラッ)
そのためにも、まずは少しでもJavascriptで問題を解く人が増えるといいなと思います!

20
2
4

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
20
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?