0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

#atcoder #プログラミング #Javascript # 本番環境自動判別方法等

Posted at

本内容を利用した場合の一切の責任を私は負いません。

概要

初めてまともにやってみて、タイトルのものが欲しくなったんだけど、探しても見つからず、自作したもの。
(ローカルで大量のテストケースに耐えれるか確認するため、標準入力ではなく、1テストごとのファイルを大量に流し込みたい。
本番とローカルとでソースを分けたくない。)
既知だったり、別の方法があったりするかもだけど。
それと、他に気づいた点。

本番環境自動判別方法

全部かはわからないが、提出画面の下に下記がある。

提出画面.PNG

ということは、カレントにこのファイルがあれば本番ということになる。
(ローカルが異なるファイル名であることが前提。)
てことで下記で判別する。

var isSubmit = false;

if (require("fs").existsSync("./Main.js")) {
    isSubmit = true;
}

処理分けしたいとこでisSubmitを確認すればいい。

その他

たまたまなのか、どこかに説明があるのかわからないが。
テストケースが複数ある場合(テストの仕方自体もいろいろあるように思うが、おそらくJavascriptの場合でソースファイルまるごとを実行させる場合)、グローバル変数の扱いが特殊のようである。
例えば、ソースファイルに下記があるとする。

var turn = 0;

普通に考えると1テストごとにソースファイルが読み込まれるため、各テストの開始時のturnは0になると思う。
が、実際は各テストで増えた分の累積になる。
どうやってるか不明だが。。。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?