Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пояснит записка сане.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
101.13 Кб
Скачать

8. Порядок контроля и приемки

Приемка осуществляется в соответствии с Техническим заданием.

Приложение B

Интересный код программы

function sudInLine(s:TSudoku;p:TPoint;v:integer):boolean;{проверяем можно ли цифру подставить на данное место}

var

i:1..9;

begin

Result:=True;

for i:=1 to 9 do

if p.y<>i then {есть ли данное значение в строке}

if s[p.X,i]=v then Exit;

Result:=False;

end;

function sudInRow(s:TSudoku;p:TPoint;v:integer):boolean;

var

i:1..9;

begin

Result:=True;

for i:=1 to 9 do

if p.x<>i then {есть ли данное значение в столбце}

if s[i,p.Y]=v then Exit;

Result:=False;

end;

function sudInSq(s:TSudoku;p:TPoint;v:integer):boolean;

var

ix,iy:0..8;

lx,ly:0..8;

begin

lx:=0; ly:=0;

if p.x in [1,2,3] then lx:=1; {есть ли данное значение в квадрате}

if p.x in [4,5,6] then lx:=4;

if p.x in [7,8,9] then lx:=7;

lx:=lx-1;

if p.y in [1,2,3] then ly:=1;

if p.y in [4,5,6] then ly:=4;

if p.y in [7,8,9] then ly:=7;

ly:=ly-1;

Result:=True;

for ix:=1 to 3 do

for iy:=1 to 3 do

if (p.x<>lx+ix) and (p.y<>ly+iy) then

if s[lx+ix,ly+iy]=v then Exit;

Result:=False;

end;

function sudInAny(s:TSudoku;p:TPoint;v:integer):boolean; {если цифра есть в линии, столбце или квадрате, то мы ее не берем}

begin

Result:=sudInLine(s,p,v) or sudInRow(s,p,v) or sudInSq(s,p,v);

end;