Algorithm for solving the Latin Square puzzle Futoshiki using pseudo-boolean constraints and a SAT solver