LoginSignup
6
2

More than 1 year has passed since last update.

【AtCoder】サンプルテストを楽にやろう【競技プログラミング】

Last updated at Posted at 2022-10-09

競技プログラミングでは入力は標準入力から与えられます。
サンプル(入力例、出力例)を試すときは

コードを実行して
入力待ち状態のところに入力例をコピペして
出力例と比較する

というやり方になります。
が、 「あ!エラーでた!コード書き直さなきゃ!」 のたびにまたコピペして・・・というのは面倒ですし、入力例以外の入力を試したい時は自分で毎回打ち込み直しするのでもっと面倒です。
こんなめんどくさいことほんとにみんなやってるのか?と思いませんか?

私の場合はこうやっています、というのを紹介します。
言語はpython、エディタはVScodeを使っています。
画像4.png

フォルダの中にあるファイルは4つです。
Ans1.py
Ans2.py
Cheat.py
HandInput.txt

Ans1.pyは画像の中央で開いているファイルです。ここに提出するコードを書いていきます。
最上部に以下のコードを書いています。

import io,sys,os
os.system("Cls")
with open("HandInput.txt") as TxtOpen:
    INPUT=TxtOpen.read() 
sys.stdin=io.StringIO(INPUT)
# --------------------------------------------------------

これによって同フォルダにあるHandInput.txtの内容を標準入力として受け取れます。
入力例の内容をHandInput.txtにコピペし、Ans1.pyを実行すればコードを書き直すたびにいちいちコピペせずにすみます。
(os.system("Cls")は出力場所をきれいにするためだけのコードなのでなくても動きます)
提出するときは「---」以下の部分だけをコピペします。

ちなみにAns2.pyも全く同じです。
過去問をやっている時、自分で書いたコードでWAが出たがどのケースかわからない!という時に
Ans1.pyは自分で書いたコードを
Ans2.pyは解説に書いている正解コードを
それぞれ書いてHandInput.txtにてきとうな入力例を作る→両方実行→違う値がでたらWAのケースが見つかった
というような使い方をしています。

Cheat.pyはチートシートです。
素因数分解とか、UnionFindとか、よく使うコードを書いています。必要な時にコピペします。

内容は以下で公開しています。

サンプルテストを自動化するところまでやっている人もいるようですが、そこまでやるには めんどくさい 技術力が足りませんでしたので、まあこれでいいかなと。
皆様も良い競プロライフを。

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