codeforce-cli

command line interface for giving contest

Usage no npm install needed!

<script type="module">
  import codeforceCli from 'https://cdn.skypack.dev/codeforce-cli';
</script>

README

Codeforces CLI

This will enable you to get all things you need for contest set up in just one hit. In addition you'll have all the testcases on your storage device and again can be tested in one command.

Prerequisites

Install nodejs according to your operating system from here.

npm --version
6.14.*

Installing

All you need is to run this command and try it.

npm i -g codeforce-cli

Try with sudo for Linux or macOS.

Getting Started

Open you terminal and see all recent contest using this command

$ cf list -t 6
1473  1/14/2021, 8:05:00 PM    02:00 hour  Educational Codeforces Round 102 (Rated for Div. 2) 60 
1467  1/8/2021, 8:05:00 PM     02:00 hour  Codeforces Round #695 (Div. 2) 60
1470  1/5/2021, 8:05:00 PM     02:00 hour  Codeforces Round #694 (Div. 1) 60
1471  1/5/2021, 8:05:00 PM     02:00 hour  Codeforces Round #694 (Div. 2) 60
1472  1/4/2021, 8:05:00 PM     02:00 hour  Codeforces Round #693 (Div. 3) 60
1466  12/30/2020, 8:05:00 PM   03:00 hour  Good Bye 2020 60

Choose the contest you want to give.
Register for contest or virtual contest on codeforces site, then take note of contest id of your contest. For eg. 1467;
Execute following command

$ cf create 1467
? Enter the directory name :  1467
? Language :  cpp
A  Wizard of Orz                           https://codeforces.com/contest/1467/problem/A
B  Hills And Valleys                       https://codeforces.com/contest/1467/problem/B
C  Three Bags                              https://codeforces.com/contest/1467/problem/C
D  Sum of Paths                            https://codeforces.com/contest/1467/problem/D
E  Distinctive Roots in a Tree             https://codeforces.com/contest/1467/problem/E
Folder Created {current-dir}/1467
File Created {current-dir}/1467/A/sol.cpp
File Created {current-dir}/1467/B/sol.cpp
File Created {current-dir}/1467/C/sol.cpp
File Created {current-dir}/1467/D/sol.cpp
File Created {current-dir}/1467/E/sol.cpp

Write some code.
Code Preview

Don't use freopen() for input or output in cpp or similar thing in other languages.

Now test your code against sample testcases with simple command.

$ cf verify A B
Verifying problem A ...
Testcase 1 Passed
Verifying problem B ...
Testcase 1 Passed
Testcase 2 Failed

Finally submit your code on codeforces official website.

Usage

$ cf <command> [options]

Commands

cf list

USAGE
    $ cf list

OPTION
    -t, --top   number of recent contest to print

EXAMPLES
    $ cf list -t 6
    1473  1/14/2021, 8:05:00 PM    02:00 hour  Educational Codeforces Round 102 (Rated for Div. 2) 60 
    1467  1/8/2021, 8:05:00 PM     02:00 hour  Codeforces Round #695 (Div. 2) 60
    1470  1/5/2021, 8:05:00 PM     02:00 hour  Codeforces Round #694 (Div. 1) 60
    1471  1/5/2021, 8:05:00 PM     02:00 hour  Codeforces Round #694 (Div. 2) 60
    1472  1/4/2021, 8:05:00 PM     02:00 hour  Codeforces Round #693 (Div. 3) 60
    1466  12/30/2020, 8:05:00 PM   03:00 hour  Good Bye 2020 60

cf create

creates and directory structure for all problems in particular contest.

USAGE
    $ cf create <id>

OPTION
    --id        contest id

EXAMPLES
    $ cf create 1467
    ? Enter the directory name :  1467
    ? Language :  cpp
    A  Wizard of Orz                           https://codeforces.com/contest/1467/problem/A
    B  Hills And Valleys                       https://codeforces.com/contest/1467/problem/B
    C  Three Bags                              https://codeforces.com/contest/1467/problem/C
    D  Sum of Paths                            https://codeforces.com/contest/1467/problem/D
    E  Distinctive Roots in a Tree             https://codeforces.com/contest/1467/problem/E
    Folder Created {current-dir}/1467
    File Created {current-dir}/1467/A/sol.cpp
    File Created {current-dir}/1467/B/sol.cpp
    File Created {current-dir}/1467/C/sol.cpp
    File Created {current-dir}/1467/D/sol.cpp
    File Created {current-dir}/1467/E/sol.cpp

The file structure would be like this

`<contest_id || your_folder_name>`
     A
         sol.cpp     [solution]
         in1.txt     [input sample from question]
         out1.txt    [output sample from question]
         q.md        [question in markdown] 
     B
         sol.cpp
     ... ... ... ...

cf verify

verify local testcases corresponding to your code change your directory to current contest

USAGE
    $ cf verify <tags..>

EXAMPLES
    $ cf verify A B
    Verifying problem A ...
    Testcase 1 Passed
    Verifying problem B ...
    Testcase 1 Passed
    Testcase 2 Failed