# Chik Puzzles
This is a collection of the standard Chik puzzles.
These are the puzzles which are deployed on chain and therefore cannot change.
This repository tracks the source code, the compiled hex, and a hash of the compiled hex to ensure continuity.
All puzzles are kept in the `puzzles` folder as both a `.clsp` and `.clsp.hex` file.
The Python and Rust bindings are created by running `generate_chiklisp_constants.py`
## Adding Bindings for a New Puzzle
1. Add the `.clsp` and `.clsp.hex` files into the `programs` folder.
2. Add the puzzle name, path, and shatree hash into the list in `generate_chiklisp_constants.py`.
3. Run `generate_chiklisp_constants.py`.
4. Commit your changes, including to the outputted `programs.py` and `programs.rs`.
# Testing
This project is managed with `poetry` for Python and `cargo` for Rust.
To run the Python tests:
```
python -m venv venv
pip install poetry
. ./venv/bin/activate
poetry install
pytest chik_puzzles_py/tests
```
If you're on Windows activate the venv with `. venv\Scripts\activate` instead
To run the Rust tests:
```
cargo test --all
```