⚡ Fast Olympic Coding ⚡
Fast Olympic Coding is an extension to assist with various tasks in competitive programming. It is a ported and enhanced version of the corresponding Sublime Text plugin that also leverages the power of VSCode.
⚡ Overview
- 📜 Concurrently run, edit, and delete multiple testcases
- 👨🏻💻 Stress tester to find counterexamples
- 👜 Insert pre-written code from another file with automatic folding
- 🛜 Reads testcases and outputs from Competitive Companion onto the current file
- 🏃 BLAZINGLY FAST! Asynchronous design + optimizations = 99% spam proof!
💻 Keybinds
- Compile (if file has compile command and file had changed) and run all testcases:
Ctrl+Alt+B
- Stop all testcases:
Ctrl+Alt+K
- Delete all testcases:
Ctrl+Alt+D
- Run stress test:
Ctrl+Alt+G
- Insert file template:
Ctrl+Alt+I
</> Setting Up
Provide run settings for the languages you use in settings.json
. Here are some examples for C++, Python, and Java:
{
"fastolympiccoding.runSettings": {
".cpp": {
"compileCommand": "g++ -std=gnu++20 -D_GLIBCXX_DEBUG ${path:${file}} -o ${path:${fileDirname}/${fileBasenameNoExtension}${exeExtname}}",
"runCommand": "${path:${fileDirname}/${fileBasenameNoExtension}${exeExtname}}"
},
".py": {
"runCommand": "python ${path:${file}}"
},
".java": {
"compileCommand": "javac ${path:${file}}",
"runCommand": "java -cp ${fileDirname} ${fileBasenameNoExtension}"
}
}
}
We can use the following variables in the syntax of ${...}
- Most of VSCode's built-in variables
${exeExtname}
returns .exe
for Windows and an empty string for other platforms
${path:*some value*}
turns *some value* into a valid path string for the current platform, which normalizes slashes and handles spaces
📜 Testcase Window
You can also view wrong answers in a diff view.
👨🏻💻 Stress Tester
Required files (naming scheme configurable in settings):
<name>.[ext]
: the solution to bruteforce against
<name>__Good.[ext]
: the solution that outputs the correct answer
<name>__Generator.[ext]
: to generate inputs for the other 2 files
- The extension provides a 64-bit integer seed input for random number generators!
Gif is recorded at 15FPS but the tester runs as low as 5ms between testcases!
👜 Inserting Prewritten Code
- Specify your library directory in settings to enable this functionality. Otherwise, nothing happens!
- Make sure there is no newlines at the end of your templates for the folding to work!
🛜 Competitive Companion
- Open the extension's tab on VSCode's sidebar to activate the process of listening for Competitive Companion first!
- You can make the extension put the testcases onto another file by modifying the behavior in the settings.
© Attributions