Skip to content
Generate solution of a scrambled 3x3 Rubik's Cube
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.

Rubik’s Cube Solver

This project is guide for beginners who want to solve any scrambled rubik’s cube. A visual guide which demonstrates steps to follow to solve rubik’s cube with speed.


  1. Player will feed the images of all sides of cube according to predefined way.
  2. Application will process an individual image to identify colors of nine squares of one face of cube.
  3. In return we will have sequence of steps as outcome, on following which will solve the rubik’s cube.
  4. Execution of generated steps will be implemented by the visual effects, which helps the player to understand and follow the steps properly.

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.


  • Python 3.7
  • Any text editor/IDE for python(Sublime, Pycharm)
  • OpenCV

Environment Setup

Install Python

Install OpenCV

  • Windows

  • Ubuntu/Linux

  • Mac OS


Phase I

  • Read the overview and goals of the project.
  • Learn about rubik’s cube,its working, the problem and its logical structure.
  • Read up on rubik's cube solving algorithms.
  • Study Computer Vision and its application in image processing .

Phase II

  • Set up environment(Python and OpenCV).
  • Input images of all sides of scrambled cube.
  • Processing the images of all faces of cube.
  • Generating input matrix of all faces of the cube.

Phase III

  • Developing the code/algorithm to solve input matrices.
  • Generating a list of steps to solve the scrambled cube.
  • Developing a simple interface to describe the instructions to solve cube to the user.

Phase IV

  • Expolring Augmented Reality for better visual representation and improving GUI.


You can contribute in several ways. If you know how to code or are a designer, you are welcome to contribute using pull requests. You can also contribute by opening issues about defects and things that could be improved or request entirely new features that you think would help others. Join the Slack Communication Channel

Contribution Guidelines

Please raise a feature request or issue before sending PR for the same. Follow the below guidelines for proper coding practices:

  • Always create a new branch for your changes and make PR from it ONLY.
  • Write neat code with proper comments.
  • Follow PEP8 coding style.
  • Write descriptive commit messages. Please read this for more information.
  • Write detailed PR messages and include fixes #ISSUE_NUMBER it if closes an issue, otherwise use concerns #ISSUE_NUMBER to tag the related issues. Please refer here for more PR guidelines.
  • It is recommended to have a single commit for a task.
  • Use DRY principles to create maintainable code.


  • Ashutosh Mehra
  • Aatmik Jain
  • R Vijai Iyer
  • Malay Saxena


This project is licensed under the Club Codefoster and SGSITS.

You can’t perform that action at this time.