uses crt,dos,windos,strings,usudoku;
const n=3;

var FN:string;

Function Arg(na:byte):string;
  var
    ArgN: PChar;
begin
    GetMem(ArgN, 20);
    GetArgStr(ArgN, na, 19);
    Arg:=StrPas(ArgN);
end;

Procedure OpenF(fl:string);
    var f:text;
        l:string;
        c:char;
        i,j,h:integer;
Begin
    if fl='' then fn := 'Exemplu.sdk'
    else fn := fl;
    Assign(f,fn);
    reset(f);
    j:=0;
    repeat
        inc(j);
        readln(f,l);
        i:=0;
        Repeat
            inc(i);
            c:=l[i];
            h:=ChrHex(c);
            if h<>0 then bif(i,j,h,cl[2]);
        until i=n*n;
    until eof(f)or(j=n*n);
    close(f);
end;

Procedure attr;
    var i:byte;
begin
    textmode(258);
    cl[25]:=textattr;
    cl[1]:=$1f;
    for i:=2 to 25 do cl[i]:=fonc(cl[1]);
    cl[2]:=fonc(cl[1])+$2;
    cl[3]:=fonc(cl[1])+$b;
    cl[4]:=fonc(cl[1])+$d;
    textattr:=cl[1];clrscr;
end;

begin
    attr;
    fereastra(n,ex,ey);
    OpenF(arg(1));
    vergres;
    readkey;
    rezolva;
    gotoxy(1,1);
    Readkey;
end.
