2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

bachrcでなんやかんやしてAtCoderのコンテストの提出等にかかるコストを最小限にした話

Last updated at Posted at 2020-10-01

想定条件

atcoder-cliおよびonline-judge-toolsをインストール済み

未インストールの方はこちらを参考にしてください。

私の環境

Ubuntu18.04

私のAtCoder用ディレクトリの概要

home
┣ AtCoder
  ┣ ABC160
    ┣ a.cpp
    ┣ b.cpp
    ┣ c.cpp
       ︙
  ┣ ABC161
  ┣ ABC162
     ︙
  ┣ Contest //コンテスト用デフォルトディレクトリ

上図のようになっています。詳しく見たい方はこちらからどうぞ。

はじめに

本ページで紹介させていただく関数たちは、
私が使いやすいと感じる、私の私による私のためだけの関数たちです。
また、私がコンテストにC++でしか参加していない影響で、C++にしか対応していません。

不便に感じるところはお好きに改造して各自幸せになってください。
どこかのだれかの参考になれば幸い。

そういったものです。

やったこと

bashrcで関数をいろいろ作って定番のコマンドを一度に実行できるようにしました。
本記事では、コードやコマンドの意味、役割などの説明は省かせていただきます。

以下、作った関数を4つ紹介します。

1. コンテスト用ディレクトリを作り、そのディレクトリをAtomで開く関数

.bashrc
function accdir () {
    cd ~/AtCoder/;
    cp -a Contest/ $1;
    atom $1;
    cd $1;
}
alias acd=accdir

使用方法

以下の画像のように、

acd ABC178

といった感じで打ち込むことで、
”AtCoder”ディレクトリの中に”ABC178”というディレクトリを新たに作り、
そのディレクトリをAtomで開き、そして端末では”ABC178”ディレクトリに移動しています。

2. コードテスト、コード提出用ディレクトリを作る関数

atcoder-cliの機能でコードテスト&コード提出用ディレクトリを作ります。
なぜわざわざディレクトリ名を”s”に変えているのか。その理由は次とそのまた次の関数を見ればわかります。

.bashrc
function accnew () {
    acc new $1;
    mv $1 s;
}
alias acn=accnew

使用方法

左下の画像のように一つ前のacdコマンドで作ったディレクトリ内で

acn abc178

と打ち込むことで、ABC178のダウンロードする問題を指定するように促されます。
そこで選択し、Enterを押すと、
右下の画像のようにダウンロードされディレクトリが生成されます。

このコマンドは、atcoder-cliの特性上、コンテストが開始してからしか使えないので、ご注意ください。
(すでに終了しているコンテストでは問題なく使えます。)

3. コードを提出する関数

.bashrc
function accsubmit () {
    path=$PWD;
    cpp='.cpp';
    name=$1${cpp};
    cp ${name} s/$1/;
    cd s/$1;
    acc submit ${name};
    cd;
    cd ${path};
}
alias acs=accsubmit

使用方法

下の画像のように、acdコマンドで作ったディレクトリ内で

acs a

などと打ち込むことで、問題提出ができます。
第一引数に、aを入れるとa問題を提出。bを入れるとb問題の提出ができます。

こんな感じ。

4. コードをテストする関数

.bashrc
function acctest () {
    path=$PWD;
    cpp='.cpp';
    name=$1${cpp};
    cp ${name} s/$1/;
    cd s/$1;
    g++ ${name};
    oj t -d ./tests/;
    cd;
    cd ${path};
}
alias act=acctest

使用方法

下の画像のように、acdコマンドで作ったディレクトリ内で

act a

などと打ち込むことで、テストケースの検証ができます。
第一引数に、aを入れるとa問題を、bを入れるとb問題のテストができます。

こんな感じ。

さいごに

こちらで随時更新したものをあげているので、最新バージョンを見たい方はどうぞ。

皆さまも快適なbashライフをお過ごしください〜!

では。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?