This project is an implementation of an 8-puzzle solver in C. It offers two different approaches to solve random 8-puzzle configurations:
- Brute Force Approach: A simple, exhaustive method that explores all possible moves until the solution is found.
- Heuristic Approach: An optimized method that utilizes heuristics to solve the puzzle more efficiently.
The 8-puzzle is a classic problem in computer science and artificial intelligence, where the goal is to move tiles on a 3x3 grid to achieve a desired end configuration. This repository contains an 8-puzzle solver that offers two approaches for solving the puzzle: a brute force search and a heuristic-based search.
To compile and run this project, you need:
- A C compiler (e.g.,
gcc)
Clone the repository:
git clone https://github.com/rom618/8-puzzle.git
cd 8-puzzleBuild the project:
gcc -o 8_puzzle *.cOr use the appropriate script for Windows or Linux.
The brute force method explores all possible moves from a given configuration to find a solution. This approach is straightforward but may not be efficient for puzzles that are far from the solution.
- Exhaustive search of all possible configurations
- Guaranteed to find a solution (if one exists)
The heuristic approach uses intelligent algorithms, such as A* (A-star) search, combined with heuristics like the Manhattan Distance or Misplaced Tiles to solve the puzzle more efficiently.
- Optimized search using heuristics
- Faster solution finding for complex puzzles
- Supports multiple heuristics
To solve a random 8-puzzle using brute force:
./8-puzzle --mode brute-forceTo solve a random 8-puzzle using heuristics:
./8-puzzle --mode heuristic --heuristic manhattanAvailable heuristics:
manhattan: Uses the Manhattan Distance heuristic.misplaced: Uses the Misplaced Tiles heuristic.
Contributions are welcome! Please fork the repository and submit a pull request for any improvements or new features.
This project is licensed under the MIT License. See the LICENSE file for details.