A Sudoku solver employing backtracking search, constraint programming, and Minimum Remaining Value (MRV) heuristic