beet's soil

競プロのことなど

oj を使いこなす

使いこなせているとは言ってない

beet-aizu.hatenablog.com

Pythonのコードでテストするのがだるい

function oj-py () { oj t -c "python $PWD/$1";}

oj g/i hack のコマンドの順番がわからん

oj g/i -h すればわかる

submit ごとにブラウザが開かれるのがだるい&待ち時間が長い

alias sb='oj s --no-open -w 1'

test がカレントディレクトリにあるとダウンロードできない

function oj-dl () { \rm -r test; oj d "$1";}

自動テストケース生成が使いにくい

これは Online Judge Template Generator のはなし

function oj-gen () { oj-template -t generate.py "$1" > generate.py;}

コンテスト一括DLしたい

atcoder.py みたいなのを書く

import os
import sys

args = sys.argv
assert (len(args) >= 3)
assert (not os.path.exists("./{}".format(args[1])))

os.system("mkdir ./{}".format(args[1]))
os.system("cp ~/.emacs.d/insert/t.cpp ./{}/t.cpp".format(args[1]))
try:
    for i in range(int(args[2])):
        os.system("mkdir ./{}/{}".format(args[1], chr(ord("A") + i)))
        os.system("cp ./{}/t.cpp ./{}/{}/{}.cpp".format(
            args[1], args[1], chr(ord("A") + i), chr(ord("a") + i)))

    for i in range(int(args[2])):
        a = os.system(
            "cd  ./{}/{} && oj d https://atcoder.jp/contests/{}/tasks/{}_{}".
            format(args[1], chr(ord("A") + i), args[1],
                   args[1].replace('-', '_'), chr(ord("a") + i)))
        if a != 0:
            raise Exception

except:
    print('contest not found')
    os.system("rm -r ./{}".format(args[1]))
'''
usage: write this in your .bashrc
function atcoder () { python ~/contest/tools/atcoder.py $1 $2 && cd $1;}
'''