⌨️
paizaのコード問題を手元でTypeScriptで解きたい
tl:dr;
このコードで解いて tsc
でJavaScriptコード作って回答に貼り付ければOK
const lines: Array<string> = [] // 入力バッファ
const isStaging: boolean = true; // 手元環境(true) か提出環境(false) かのスイッチ
// ココで問題解く
const mainRoutine = (lines: string[]) => {
const N: number = parseInt(lines[0]);
for (let i: number = 0; i < N; i++) {
const line: Array<string> = lines[i + 1].split(" ");
console.log("hello = " + line[0] + ", world = " + line[1]);
}
};
if (isStaging) {
// 手元環境 入力行ごとの配列
const inputLine: Array<string> = [
"2",
"2 5",
"3 4"
];
mainRoutine(inputLine);
} else {
// 提出環境 入力待ちにぶん投げる
process.stdin.resume();
process.stdin.setEncoding('utf8');
const reader: any = require('readline').createInterface({ input: process.stdin, output: process.stdout });
reader.on('line', (line: string) => lines.push(line));
reader.on('close', () => mainRoutine(lines));
}
やりかた
開発中は上記コードを .ts
として保存し、 isStaging = true
にしておいて npx ts-node <script>
として実行する
isStaging = true
の場合は inputLine
のArrayに標準入力から入れるデータを列記しておき、それを擬似入力として使用できる
提出時は isStaging = false
にしてから、 npx tsc <script>
としてJavaScriptへ変換し、その内容をそのまま解答欄にコピペすればOK
あとがき
paizaの問題を解く際にTypeScriptは選べないが、どうしてもTypeScriptで手元環境で解きたかったので色々してみた結果
手元だとvscode使ったりeslintかけたり色々出来るので、paizaのコードエディタ使うより捗って嬉しい
クラス使いたい時とかどうすんだよとも思うけど、今の所Paizaの問題でクラス欲しくなる問題出てきてないんで、たぶん大丈夫
Discussion