Marcelo Fornet aa7cb0899a 0.2.6 | 4 years ago | |
---|---|---|
.vscode | 4 years ago | |
doc | 5 years ago | |
images | 4 years ago | |
scripts | 5 years ago | |
src | 4 years ago | |
types | 5 years ago | |
.gitattributes | 5 years ago | |
.gitignore | 4 years ago | |
.vscodeignore | 5 years ago | |
CHANGELOG.md | 4 years ago | |
LICENSE | 5 years ago | |
README.md | 5 years ago | |
azure-pipelines.yml | 5 years ago | |
package-lock.json | 4 years ago | |
package.json | 4 years ago | |
tsconfig.json | 5 years ago | |
tslint.json | 5 years ago |
acmX is tool that empower contestants to solve competitive programming problems easily.
tcgen
program synthesis tool by inspecting testcases.We have a group to discuss about this tool in Telegram. Join here.
acmX have been designed to run automatically boilerplate actions I repeat often in competitive programming. Next is the expected pipeline to interact with it. It is important that you setup some configurations before start using the tool.
Open Visual Studio Code
Open online contest/problem you want to solve and click on competitive-companion extension button. All problems along with the testcases are downloaded and you are ready to code.
Start coding awesome solution inside file sol.cpp
.
After you finish call Run
and automatically your program will be compiled and run against every testcases. If the solutions is right, it will be reported as Ok
otherwise you will see failing testcase in a cool layout. You can always go back to original layout calling View: Code
.
Add more testcases than provided in statement using Add Test Case
, or modify and see existing testcases by calling Open Test Case
.
If your solution keep failing you can stress it using a generator and a brute solution. Call Upgrade
to create both generator (gen.py
) and correct (brute.cpp
) programs. Right now generator must be written in python. After both codes are ready call Stress
and your original code will be tested on random test cases from generator against correct solution.
The environment structure is the following:
round-525/
A/
sol.cpp
brute.cpp
gen.py
attic/...
testcases/
1.in
1.out
1.real
...
B/...
C/...
D/...
E/...
Certainly acmX can be (and hopefully will be) extended so that it fits everyone pipeline. If acmX almost fit yours, feel free to improve it and make a PR! I'll be happy to hear from you and give you support. If you find any issue report it at github issue tracker.
You need to tell acmX which folder are you going to use to save all the problems and contests. To do that:
Ctrl+,
acmx.configuration.solutionPath
/path/to/my/solutions
)Parsing problems and contests is done via Competitive-Companion extension. To use it with acmX
:
acmX
. If you want to use any other port, open settings and update acmx.companion.port
. This require restart vscode to take effect. You should also change the port on the extension.I encourage everyone to read and change all settings before first use. Anyway, after updating acmx.configuration.solutionPath
it should work good for C++ users.
To stress the solution your code is compared to a correct code against a large sample of testcases. In order to do that you should execute ACMX: Upgrade
from the command palette. Two files will be created.
brute.cpp
This should be a correct solution. A code that is expected to report correct output. It doesn't matter if it's slow as long as you only check this program against small testcases.gen.py
Every time this code is executed is expected to print a random testcases.AWESOME gen.py
is created automatically by inspecting testcases if you install tcgen
.
To install tcgen
just run:
pip install tcgen
Create a file with your template. In settings, set acmx.configuration.templatePath
to the path to your template.
Yes, of course, and any other language you want. Just make sure to update your language configuration setting.
Set checker properly for this problem via ACMX: Set Checker. Checkers can use testlib.h which is recommended.
Call this commands from the command palette (Ctrl + Shift + P
).
Stress
.sol.cpp
..
cpp
for c++