{
"GRIGORE MOISIL"
NATIONAL COMPUTER SCIENCE COLLEGE
NAME: MESCO Vlad
DIVISION: JUNIOR 5
GRADE: 9
}
var a:array[1..9,1..9] of
byte;
cifre:array[1..9] of boolean;
x,y:byte;
_i:byte;
m_m,n_n:byte;
procedure readuiala;
var i,j:byte;
n:string;
aux:string;
er:integer;
begin
for i:=1 to 9 do
begin
readln(n);
n:=n + ',';
for j:=1 to 9 do
begin
aux:=copy(n,1,1);
delete(n,1,2);
val(aux,a[i][j],er);
end;
end;
end;
procedure test_(
var i,j:byte
);
{ verifica if o cifra este
intalnita }
var k_:byte;
begin
if a[i][j]<>0
then
begin
for k_:=1 to 9 do
begin
if k_=a[i][j]
then
begin
cifre[k_]:=false;
break;
end;
end;
end;
end;
procedure in_cutie;
var i,j:byte;
k:byte;
{ verifica cutia de 3x3 }
begin
for k:=1 to 9 do
begin
cifre[k]:=true;
end;
case x of
1..3: m_m:=1;
4..6: m_m:=4;
7..9: m_m:=7;
end;
case y of
1..3: n_n:=1;
4..6: n_n:=4;
7..9: n_n:=7;
end;
for i:=m_m to m_m+2 do
begin
for j:=n_n to n_n+2 do
begin
test_(i,j);
end;
end;
end;
procedure in_linie;
var i,j,k:byte;
{ verifica in lung shin lat
>:-}
begin
{partea I}
for i:=x downto 1 do
begin
test_(i,y);
end;
for i:=x to 9 do
begin
test_(i,y);
end;
{partea a II-a}
for j:=y downto 1 do
test_(x,j);
for j:=y to 9 do
test_(x,j);
end;
procedure analiza;
var n:string;
aux:string;
er:integer;
{ HQ-ul analizelor }
begin
readln(n);
aux:=copy(n,1,1);
val(aux,x,er);
delete(n,1,2);
val(n,y,er);
in_cutie;
in_linie;
end;
procedure scrierissimo;
var k:byte;
b:boolean;
{ afisheaza rezurile }
begin
b:=true;
for k:=1 to 9 do
begin
if cifre[k]
then
begin
if b then begin
write(k);
b:=false;
end
else
write(',',k);
end;
end;
writeln;
end;
procedure main;
begin
readuiala;
{for _i:=1 to 5 do}
while not(eof) do
begin
analiza;
scrierissimo;
end;
end;
begin
assign(input,'sudoku.in');
assign(output,'sudoku.out');
reset (input);
rewrite(output);
main;
close(input);
close(output);
end.