75 lines
2.1 KiB
Markdown
75 lines
2.1 KiB
Markdown
|
# Galaxies Puzzle Generator and Solver
|
||
|
|
||
|
This project generates and solves Galaxies puzzles, a type of logic puzzle invented by Nikoli. In Galaxies, the goal is to divide a rectangular grid into "galaxies" around given center points, where each galaxy is 180° rotationally symmetric.
|
||
|
|
||
|
## Features
|
||
|
|
||
|
- Generate Galaxies puzzles of customizable size
|
||
|
- Solve generated puzzles
|
||
|
- Output puzzles in both graphical (PBM) and ASCII formats
|
||
|
- Create a separate directory for each generated puzzle
|
||
|
|
||
|
## Building the Project
|
||
|
|
||
|
To build the project, you need a C compiler (like gcc) and make. Navigate to the project directory and run:
|
||
|
|
||
|
```
|
||
|
make
|
||
|
```
|
||
|
|
||
|
This will compile the project and create an executable named `galaxies`.
|
||
|
|
||
|
## Running the Program
|
||
|
|
||
|
To run the program:
|
||
|
|
||
|
```
|
||
|
./galaxies [seed] [size]
|
||
|
```
|
||
|
|
||
|
- `seed` (optional): An integer used to seed the random number generator. If not provided, the current time will be used.
|
||
|
- `size` (optional): The size of the puzzle grid (between 5 and 20). Default is 10.
|
||
|
|
||
|
For example:
|
||
|
|
||
|
```
|
||
|
./galaxies 12345 15
|
||
|
```
|
||
|
|
||
|
This will generate a 15x15 Galaxies puzzle using seed 12345.
|
||
|
|
||
|
## Output
|
||
|
|
||
|
The program creates a new directory for each generated puzzle, named `puzzle_[seed]`. In this directory, you'll find:
|
||
|
|
||
|
1. `unsolved.pbm`: The unsolved puzzle in PBM (Portable Bitmap) format
|
||
|
2. `solved.pbm`: The solved puzzle in PBM format
|
||
|
3. `solved.txt`: An ASCII representation of the solved puzzle
|
||
|
|
||
|
### PBM Format
|
||
|
|
||
|
The PBM files are simple black and white images:
|
||
|
- In the unsolved puzzle, only the galaxy centers are marked.
|
||
|
- In the solved puzzle, the full galaxy shapes are shown.
|
||
|
|
||
|
You can view these files with most image viewers.
|
||
|
|
||
|
### ASCII Format
|
||
|
|
||
|
In the ASCII representation:
|
||
|
- 'O' represents galaxy centers
|
||
|
- '#' represents filled cells (part of a galaxy)
|
||
|
- '.' represents empty cells
|
||
|
|
||
|
## Project Structure
|
||
|
|
||
|
- `main.c`: Main program logic
|
||
|
- `generator.c`: Puzzle generation logic
|
||
|
- `solver.c`: Puzzle solving logic
|
||
|
- `output.c`: Functions for outputting puzzles
|
||
|
- `utils.c`: Utility functions
|
||
|
|
||
|
## Contributing
|
||
|
|
||
|
Contributions to improve the puzzle generation, solving algorithm, or add new features are welcome. Please feel free to submit issues or pull requests.
|