title: Generating Random Puzzle Boards for Rush Hour Game
body: <p>If you're not familiar with it, the game consists of a collection of cars of varying sizes, set either horizontally or vertically, on a NxM grid that has a single exit.
  Each car can move forward/backward in the directions it's set in, as long as another car is not blocking it. You can never change the direction of a car.
  There is one special car, usually it's the red one. It's set in the same row that the exit is in, and the objective of the game is to find a series of moves (a move - moving a car N steps back or forward) that will allow the red car to drive out of the maze.</p>
  
  <p>I've been trying to think how to generate instances for this problem, generating levels of difficulty based on the minimum number to solve the board. </p>
  
  <p>Any idea of an algorithm or a strategy to do that? </p>
  
  <p>Thanks in advance!</p>
  
  <p><img src="https://i.stack.imgur.com/Lfd6N.gif" alt="Example of Rush hour puzzle"></p>