Coder Social home page Coder Social logo

hac's Introduction

HAC: Helper for Algorithm Competitions

PyPI Version PyPI Monthly downloads PyPI Supported Python versions Linux Build status Code Quality

hac is extensible and configurable command-line tool for algorithm competitions. It:

  • prepares directory structures and source files,
  • prepares runner files (scripts used to test solutions),
  • downloads test-cases.

Install

Recommended to install as non-root:

$ pip install --upgrade --user hac

Usage

Example 1

A) For problems "A", "B" and "C" from Codeforces contest #527 prepare:

  • source file from cpp highest priority template (has lowest X among cpp.X language templates),
  • runner from sh.5 template (interpolated for cpp language template),
  • test-cases downloaded from Codeforces.
$ hac -lcpp -rsh.5 codeforces/527 a b c

With default configuration all of the next lines do same as the one above:

$ hac -lcpp.5 -rsh.5 prep http://codeforces.com/527/A B C
$ hac prep codeforces.com/527 B 1 c
$ hac -d2 CODEFORCES/527 1 2 3
$ hac forc/527 a b c

B) Write solution for problem "B" and test it on test-cases:

$ cd 527/B
$ # ... modify B.cpp
$ ./B.cpp.sh -e  # test solution on test-cases
$ ./B.cpp.sh -c  # clean generated outputs

C) Debug solution for problem "B" on 2nd test-case:

$ ./B.cpp.sh -d 2

Example 2

Display general information about hac:

$ hac --help
$ hac --version

Display information about hac and selected site/problems:

$ hac -v show codeforces/527     # verbose
$ hac -V show codeforces/527     # terse

Support

Sites:

Site \ Fetching problems from Contest Archive
Codeforces.com YES NO
Rosalind   YES
Sphere online judge   PARTIAL
Codechef NO NO

Runner/language combinations:

  C C++ Python Java Pascal
POSIX shell sh.5 / c.5 sh.5 / cpp.5 sh.5 / py.5 sh.5 / java.5 sh.5 / pas.5

Configuration

User specific configuration should be placed in ~/.config/hac directory by default (to change configuration directory you need to set HAC_CONFIG_DIR environment variable).

In order to configure hac according to your preferences:

  1. copy default configuration files in a temporary directory,
$ HAC_CONFIG_DIR=~/temp_config hac --copy-config
  1. customize interesting files in ~/temp_config,
  2. move only customized files to ~/.config/hac, e.g.
$ mkdir -p ~/.config/hac
$ cp ~/temp_config/hacrc ~/.config/hacrc
  1. remove temporary directory.
$ rm -r ~/temp_config

This approach is desirable because only configuration files that differ from the default ones should be present in configuration directory, thereby effectively overshadowing the default configuration.

Additional

For more information about hac please see User manual

For information about contributions please check Contributing chapter from User manual.

Change Log

Please see CHANGELOG.

Licence

Please see LICENSE.

hac's People

Contributors

jonaprieto avatar plesiv avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.