Skip to main content

CLI tool to solve problems of competitive programming

Project description

online-judge-tools/oj

test PyPI Downloads PyPI Join the chat at https://gitter.im/online-judge-tools/community

日本語版の README.md

oj is a command to help solving problems on various online judges. This command automates downloading sample cases, generating additional test cases, testing for your code, and submitting it.

Screencast

screencast

Features

  • Download sample cases
  • Download system test cases
  • Login
  • Submit your code
  • Test your code
  • Test your code for reactive problems
  • Generate input files from generators
  • Generate output files from input and reference implementation

For the detailed documentation, read docs/getting-started.md.

Many online judges (Codeforces, AtCoder, HackerRank, etc.) are supported. For the full list, see the table of online-judge-tools/api-client.

Installation

$ pip install online-judge-tools-ng

How to use

$ oj download [--system] URL
$ oj login URL
$ oj submit [URL] FILE
$ oj test [-c COMMAND] [TEST...]
$ oj test-reactive [-c COMMAND] JUDGE_COMMAND
$ oj generate-input GENERATOR_COMMAND
$ oj generate-output [-c COMMAND] [TEST...]

For details, see $ oj --help.

Example

$ oj download http://agc001.contest.atcoder.jp/tasks/agc001_a
[INFO] online-judge-tools 11.2.0 (+ online-judge-api-client 10.8.0)
[INFO] load cookie from: /home/user/.local/share/online-judge-tools/cookie.jar
[NETWORK] GET: https://atcoder.jp/contests/agc001/tasks/agc001_a
[NETWORK] 200 OK

[INFO] sample 0
[INFO] input: sample-1
2
1 3 1 2

[SUCCESS] saved to: test/sample-1.in
[INFO] output: sample-1
3

[SUCCESS] saved to: test/sample-1.out

[INFO] sample 1
[INFO] input: sample-2
5
100 1 2 3 14 15 58 58 58 29

[SUCCESS] saved to: test/sample-2.in
[INFO] output: sample-2
135

[SUCCESS] saved to: test/sample-2.out

$ cat <<EOF > main.py
#!/usr/bin/env python3
n = int(input())
a = list(map(int, input().split()))
ans = max(a)
print(ans)
EOF

$ oj t -c "python3 main.py"
[INFO] online-judge-tools 11.2.0 (+ online-judge-api-client 10.8.0)
[INFO] 2 cases found

[INFO] sample-1
[INFO] time: 0.043601 sec
[SUCCESS] AC

[INFO] sample-2
[INFO] time: 0.043763 sec
[FAILURE] WA
input:
5
100 1 2 3 14 15 58 58 58 29

output:
3

expected:
135


[INFO] slowest: 0.043763 sec  (for sample-2)
[INFO] max memory: 10.064000 MB  (for sample-2)
[FAILURE] test failed: 1 AC / 2 cases

FAQ

  • Can I use Python (or Rust, D, Java, F#, Haskell, etc.) instead of C++?
    • Yes. Please use --command (-c) option if needed. For example, for Python, you can run $ oj t -c "python3 main.py".
  • I usually make one directory per one contest (or, site). Can I keep using this style?
    • Yes, you can use the --directory (-d) option or $ rm -rf test/. However, we don't recommend this style, because you should make additional test cases by yourself and run stress tests to maximize your rating.
  • Can I download all sample cases of all problems at once?
  • Can I automatically compile my source code before testing?
    • Yes, use your shell. Run $ g++ main.cpp && oj t.
  • Can I automatically submit code after it passes tests?
    • Yes, use your shell. Run $ oj t && oj s main.cpp. By the way, you need to take care of problems whose sample cases are not so strong.
  • Can I remove the delays and the [y/N] confirmation before submitting code?
    • Yes, put --wait=0 option and --yes option to oj s subcommand. Of course, we don't recommend this. These options exist for failsafe. For example, please consider a situation where if you save 3 seconds, you will move up 3 places on the standings. In such a case, if you get a penalty of 5 minutes, then you will move down at least 300 places on the standings.
  • Are my passwords stored?
  • Does the config file exist?
    • No. You can use your .bashrc (or similar files) instead. It's a config file of your shell. Read man bash and write shell aliases or shell functions. For example, if you want to use Python code for tests by default, write alias oj-test-python='oj t -c "python3 main.py"' to .bashrc and use $ oj-test-python.

For other questions, use Gitter Join the chat at https://gitter.im/online-judge-tools/community or other SNSs.

Resources

Related Tools

conflicted:

not conflicted:

projects collaborating with kmyk/online-judge-tools:

Maintainers

License

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

online_judge_tools_ng-12.0.1.tar.gz (38.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

online_judge_tools_ng-12.0.1-py3-none-any.whl (46.5 kB view details)

Uploaded Python 3

File details

Details for the file online_judge_tools_ng-12.0.1.tar.gz.

File metadata

  • Download URL: online_judge_tools_ng-12.0.1.tar.gz
  • Upload date:
  • Size: 38.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for online_judge_tools_ng-12.0.1.tar.gz
Algorithm Hash digest
SHA256 82dadc989e5b5985ccced630fe36078f9797bdebcec9e0272aa1ca69a555b612
MD5 c5fbfe7d6791b4fa2cfb2dd4e810aab9
BLAKE2b-256 a3d0eeb8cb0b7106f7e921d6f4c836f49af784fee01e21d9d7be3f2947f261b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for online_judge_tools_ng-12.0.1.tar.gz:

Publisher: pypi.yml on yuuka-dev/online-judge-tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file online_judge_tools_ng-12.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for online_judge_tools_ng-12.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e23826aaaa7deb4962d274ee811cc95756cebd7fb9002536a591f453a5998fd0
MD5 d6a4c7fba55757bb0e28543aac9f52c5
BLAKE2b-256 152624088667666b9250df236617a8c8f276e1e0f03ab3ee30de205e3e11d0ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for online_judge_tools_ng-12.0.1-py3-none-any.whl:

Publisher: pypi.yml on yuuka-dev/online-judge-tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page