oj-short
v2.0.4
Published
Short commands for oj
Readme
oj-short
English | 日本語
oj-shortは、競技プログラミングのワークフローを効率化するために設計されたコマンドラインインターフェース(CLI)ツールです。online-judge-tools/oj-toolsの便利なラッパーとして機能し、問題のダウンロード、コードのテスト、解答の提出プロセスを簡素化します。
このツールはTypeScriptで構築されており、Bunランタイム上でのみ動作します。
特徴
- 問題のダウンロード: AtCoder、Codeforcesなどのさまざまなオンラインジャッジから、問題の詳細とサンプルテストケースを素早く取得します。
- 解答のテスト: ダウンロードしたサンプルケースに対して、あなたのコードを自動的にテストします。
- コードの提出: コマンドラインから直接、解答を提出します。これはコンテスト中のAtCoderのような一部の状況で動作します。
- カスタマイズ可能: あらゆるプログラミング言語に対して、カスタムのビルドコマンドと実行コマンドを設定できます。
- URL解決: 簡潔な識別子からコンテストのURLを生成することをサポートします。
前提条件
oj-shortを使用する前に、以下をインストールする必要があります:
Bun: このプロジェクトはBunランタイムを使用します。
online-judge-tools: オンラインジャッジと対話するためのコア依存関係です。
pip3 install online-judge-tools # or use uv uv tool install online-judge-tools
インストール
npmレジストリからインストール:
bun install -g oj-short@latestまたは、配布されているコンパイル済みのバイナリを利用してください。
使い方
このツールは、getとsubmの2つの主要なコマンドを提供します。
get
問題とそのテストケースをダウンロードします。
コマンド:
get <site> <contest> [problem] [options]引数:
<site>: オンラインジャッジの短いコード(例:acfor AtCoder,cffor Codeforces)。ac,atcoder: AtCodercf,codeforces: Codeforcescf_gym,codeforces_gym: Codeforces Gymyc,yukicoder: Yukicoderaoj,aizuonlinejudge: Aizu Online Judgehr,hackerrank: HackerRanklc,librarychecker: Library Checkerurl: 直接URLを入力
<contest>: コンテストID。[problem]: 問題ID(一部のサイトではオプション)。
オプション:
-s, --submit: 提出を有効にします。
例:
# AtCoder Beginner Contest 100, Problem Aをダウンロード
get ac abc100 aこのコマンドは以下を実行します:
- URLを解決します:
https://atcoder.jp/contests/abc100/tasks/abc100_a oj.config.jsonを問題のURLで更新します。oj-toolsを使用して、サンプルケースを含むtestディレクトリを作成します。
subm
解答ファイルをテストし、提出します。
コマンド:
subm <filepath> [options]引数:
<filepath>: 解答ファイルへのパス。
オプション:
-s, --strict: 厳格モード(末尾の空白や改行を厳密に判定)でテストを実行します。-y, --yes: 提出確認に対して自動的に「yes」と回答します。-t, --only-test: 提出せずにテストのみを実行します。
例:
# main.pyをテストして提出
subm main.py --yesこのコマンドは以下を実行します:
oj.config.jsonで.pyファイルの実行コマンドを検索します。- コードをコンパイルします(ビルドコマンドが定義されている場合)。
oj tを使用してテストを実行します。- ~~
oj sを使用して解答を提出します。~~
設定
oj.config.jsonファイルを編集することで、ビルドコマンドと実行コマンドをカスタマイズできます。
設定ファイルは以下のような形式です:
{
"run": {
".py": {
"build": "",
"run": "python3 $0",
"lang": 5063
}
},
"submit": false,
"problem_url": "https://atcoder.jp/contests/abc100/tasks/abc100_a"
}run: ファイル拡張子(例:.py,.cpp)を、対応するビルドおよび実行設定にマッピングするオブジェクト。build: コードをコンパイルするコマンド。$0はソースファイルパスのプレースホルダーです。run: コンパイル済みコードを実行するコマンド。lang: ~~提出用の言語ID(オンラインジャッジ固有)。~~ これは現在不要です。
submit: 提出が有効かどうかを示すブール値。これはgetコマンドによって自動的に管理されます。problem_url: 現在の問題のURL。getコマンドによって管理されます。
ライセンス
このプロジェクトはMITライセンスの下でライセンスされています。
