LoginSignup
4
0

More than 1 year has passed since last update.

TypeScriptでAtCoderを始めた

Last updated at Posted at 2022-11-23

AtCoderを始めた

興味はずっと前からあったのでAWS資格勉強の息抜きに始めた。
アルゴリズム力が必要な業務ではないので、業務にも役立つようにという観点から言語は最近よく使っているTypescriptを選択した。
Rated参加回数はまだ5回に満たず、足りないところはあるかもしれないがAtCoderのTypescript情報は少なそうなので一旦公開。

ソース

解説

VSCodeでコーディング -> AtCoderにコピペとかはやってられないので
AtCoder CLIのチュートリアルを参考にCLIでテスト・提出可能な環境を作った。
tstlなるC++のstl移植がAtCoderでも使えるらしいので、それもdependencyに入っている。(自分はまだtstl必要なレベルに達していない)

vscodeで試しているが、vscode依存の設定は入れていないはずなので他の環境でも動くはず。

実行方法

コンテストフォルダをacc new {コンテストID}で作成。

Main.tsに回答を書いた後、各タスクフォルダで

  • npm run test -> ローカルテスト
  • npm run submit -> 提出(確認なし)

ができるようにnpm scriptを入れている。

自分の環境ではコンテストフォルダの親フォルダでこのテンプレートの依存性をインストールしているので、タスクごとにnpm ciしなくても即実行できるようにしている。

node管理

nodeのバージョンはローカルマシンに入っていたnodebrewがあまりメンテされなくなっているという話を耳にしたのでvoltaに乗り換えてみた。
docsもわかりやすく不便ないのでこれからも使おうと思う。(あと、Rust製で速い!)

ハマったところ

最初は適当にインストールしたnode/ts-node/typescriptを使っていたがローカルではACでもsubmitするとREになるということが起きた。null合体演算子等がエラーになっていたっぽい。

バージョン周りだろうと調べると、typescriptのバージョンは合っていたがnodeのバージョンがずれていた。
公式の環境情報のtypescriptの行にはtypescriptのバージョンしか明記されていないが、トランスパイルされたjsが動くのはjavascriptの環境なのでそちらのnodeのバージョンとローカルのnodeのバージョンも合わせる必要があった(当たり前だが)。

nodeのバージョンを合わせたら解決したので多分OK。

課題

自作ライブラリを作ったときに楽に使えるようにしたい。
テンプレートにライブラリファイルを含めておいてbundleしてjavascriptとして提出するのが簡単な気がするが、AtCoderの提出画面でbundle後のソースしか見れなくなってしまうのに若干抵抗がある。
一方で、Main.tsに全ライブラリを書き連ねるのもコードが見にくくなって微妙だが妥協すべきなのか…

いいアイデアが実現できたら追記予定。

4
0
0

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
4
0