This interactive Java application showcases six fascinating algorithmic puzzles and problems through visualizations and step-by-step solutions. Whether you're a computer science student, an algorithms enthusiast, or just curious about computational problem-solving, this project offers an engaging way to explore classic algorithms.
This project includes beautiful interactive visualizations and solvers for the following algorithmic challenges:
Tile a
Watch a chess knight visit every square on the board exactly once! Implemented using both backtracking and Warnsdorff's rule (greedy heuristic).
The classic recursive puzzle solved for both the standard 3-peg version and the advanced 4-peg variation (Reve's puzzle).
Solve the challenging problem of exchanging the positions of two sets of knights on a chessboard with minimal moves.
An optimization problem involving strategic positioning in a 2D grid to maximize coverage.
Find the optimal way to cover a set of points in a plane with line segments of minimum total length.
- Java 17 or higher
- Maven
# Clone the repository
git clone https://github.com/dizzydroid/ASU_SeniorProject_Algorithms.git
# Navigate to the project directory
cd ASU_SeniorProject_Algorithms
# Build the project
mvn clean package
# Run the application
java -jar target/algorithms-course-project-1.0.jar- Launch the application with the command above
- Use the interactive menu to select which algorithm you want to explore
- Follow the on-screen instructions to set parameters and watch the visualization
- Enjoy learning through visualization!
Each algorithm implementation is thoroughly commented to explain the underlying concepts:
- 1. Tromino Tiling: Divide-and-conquer strategy, recursive backtracking
- 2. Knight's Tour: Backtracking, Warnsdorff's rule
- 3. Tower of Hanoi: Recursive problem-solving, dynamic programming
- 4. Knights Exchange: Graph theory, combinatorial optimization
- 5. Shooter Game: Greedy algorithms, optimization
- 6. Lattice Cover: Geometric algorithms, computational geometry
Contributions are welcome! Feel free to:
- Report bugs
- Suggest new features or algorithms
- Improve documentation
- Submit pull requests
This project is licensed under the MIT License - see the LICENSE file for details.
- Ain Shams University Faculty for guidance
- The algorithms community for sharing knowledge and inspiration
- All contributors and testers who helped improve this project
Made with ❤️ by CSE332s students at Ain Shams University