cb1 :: Chessboard cb1 = [[' ','B',' ',' ',' ','B','B',' '], ['B',' ',' ',' ',' ','B',' ',' '], [' ',' ',' ',' ',' ',' ',' ',' '], [' ',' ',' ',' ',' ',' ',' ',' '], [' ','B',' ',' ',' ',' ',' ',' '], [' ',' ',' ',' ',' ',' ','B',' '], [' ',' ',' ',' ',' ',' ',' ',' '], [' ',' ','B',' ',' ',' ',' ',' ']] cb2 :: Chessboard cb2 = [[' ','B',' ',' ',' ','B','B',' '], ['B',' ',' ',' ',' ','B',' ',' '], [' ',' ','c',' ',' ',' ',' ',' '], [' ',' ',' ',' ',' ',' ',' ','b'], [' ','B',' ',' ',' ',' ',' ',' '], [' ',' ',' ',' ','a',' ','B',' '], [' ',' ',' ',' ',' ',' ',' ',' '], [' ',' ','B',' ',' ',' ',' ',' ']] cb3 :: Chessboard cb3 = [[' ',' ','B',' ',' ',' ',' ',' '], [' ',' ',' ',' ','B',' ',' ',' '], [' ',' ',' ',' ',' ',' ','B',' '], ['B',' ',' ',' ',' ',' ',' ',' '], [' ',' ',' ','B',' ',' ',' ',' '], [' ','B',' ',' ',' ',' ',' ',' '], [' ',' ',' ',' ',' ',' ',' ','B'], [' ',' ',' ',' ',' ','B',' ',' ']] cb4 :: Chessboard cb4 = [[' ',' ',' ',' ',' ',' ',' ',' '], [' ',' ',' ',' ',' ',' ',' ',' '], [' ',' ',' ',' ',' ',' ',' ',' '], [' ',' ',' ',' ',' ',' ',' ',' '], [' ',' ',' ',' ',' ',' ',' ',' '], [' ',' ',' ',' ',' ',' ',' ',' '], [' ',' ',' ',' ',' ',' ',' ',' '], [' ',' ',' ',' ',' ',' ',' ',' ']] isValidChessboard cb1 == True isValidChessboard cb2 == False threatens cb1 (1,1) == [(1,2),(2,1)] threatens cb1 (0,5) == [] noThreats cb1 == False noThreats cb2 == False fullBoard [(1,1),(2,1)] == cb4 fullBoard [(1,3),(6,2)] == cb3 sdk1 :: Sudoku sdk1 = [ [1,3,2,4], [2,0,3,0], [3,1,0,2], [0,2,0,3] ] sdk2 :: Sudoku sdk2 = [ [1,5,2,4], [2,0,3,0], [3,1,0,9], [0,2,0,3] ] sdk3 :: Sudoku sdk3 = [ [1,3,2,4], [2,4,3,1], [3,1,4,2], [4,2,1,3] ] sdk4 :: Sudoku sdk4 = [ [0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,0] ] isValidStart 2 sdk1 == True isValidStart 2 sdk2 == False isValidStart 2 sdk3 == True isValidStart 3 sdk3 == False solve 2 sdk2 == sdk3 solve 3 sdk2 == sdk4