Informatika gyűjtemény

Egy szinttel feljebb fn_lab.pas

2004050607080910

NézetNyomtat

fn_lab.pas (Vissza)
Az alábbi letöltési lehetőségek közül választhatsz: (segítség)
Karakterkódolás:
Sortörés:
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: us-ascii
Méret: 2 KB
program labirintus;

var n :byte;
    l :array[0..260,0..260] of char;



procedure beolvas;
var i,:integer;
    t :text;
begin
    for i:=0 to 260 do
    begin
        for j:=0 to 260 do
        begin
            l[i,j]:='#';
        end;
    end;
    assign(t,'lab.be');
    reset(t);
    readln(t,n);
    for i:=1 to n+2 do
    begin
        for j:=1 to n+2 do
        begin
            read(t,l[i,j]);
        end;
        readln(t);
    end;
end;


procedure balkez;
type irany=record
     sor: integer;
     oszlop :integer;
     end;

var i,:byte;
    ir,:irany;
begin
    ir.sor:=0;
    ir.oszlop:=1;
    i:=2;
    j:=1;
    l[2,1]:='.';
    while (i<n+1) or (j<n+2) do
    begin
        if (l[i+ir.sor,j+ir.oszlop]<>'#') and (l[i-ir.oszlop+ir.sor,j+ir.sor+ir.oszlop]='#') then
        begin
            l[i+ir.sor,j+ir.oszlop]:='.';
            i:=i+ir.sor;
            j:=j+ir.oszlop;
            write('E');
        end
        else if (l[i+ir.sor,j+ir.oszlop]='#') and (l[i+ir.oszlop,j-ir.sor]<>'#') and (l[i+ir.oszlop+ir.sor,j-ir.sor+ir.oszlop]='#') then
        begin
            l[i+ir.oszlop,j-ir.sor]:='.';
            i:=i+ir.oszlop;
            j:=j-ir.sor;
            f.sor:=ir.sor;
            f.oszlop:=ir.oszlop;
            ir.sor:=f.oszlop;
            ir.oszlop:=-f.sor;
            write('JE');
        end
        else if (l[i+ir.sor,j+ir.oszlop]<>'#') and (l[i-ir.oszlop+ir.sor,j+ir.sor+ir.oszlop]<>'#') then
        begin
            l[i+ir.sor,j+ir.oszlop]:='.';
            l[i-ir.oszlop+ir.sor,j+ir.sor+ir.oszlop]:='.';
            i:=i-ir.oszlop+ir.sor;
            j:=j+ir.sor+ir.oszlop;
            f.sor:=ir.sor;
            f.oszlop:=ir.oszlop;
            ir.sor:=-f.oszlop;
            ir.oszlop:=f.sor;
            write('EBE');
        end
        else if (l[i+ir.sor,j+ir.oszlop]='#') and (l[i+ir.oszlop,j-ir.sor]='#') and (l[i-ir.oszlop,j+ir.sor]='#') then
        begin
            ir.sor:=-ir.sor;
            ir.oszlop:=-ir.oszlop;
            write('BB');
        end;
    end;
    writeln;
    for i:=1 to n+2 do
    begin
        for j:=1 to n+2 do
        begin
            write(l[i,j]);
        end;
        writeln;
    end;
end;



begin
beolvas;
balkez;
readln;
end.
(Vissza)