A framework to participate in the Google Hash Code contest.
When the problem specifications will be announced:
- Put the input problems in
data/
as.in
files; - Implement the stubs in
hashcode/common/base.py
- Put your solutions as Python modules in
hashcode/solutions
(one module for each solution). - Run
scripts/run.sh
to produce:- output files in
outputs/
solution.zip
to submit.- a
SUBMISSION
file that contains details on the solutions found.
- output files in
- Clone the repo:
git clone https://github.com/marcofavorito/google-hashcode-2021.git
- Create the virtual environment. It requires Pipenv:
pipenv shell --python=python3.7
- Install the dependencies and the package:
pipenv install --dev
pip install -e .
- Usage of the main entrypoint:
python -m hashcode --alg ${ALGORITHM} < input_file > output_file
It expects input in stdin
and prints output in stdout
.
- To compute the solutions for every data in
data/*.in
:
./scripts/run.sh ${ALGORITHM}
Details about the submission in the SUBMISSION
file, generated by the run.sh
script.
It will provide details about the chosen algorithm alg
, which will correspond to the
module::function hashcode/sol/${alg}::main
The Makefile
provides several commands to run linters and code formatters.
The most useful command is make lint-all
:
make lint-all
It will run black
, isort
, and other lint checkers
like flake8
and mypy
after that.
You can also run them separately:
make black
make isort
make flake8
make static
make bandit
make safety
make vulture
make pylint