Go to file
scriptod 74ca7d42aa Version 1.0 2024-06-26 21:19:47 +03:00
include Version 1.0 2024-06-26 21:19:47 +03:00
src Version 1.0 2024-06-26 21:19:47 +03:00
Makefile Version 1.0 2024-06-26 21:19:47 +03:00
README.md And it begins... 2024-06-26 21:18:45 +03:00


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.


  • 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:


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.


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


Contributions to improve the puzzle generation, solving algorithm, or add new features are welcome. Please feel free to submit issues or pull requests.