はじめに
仕事でいつも使っているTypeScriptを競技プログラミング(AtCoder)でも使う方法について調べました。
AtCoderのTypeScriptの対応状況
AtCoderはTypeScriptに対応しているため、言語のセレクトボックスでTypeScript(3.8)
を選択してあげればOKです。
標準入力をどうやるか
競技プログラミングだと必須である標準入力をTypeScriptでどうやればいいのか調べました。
C++だとcin
で済む標準入力ですが、TypeScriptだと下記のように書いてあげる必要があります。
import * as fs from 'fs'; const input = fs.readFileSync("/dev/stdin", "utf8");
標準入力の仕方がわかれば、あとは計算結果をおなじみのconsole.log
で出力するだけになります。続いて、実際に簡単な問題を解いてみます。
実際に問題を解いてみる
提出の練習として出題される問題であるA - Welcome to AtCoderをTypeScriptで解いてみます。
C++でこの問題を解くと下記のようになります。
#include <iostream> using namespace std; int main() { int a, b, c; string s; cin >> a; cin >> b >> c; cin >> s; cout << a + b + c << " " << s; }
TypeScriptでこの問題を解くと次のようになります。
import * as fs from 'fs'; const input = fs.readFileSync("/dev/stdin", "utf8"); const a = +input.split('\n')[0]; const b = +input.split('\n')[1].split(' ')[0]; const c = +input.split('\n')[1].split(' ')[1]; const s = input.split('\n')[2]; console.log(`${a + b + c} ${s}`);
fs.readFileSync("/dev/stdin", "utf8")
で取得した標準入力の文字列から、split('\n')
とsplit(' ')
を使って整数と文字列を取り出しています。