Hello Codeforces,
I want to share with you a simple tool that I've been using for a while now.
What is ineffable?
Simple grader for local grading of solutions for problems of competitive programming contests. It is written in Python and it uses timeout
Perl library to limit resources (time and memory limits) of program being tested.
Screenshots
See it at work (sample session)
Let's solve problem Cow Steeplechase of USACO 2011 November Contest.
$ # Create folder `steeple` in your desktop and another folder `steeple_tests` inside it.
$ mkdir Desktop/steeple
$ cd Desktop/steeple
$ mkdir steeple_tests
$ cd steeple_tests
$
$ # Download and extract test data into `steeple/steeple_tests/`.
$ wget -q http://usaco.org/current/data/steeple.zip
$ unzip -q steeple.zip
$ rm steeple.zip
$ cd ..
$
$ # Create file `ineff.json` and configure.
$ touch ineff.json
$ echo '{
"pkdesc": "Cow Steeplechase (USACO Gold November 2011 Contest)",
"pbcode": "steeple",
"tl": 3000,
"ml": 65536,
"warmup": "g++ -std=c++11 -O2 -o {PROBLEM} {PROBLEM}.cpp",
"execute": "./{PROBLEM}",
"tstdir": "{PROBLEM}_tests/",
"inp": "I.*",
"out": "O.*"
}' >ineff.json
$
$ # Create `steeple.cpp` and open it with your favorite editor to code your solution.
$ touch steeple.cpp
$ vim steeple.cpp
$ # ...
$
$ # Test your solution
$ ineffable
Installation
Run the following commands on your terminal:
$ mkdir ~/.ineffable
$ cd ~/.ineffable
$ wget https://bitbucket.org/silap/ineffable/get/89f43e61ffb8.zip
$ unzip 89f43e61ffb8.zip
$ rm 89f43e61ffb8.zip
$ mv silap-ineffable-89f43e61ffb8/* .
$ rm -r silap-ineffable-89f43e61ffb8/
$ ln -s ineffable /usr/local/bin/ineffable
Or alternatively you may run this command if you have curl installed:
$ bash < <(curl -sL https://bitbucket.org/silap/ineffable/raw/218eaf2959a53a2b7a16880d8fabc5a4986f4e29/test.sh)