LoginSignup
46
26

More than 3 years have passed since last update.

AtCoderのための環境作成: 自動テスト, コマンド提出 (oj, acc)

Last updated at Posted at 2020-03-23

はじめに

問題のsampleの入力をコピーして
IDEに貼り付けてテストして
テストが終わったら自分のプログラムをコピーして
AtCoderに提出って面倒だし, 時間がかかりますよね.

ここではこれらを自動化してくれるツールの導入方法及び, 使い方を説明します.

ツールの導入

導入するツールは下記の2個です

  1. atcoder-cli
  2. online-judge-tools

atcoder-cliはsampleのテストをダウンロード及び, プログラムの提出を行ってくれるツールで,
online-judge-tools は atcoder-cliでダウンロードしたsampleをテストしてくれるツールです

####導入方法
下記のコマンドを実行するだけでツールの導入ができます

$ npm install -g atcoder-cli
$ pip3 install online-judge-tools

npm が使えない人は下記のサイトを参考にして導入してください
Node.js / npm をインストール (Mac環境)

使い方

####使うための準備

$ acc login //AtCoderにログイン
? username: hogehoge // AtCoderのID
? password: [hidden] // AtCoderのパスワード
OK

//これをやっておくと, 問題のダウンロードを全てしてくれる
$ acc config default-task-choice all 
$ oj login https://atcoder.jp/

問題のダウンロードの設定をします
ここではC++の設定を行います
適当なエディタで下記のファイルを開いてください.
/Users/(PC名)/Library/Preferences/atcoder-cli-nodejs/cpp/template.json

cpp ディレクトリ や templete.jsonファイルはないと思うので作成してください.
開いたら下記のものをコピーしてください.

template.json
{
    "task":{
	"program": ["main.cpp"],
	"submit": "main.cpp", 
	"testdir": "test"	
    }
}

次に下記のファイルを作成し開いてください
/Users/(PC名)/Library/Preferences/atcoder-cli-nodejs/cpp/main.cpp
問題のテンプレようのファイルです
私の場合下記のようなファイルを作成しています

main.cpp
#include<bits/stdc++.h>
using namespace std;

int main() {
    int N, ans=0;
    cin >> N;

    cout << ans << endl;
} 

設定の適用

$ acc config default-template cpp //cppに設定

####使い方
問題のダウンロード

$ acc new (コンテストID) //問題のダウンロード ex)  acc new abc159

すると下記のような海藻でファイルができているはずです
abc159
|--a
| |--test
| | |--sample-1.in
| | |--sample-1.out
| | |--sample-2.in
| | |--sample-2.out
|--b
:
:
|--f
|--contest.acc.json

テストは作業ディレクトリ まで行き下記のコマンドでテストを行うことができます
oj t は a.outを読み込みサンプルのテストを行ってくれます

$ cd abc159/a
$ g++ main.cpp && oj t //テスト

提出は下記のコマンドでできます

acc s

今回の場合 ABCのA問題なので
Are you sure? Please type "abca"
聞かれます
abca って打ってください

##まとめ

acc new abc159 //テストのダウンロード
g++ main.cpp && oj t // テストの実行
acc s //提出

##エラー (2020/5/2追記)
ある日, 突然"acc s"を用いて提出しようとしたら
下記のようなエラーが発生しました

[x] load cookie from: /Users/naokiosako/Library/Application Support/online-judge-tools/cookie.jar
[x] GET: https://atcoder.jp/contests/abc164/tasks/abc164_c
[x] 200 OK
[ERROR] 'value'

これは online-judge-toolsのエラーみたいなので
online-judge-tools再インストールしましょう!

pip3 uninstall online-judge-tools
pip3 install online-judge-tools

参考文献

atcoder初心者こそ環境構築しよう!(atcoder-cli,online-judge-toolsのインストール、使い方)

46
26
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
46
26