{

"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.