Source code for kyu_5.did_i_finish_my_sudoku.sudoku_by_regions

#  Created by Egor Kostan.
#  GitHub: https://github.com/ikostan
#  LinkedIn: https://www.linkedin.com/in/egor-kostan/

from utils.primes.primes_generator import gen_primes


[docs]def assert_sudoku_by_region(board: list) -> bool: """ Assert Sudoku by region :param board: Sudoku list :return: boolean value (is Sudoku done or not) """ row_length = len(board[0]) step = 0 for i in gen_primes(): if row_length % i == 0: step = i break t, start, end = 0, 0, step while t < step: for i in range(0, row_length, step): region = list() for a in range(i, i + step): row = board[a][start: end] for b in row: region.append(b) s_region = set(region) if len(s_region) != row_length: return False start, end = end, end + step t += 1 return True