From c824b90ead698da4f10ac38e431844d96af109b6 Mon Sep 17 00:00:00 2001 From: GDWR <57012020+GDWR@users.noreply.github.com> Date: Thu, 10 Jun 2021 17:44:41 +0100 Subject: [PATCH] Remove redundent function in Backtracking Sudoku (#4499) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Remove redundent function After reviewing this code, I've noticed that the `is_completed` function is a redundant operation. Increasing the number of loops required for each step of the sudoku solver. This should remove n² operations where n is the width of the grid. * Update sudoku.py Remove additional newline --- backtracking/sudoku.py | 28 +--------------------------- 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/backtracking/sudoku.py b/backtracking/sudoku.py index 3bfaddd6e..593fa52d6 100644 --- a/backtracking/sudoku.py +++ b/backtracking/sudoku.py @@ -59,27 +59,6 @@ def is_safe(grid: Matrix, row: int, column: int, n: int) -> bool: return True -def is_completed(grid: Matrix) -> bool: - """ - This function checks if the puzzle is completed or not. - it is completed when all the cells are assigned with a non-zero number. - - >>> is_completed([[0]]) - False - >>> is_completed([[1]]) - True - >>> is_completed([[1, 2], [0, 4]]) - False - >>> is_completed([[1, 2], [3, 4]]) - True - >>> is_completed(initial_grid) - False - >>> is_completed(no_solution) - False - """ - return all(all(cell != 0 for cell in row) for row in grid) - - def find_empty_location(grid: Matrix) -> Optional[Tuple[int, int]]: """ This function finds an empty location so that we can assign a number @@ -111,12 +90,7 @@ def sudoku(grid: Matrix) -> Optional[Matrix]: >>> sudoku(no_solution) is None True """ - - if is_completed(grid): - return grid - - location = find_empty_location(grid) - if location is not None: + if location := find_empty_location(grid): row, column = location else: # If the location is ``None``, then the grid is solved.