4 online-judge-tools features you might have missed

Revision en3, by terraformer, 2020-03-17 16:33:39

Do you use online-judge-tools? If not, Ibelieve it is valuable tool to try.

Your operation in competitive programming will become automated and the competition programming experience will be comfortable.

Good tutorial is here.

BTW, online-judge-tool seems simple.

But if you execute oj test --help,you can find about 20 command line options for oj test.

Other subcommand (login, download and etc.) also have many command line options.

Actually, these are many features.

Therefore, today I want to my favorite online-judge-tools features.

1. Side-by-Side diff

This is very new feature for oj test.

Sometimes, finding differences between your answer and expectation is cumbersome task.

For example,

[*] 1 cases found

[*] sample-1
[x] time: 0.054696 sec
[-] WA
output:
7
1 5 1 3
7 7 89 9 2 2 6 5
2 4 6 1 8 5
9 10 0 29 56

expected:
7
1 5 1 3
7 7 89 9 2 2 6 5
2 4 6 1 3 5
9 10 0 29 56

Can you find where difference is?

If you uses side-by-side display option(-S),

/predownloaded/64/64/64643f48b7d9ba681e712913638f86ff469c8347.png

Great! You can find "3" is replaced by "8" in a moment!

2. MLE and TLE checking

Since almost all of problems are limits computation time and memory consumption. It's natural that you want to confirm not only that the output matches the expected value, but also these limitations.

You only have to add --tle or --mle options for checking these limitations.

ex. ``` $ oj t -c './a.out' --tle 2.5 # 2.5sec [*] 1 cases found

[*] sample-1 [x] time: 2.503372 sec [-] TLE ```

$ oj t -c './a.out' --mle 56  # 56MB

3. Floating point error judge

Some problem requires floating point output. (ex. 2.500000) In many situation, relational and absolute error is allowed for these problems.

oj test can handle these errors by -e option.

If problem expectation 3 and your program outputs 3.00000001

$ oj t -c 'echo 3.00000001'
[*] 1 cases found

[*] sample-1
[x] time: 0.004793 sec
[-] WA
output:
3.00000001

expected:
3

In this situation, oj recognize your output as "Wrong Answer". But if you indicated allowed error by -e option,

$ oj t -c 'echo 3.00000001' -e 0.000001
[*] 1 cases found

[*] sample-1
[x] time: 0.004088 sec
[+] AC

Good, oj result becomes "All Correct". Here, oj t -c 'echo 3.00000001' -e 1e-5 is equivalent with oj t -c 'echo 3.00000001' -e 0.000001.

4. API

This is feature for tool developers.

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en6 English terraformer 2020-03-18 17:03:35 81
en5 English terraformer 2020-03-17 16:57:11 2 Tiny change: '.\n\nex.\n```\n$ o' -> '.\n\nex.\n\n```\n$ o'
en4 English terraformer 2020-03-17 16:55:52 1571 (published)
en3 English terraformer 2020-03-17 16:33:39 1490
en2 English terraformer 2020-03-16 18:08:15 555
en1 English terraformer 2020-03-16 18:01:54 1222 Initial revision (saved to drafts)