mdbrnowski / codeforces-toolbox

🧰 Codeforces CLI created to make writing contests more efficient.
MIT License
7 stars 2 forks source link
cli codeforces competitive-programming python

Codeforces Toolbox

Downloads Version PyPI License PyPI

This tool is a CLI (Command Line Interface) that makes writing Codeforces contests more efficient.

Features

Supported languages: C++, C, Python, Java, Kotlin, Rust, C#, Go.

Settings configuration

cft config

Choose one of the following (type an integer):
  1. change the template file
  2. change username and password
  3. change programming language
  4. set compile command
  5. set run command

then you can just type an integer (1-5) and change your template file, username and password, language, run or compilation command.

See the FAQ at the bottom of this page.

Creating structure for a contest

cft race 1234 creates the following directory structure (provided that your programming language is C++):

1234/
  1234A.cpp
  1234B.cpp
  1234C.cpp
  1234D.cpp
  1234E.cpp
  1234F.cpp
  1234G.cpp

files 1234X.cpp are created by copying the previously specified template file.

It is recommended that you then change the current working directory (cd 1234) to operate more smoothly later.

You can also enter a task name (e.g. cft race 1234X) instead of a contest name, in which case a single file will be created.

Testing solution

cft test 1234A compiles your solution, downloads (if not yet downloaded) example test and checks if it passes.

If your current working directory is some/path/1234 you can type just cft test A.

If your answer uses floating point numbers you can determine what error will be acceptable by using -p or --precision flag.

cft test 1495A -p 1e-9
cft test 1495A --precision 1e-9

Submitting solution

cft submit 1234A submits solution and returns judgement verdict.

If your current working directory is some/path/1234 you can type just cft submit A.

Installation

Please first install Python 3.7 or higher from python.org. During installation, you should check the option 'Add Python to PATH'.

Then just copy and paste in your terminal this:

pip install codeforces-toolbox

If you want to upgrade the package, you can do this by:

pip install --upgrade codeforces-toolbox

The program will automatically check if there is a new version and try to install it if you run cft without any arguments or cft config.

If pip command is not found you can use pip3 install codeforces-toolbox or python3 -m pip install codeforces-toolbox.

Contribution & bugs

If you want to contribute to the project, fork this repository and open a new PR. If you have any questions or suggestions, email me (you can find my email address at my profile page) or create an issue.

FAQ

My favorite language is not supported!

Well, that is not a question, nevertheless I encourage you to create an issue in the repository.

Compile command, run command – what is this?

Compile command is the command you would use to compile your solution. For example: in C++ it can be g++ -Wall, in Java javac, in Kotlin kotlinc-native, in Rust rustc, in C# csc, in Go go build. Note that Python does not have a corresponding compiler because it is an interpreted language.

Run command is the command you would use to run your solution. If you are using a language that compiles to machine code that your operating system can run, you don't need this command. Otherwise, if you are using Python this can be python, python3, py, pypy. In the case of Java, it is probably java.

I assume that your compiler/interpreter is added to the PATH environment variable. If it is not, add it, or provide an absolute path, e.g. C:\Users\user\AppData\Local\Programs\Python\Python39\python.exe instead of just python.