To get acquainted with the puzzle, you can visit its official page and its Wikipedia page . At the latter, there is a couple of useful links at the bottom.

Here is two instances of the puzzle to start with: 6 x 6 and 12 x 6 . It is desirable that you create your own generator of instances and see instances up to which size you can solve.

The most important part of the work is to come up with a mathematical model (Integer Programming or Constraint Programming one). If your IP or CP model is not very efficient (you cannot solve two proposed instances with a IP or CP solver), try to invent and implement an heuristic algorithm using any programming language (C++ for example). But still it is indispensable to create a mathematical model and test it using a solver.