Sudoku Solver 1.0
Загрузка...
Поиск...
Не найдено
Шаблон класса SudokuSolver< N >final

Решатель судоку на основе алгоритма Dancing Links (точное покрытие). Подробнее...

#include <sudoku_solver.h>

Открытые типы

enum class  SolverError { INVALID_CONSTRAINTS , NO_SOLUTION }
 Ошибки, которые может вернуть метод solve(). Подробнее...
using Board = std::array<std::array<int, N>, N>
 Тип доски: квадратная матрица N×N, 0 обозначает пустую клетку
using FixedCell = std::tuple<int, int, int>
 Тип ячейки с фиксированным значением: (строка, столбец, цифра).

Открытые члены

 SudokuSolver (const Board &board)
 Конструктор от полной доски
 SudokuSolver (const std::vector< FixedCell > &fixed_cells)
 Конструктор от списка фиксированных клеток
 SudokuSolver (const SudokuSolver &)=default
SudokuSolveroperator= (const SudokuSolver &)=default
 SudokuSolver (SudokuSolver &&)=default
SudokuSolveroperator= (SudokuSolver &&)=default
 ~SudokuSolver ()=default
std::expected< Board, SolverErrorsolve () const
 Решает судоку с заданными начальными условиями

Подробное описание

template<size_t N>
requires ValidSudokuSize<N>
class SudokuSolver< N >

Решатель судоку на основе алгоритма Dancing Links (точное покрытие).

Параметры шаблона
Nразмер стороны судоку (должен быть полным квадратом)

Определения типов

◆ Board

template<size_t N>
using SudokuSolver< N >::Board = std::array<std::array<int, N>, N>

Тип доски: квадратная матрица N×N, 0 обозначает пустую клетку

◆ FixedCell

template<size_t N>
using SudokuSolver< N >::FixedCell = std::tuple<int, int, int>

Тип ячейки с фиксированным значением: (строка, столбец, цифра).

Перечисления

◆ SolverError

template<size_t N>
enum class SudokuSolver::SolverError
strong

Ошибки, которые может вернуть метод solve().

Элементы перечислений
INVALID_CONSTRAINTS 

Начальные данные противоречивы

NO_SOLUTION 

Решения не существует

Конструктор(ы)

◆ SudokuSolver() [1/4]

template<size_t N>
SudokuSolver< N >::SudokuSolver ( const Board & board)
explicit

Конструктор от полной доски

Аргументы
boardначальная доска (0 — пустая клетка)

◆ SudokuSolver() [2/4]

template<size_t N>
SudokuSolver< N >::SudokuSolver ( const std::vector< FixedCell > & fixed_cells)
explicit

Конструктор от списка фиксированных клеток

Аргументы
fixed_cellsсписок кортежей (row, col, digit) с начальными значениями

◆ SudokuSolver() [3/4]

template<size_t N>
SudokuSolver< N >::SudokuSolver ( const SudokuSolver< N > & )
default

◆ SudokuSolver() [4/4]

template<size_t N>
SudokuSolver< N >::SudokuSolver ( SudokuSolver< N > && )
default

◆ ~SudokuSolver()

template<size_t N>
SudokuSolver< N >::~SudokuSolver ( )
default

Методы

◆ operator=() [1/2]

template<size_t N>
SudokuSolver & SudokuSolver< N >::operator= ( const SudokuSolver< N > & )
default

◆ operator=() [2/2]

template<size_t N>
SudokuSolver & SudokuSolver< N >::operator= ( SudokuSolver< N > && )
default

◆ solve()

template<size_t N>
std::expected< typename SudokuSolver< N >::Board, typename SudokuSolver< N >::SolverError > SudokuSolver< N >::solve ( ) const

Решает судоку с заданными начальными условиями

Возвращает
Если решение найдено — доска Board, иначе SolverError

Объявления и описания членов класса находятся в файле: