Tools for online-judge services
Project description
Online Judge Tools
Tools for online judge services. Downloading sample cases, Testing/Submitting your code, and various utilities.
Screencast
Features
- Download sample cases
- AtCoder
- yukicoder
- Anarchy Golf
- Codeforces
- HackerRank
- Aizu Online Judge (including the Arena)
- CS Academy
- PKU JudgeOnline
- Kattis
- Toph (Problem Archive)
- Facebook Hacker Cup
- Download system test cases
- yukicoder
- Aizu Online Judge
- Login
- AtCoder
- yukicoder (via github.com or session token)
- Codeforces
- HackerRank
- Topcoder
- Toph
- Submit your solution
- AtCoder
- yukicoder
- Codeforces
- HackerRank
- Topcoder (Marathon Match)
- Toph (Problem Archive)
Generate scanner for input(removed, use kyuridenamida/atcoder-tools)- AtCoder
- yukicoder
- Test your solution
- Test your solution for reactive problem
- Generate output files from input and reference implementation
- Split an input file with many cases to files
How to install
from PyPI: https://pypi.python.org/pypi/online-judge-tools
$ pip3 install online-judge-tools
or
$ pip3 install requests
$ pip3 install lxml
$ pip3 install beautifulsoup4
$ pip3 install colorama
$ pip3 install sympy
and
$ git clone https://github.com/kmyk/online-judge-tools
$ cat <<EOF > ~/bin/oj
#!/bin/sh
exec $PWD/online-judge-tools/oj "\$@"
EOF
$ chmod +x ~/bin/oj
It requires Python 3.5 or later now
How to use
$ oj [download,login] URL
$ oj submit URL FILE [-l LANGUAGE]
$ oj test [-c COMMAND] [TEST...]
For details, see --help
.
Example
$ oj download http://agc001.contest.atcoder.jp/tasks/agc001_a
[+] problem recognized: <onlinejudge.atcoder.AtCoder object at 0x7f2925a5df60>
[x] GET: http://agc001.contest.atcoder.jp/tasks/agc001_a
[+] 200 OK
[*] sample 0
[x] input: 入力例 1
2
1 3 1 2
[+] saved to: test/sample-1.in
[x] output: 出力例 1
3
[+] saved to: test/sample-1.out
[*] sample 1
[x] input: 入力例 2
5
100 1 2 3 14 15 58 58 58 29
[+] saved to: test/sample-2.in
[x] output: 出力例 2
135
[+] saved to: test/sample-2.out
[*] sample 2
[x] input: Sample Input 1
2
1 3 1 2
[+] saved to: test/sample-3.in
[x] output: Sample Output 1
3
[+] saved to: test/sample-3.out
[*] sample 3
[x] input: Sample Input 2
5
100 1 2 3 14 15 58 58 58 29
[+] saved to: test/sample-4.in
[x] output: Sample Output 2
135
[+] saved to: test/sample-4.out
How to use as a library
Read the documents: https://online-judge-tools.readthedocs.io/en/master/
Example to use as a library
The next code lists the shortest submissions for problems of AtCoder Beginner Contest XXX.
#!/usr/bin/env python3
from onlinejudge.service.atcoder import *
for contest in AtCoderService().iterate_contests():
if not contest.contest_id.startswith('abc'):
for problem in contest.list_problems():
submission = next(problem.iterate_submissions_where(status='AC', order='source_length'))
problem_full_name = '{}: {} - {}'.format(contest.get_name(), problem.get_alphabet(), problem.get_name())
shortest_info = '({} byte, {})'.format(submission.get_code_size(), submission.get_language_name())
print(problem_full_name.ljust(60), submission.get_user_id().ljust(12), shortest_info)
Example output:
AtCoder Beginner Contest 121: A - White Cells kotatsugame (26 byte, Perl6 (rakudo-star 2016.01))
AtCoder Beginner Contest 121: B - Can you solve this? kotatsugame (49 byte, Octave (4.0.2))
AtCoder Beginner Contest 121: C - Energy Drink Collector x20 (54 byte, Perl (v5.18.2))
AtCoder Beginner Contest 121: D - XOR World climpet (40 byte, Perl (v5.18.2))
AtCoder Beginner Contest 120: A - Favorite Sound kotatsugame (25 byte, Awk (mawk 1.3.3))
AtCoder Beginner Contest 120: B - K-th Common Divisor n4o847 (35 byte, Awk (mawk 1.3.3))
AtCoder Beginner Contest 120: C - Unification kotatsugame (32 byte, Octave (4.0.2))
AtCoder Beginner Contest 120: D - Decayed Bridges x20 (154 byte, Perl (v5.18.2))
AtCoder Beginner Contest 119: A - Still TBD morio__ (22 byte, Sed (GNU sed 4.2.2))
AtCoder Beginner Contest 119: B - Digital Gifts n4o847 (31 byte, Perl (v5.18.2))
AtCoder Beginner Contest 119: C - Synthetic Kadomatsu kotatsugame (135 byte, Perl (v5.18.2))
AtCoder Beginner Contest 119: D - Lazy Faith kotatsugame (179 byte, Octave (4.0.2))
AtCoder Beginner Contest 118: A - B +/- A n4o847 (19 byte, Awk (mawk 1.3.3))
AtCoder Beginner Contest 118: B - Foods Loved by Everyone kotatsugame (37 byte, Perl6 (rakudo-star 2016.01))
...
FAQ
- I cannot install this tool on my Windows machine. How should I do?
- Use Windows Subsystem for Linux (WSL). If your Windows is too and WSL is not supported, you can use virtual machines, MinGW or Cygwin, but you should buy a new machine.
- Are there features to manage templates or snippets?
- No. They are not the responsibility of this tool. You should use plugins of your editor, like thinca/vim-template or Shougo/deoplete.nvim.
- I usually make one directory per one contest (or, site). Is there a support for this style?
- Yes. You can use
--directory
(-d
) option. However, I recommend to make one directory per one problem.
- Yes. You can use
- Can I specify problems by their IDs or names, instead of URLs?
- No. I have tried it once, but it is actually not so convenient and only increases the maintenance cost.
- I don't want to give my password to this program.
- You can use this giving only your session tokens. Please see here.
For other questions, use Gitter or other SNSs.
Related Tools
conflicted:
- dj3500/hightail (GUI-based; I have never used)
- nodchip/OnlineJudgeHelper (buggy, not recommended)
not conflicted:
- shivawu/topcoder-greed for Topcoder Single Round Match
- FakePsyho/mmstats for Topcoder Marathon Match
- https://community.topcoder.com/tc?module=Static&d1=applet&d2=plugins
Authors
- owner: @kmyk (AtCoder: kimiyuki, Codeforces: kimiyuki)
- collaborator: @fukatani (AtCoder: ryoryoryo111)
Also, patches are used sent from @kjnh10, @hachi-88, @Pachicobue, @kfaRabi, and @tMasaaa.
License
MIT License
Project details
Release history Release notifications | RSS feed
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-6.5.0.tar.gz
(53.9 kB
view hashes)