еобхідних для реалізації програми, і опис методів роботи з цими структурами.
unit WorkWithMatrix;
Matrix = classn = 9;
t_mas = array [1 .. n] of byte; _matr = array [1 .. n] of t_mas;// власне саме судоку_set = set of 1 .. n;// безліч p>
t_mas_set = array [1 .. n] of t_set;// масив множин для перевірки на повтори
t_mas_boolen = array [1 .. matrix.n] of boolean;// масив флагов_matr_boolean = array [1 .. matrix.n] of t_mas_boolen;// матриця прапорів
Sdvig (var s: t_matr; i: Byte);// зрушення 3 рядків на 1 крок вправоsdvig2 (var s: t_matr; i: byte);// зсув одного рядка на 1 крок вправоZeroBoolMatr ( var b: T_matr_boolean);// обнулення булевої матріциIfMatrHavNull (s: T_matr): boolean ;//перевіряє чи має матриця хочаб один нуль
end;
У класі Matrix описані типи:
1. цілочисельний масив з n елементів (t_mas),
2. целочисленная матриця розміром NxN (t_matr);
. безліч, яке може включати в себе елементи від 1 до n (t_set);
. масив множин з n множин (t_mas_set);
. масив типу Boolean з n елементів (t_mas_boolen);
. матриця з елементів типу Boolean розміром NxN (t_matr_boolean).
У класі Matrix описана константа (const n = 9), яка позначає розмір судоку.
У класі Matrix описані методи:
1. зрушення 3-х рядків в матриці s з позиції i на один крок вправо (Sdvig);
2. зсув рядка i в матриці s на один крок вправо (Sdvig2);
. обнулення матриці, елементи якої типу Boolean (ZeroBoolMatr);
. повертає true якщо в матриці s є хочаб один нуль, інакше false;
Клас Мatrix відображає в собі ті дії над структурами, які не мають посереднього відношення до предметної області завдання, але використовуються під час реалізації інших класів.
У модулі Sudoky реалізований клас TSudoky. У цьому класі реалізовані поля і медоди для роботи з судоку, як з математичною моделлю. p align="justify"> unit Sudoky;
windows, Classes, WorkWithMatrix;
TSudoky = class: Matrix.t_matr;: Matrix.t_matr;: array of Matrix.t_matr;// масив відповідей з судоку
Mlen: integer ;//кількість рішень на масиві Ans
Matr: matrix;
create ...