ICIE is intended to be a VS Code plugin which turns it into an IDE focused on competitive programming.
It aims to cover every aspect of participating in programming competitions, from downloading statements and setting up template code, through building solutions and running the example tests to submitting the solution and tracking its status.
Both efficiency and convenience are priorities, with automated behavior and keyboard shortcuts making coding hassle-free and achieving otherwise impossible time penalties.
Currently, it works on Windows, Linux and macOS, with support for Codeforces, AtCoder, CodeChef and SPOJ.
If you have any questions, just create a GitHub issue!
Quick start
Launch Visual Studio Code, go to Extensions, search for ICIE and click Install.
To participate in a contest, press AltF9 before it starts and select it from the list.
Use AltF12 to automatically build, run example tests and submit if tests pass.
Use AltBackspace to quickly switch between tasks.
To open a single task or an old contest, press AltF11 and copy-paste its URL.
Check out all the other features below!
More features
Hover over the test input or output and press CtrlC to copy it
Click "Edit" icon on test input or output to edit it
Click "Accept" icon on a failing test output to mark it as correct
Click "Reverse" icon on a failing test output to launch it in GDB debugger
Click "Reverse 2x" icon on a failing test output to launch it in RR debugger
Alt- to add a new test
Altt to launch a terminal
Alt0 to run tests without submitting
Alt9 to run stress tests (test your solution on thousands of random tests)
Alt8 to reopen task statement
Alti to generate a simple struct and an input operator>>
The instructions can be found in CONTRIBUTING.md.
The project is still in development, the Rust language does not have an official VS Code API, there is a custom build system, it uses WebAssembly which is still in heavy development, and it also patches the compiler output with regexes to remove some type checks, but nevertheless I have tried to make it as streamlined as possible.
If you have any trouble, just create a GitHub issue!