Skip to content

declspec-cdecl/SudokuChecker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Судоку верификатор решений

Функционал проверки решений судоку реализован в объекте SudokuCheckerUtils. Реализовано два сценария проверки regularChecker и fastChecker. regularChecker реализует проверку всех свойств правильного решения судоку. fastChecker реализует сценарий с меньшим числом проверок в соответствии с предлагаемой оптимизацией, сокращающей число проверок до 21 проверки последовательности длиной 9, а именно:4-х квадрантов 3 на 3, все столбцы и все строки кроме последней.

Детали реализации

Для проверки того, что в последовательности из 9 элементов есть все цифры из диапазона [1..9] реализован метод isNineDigitsMet. Основной его принцип это аккумуляция найденных цифр в переменной типа Int в виде соответствующих (по позиции) бит с последующим сравнением полученного числа с числом 0x1FF соответсвующим первым 9 единичным битам в двоичном представлении числа. Для обхода столбцов и квадрантов были реализованы ColumnIterator и QuadrantIterator. Так как regularChecker и fastChecker отличаются только наборами проверяемых последователльностей из 9 элементов, то сама проверка была реализована с помощью метода checkSudoku, которому на вход помимо самой матрицы поступает case класс ItemsToCheck, содержаший "индексы" проверяемых сущностей (строки,квадранты,столбцы).

Тестирование

Для проверки работоспособности реализованы модульные тесты с использованием библиотеки ScalaTest. Так как тестировать нужно 2 реализации, то был реализован трейт SudokuCheckBehavior, описывающий тесты и два класса RegularCheckingSpec и FastCheckingSpec предоставляющих соответствующие реализации

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages