Skip to content
Switch branches/tags
Go to file

Latest commit


Git stats


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


An intelligent version of the sliding-puzzle game for your terminal built in golang


puzzl is an intelligent implementation of the classical sliding-puzzle game.

It's built on top of Golang's concurrency primitives. It uses goroutines and channels for inter process communications to provide real time notification experience in unix terminals.

puzzl comes with an in-built solver which can solve any puzzle configuration faster than Iron Man.


I have also written a paper* describing technical details about the game, have a look, in case you want to.

Implementing an intelligent version of the classical sliding-puzzle game for unix terminals using Golang's concurrency primitives


go get
  • Make sure that the workspace's bin directory is added to your PATH
export PATH=$PATH:$GOPATH/bin


  • Start the game with the command puzzl.
  • Use Arrow Keys to move the blank tile wherever you want.
  • Press 'h' or 'H' to get any hint for next move.
  • Press ESC key to quit the game.


  • puzzl comes with an in-built solver that powers the automation for the game.
  • puzzl gives you some hope by showing the optimal possible moves to solve any board configuration.
  • puzzl helps you survive the game by giving hints for next move.
  • puzzl tracks all the user moves and accordingly generates score for the game.
  • puzzl shows notifications according to the real time game status.
  • puzzl notifies that whether your last move was right or wrong.

In-built Solver

  • puzzl uses A-star algorithm to solve the game board.
  • puzzl's solver is enough fuel-efficient that it can solve the hardest 3x3 puzzle in 31 moves. Exactly what the ideal solvability condition asks for.

Hints Policy

  • You will get a maximum of 3 hints per game session. No more cheatings. 🚔

Scoring Policy

  • puzzl has its own scoring system. It measures the real time game score using two parameters, one is total played game moves (T-score) and another is accumulated correct score (A-score) from all the moves.
  • Whenever a user moves in a correct direction as the solver would have moved, the A-score increases by 1 and decreases by 1 when the user moves in a wrong direction.
  • The score of game at any point of time is calculated by this function. [ score = A-score / T-score ]
  • This way the maximum score of 1 would be possible in only one situation when the user traverse the game's state space in the right direction all the time.

Notification Mechanism

  • puzzl uses a combination of goroutines and channels to deliver real time notifications in the game.
  • Here you can see all the available notifications.


Built with Muzi and Coffee by Pravendra Singh


🎲 An intelligent version of the sliding-puzzle game for your terminal built in golang




No packages published