Python code to write one pure and one nonpure function Write

Python code to write one pure and one non-pure function:

Write a pure function named checkSudoku that will check a proposed Sudoku puzzle solution and return True if it\'s correct, False otherwise. The puzzle grid is represented using a twodimensional list with 9 rows and 9 columns, and is passed as a single argument to the checkSudoku function.

There are two basic approaches to checking the solution:

1) Verify that every row, column and sub-square contains all the digits 1-9 or…

2) Check every cell in the grid and verify that is unique among all the elements in its row, column and sub-square.

Hint: you can obtain the index [a][b] of the upper-left corner a 3x3 sub-square for any grid index [i][j] using the following: a = i//3*3, b = j//3*3

Write a separate unitTest procedure (non-pure function) that will call checkSudoku and display either \"Solution\" or \"Not a solution\" for the sets of values on the next page (at a minimum):

Notes: Test your program thoroughly on a variety of values other than those included in the examples above (that is, all error cases, average and special/extreme cases).

Below is an example puzzle and its solution: 5 3 467 89 1 2 67 21953 48 1 9 83 4 2 5 67 85 9761 4 23 4 2 6 8 5 37 9 |1 7 13 924 856 9615 37284 2 87 4 1 9 635 3 45 2 86179 19 5 3 1 6 8 4 8 3 6 5

Solution

def checkAllElementspresent(arr):
   for i in range(9):
       if i + 1 not in arr:
           return False
   return True

def checkSudoku(mat):
   for i in range(9):
       temp = mat[i]
       if checkAllElementspresent(temp) == False:
           return False
   for i in range(9):
       temp = []
       for j in range(9):
           temp.append(mat[j][i])
       if checkAllElementspresent(temp) == False:
           return False

   for i in range(0, 9, 3):
       for j in range(0, 9, 3):
           temp = []
           for p in range(i, i + 3):
               for q in range(j, j + 3):
                   temp.append(mat[p][q])
           if checkAllElementspresent(temp) == False:
               return False

   return True

arr = [ [5, 3, 4, 6, 7, 8, 9, 1, 2],
       [6, 7, 2, 1, 9, 5, 3, 4, 8],
       [1, 9, 8, 3, 4, 2, 5, 6, 7],
       [8, 5, 9, 7, 6, 1, 4, 2, 3],
       [4, 2, 6, 8, 5, 3, 7, 9, 1],
       [7, 1, 3, 9, 2, 4, 8, 5, 6],
       [9, 6, 1, 5, 3, 7, 2, 8, 4],
       [2, 8, 7, 4, 1, 9, 6, 3, 5],
       [3, 4, 5, 2, 8, 6, 1, 7, 9]]

if checkSudoku(arr) == True:
   print \'Solution\'
else:
   print \'Not a solution\'

Python code to write one pure and one non-pure function: Write a pure function named checkSudoku that will check a proposed Sudoku puzzle solution and return Tr
Python code to write one pure and one non-pure function: Write a pure function named checkSudoku that will check a proposed Sudoku puzzle solution and return Tr

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site