Programozás‎ > ‎Feladatok‎ > ‎Varázslat‎ > ‎Megoldás‎ > ‎

dk_varazslat.pas

Letöltés: dk_varazslat.pas

program magic;

type ellentet=record c1,c2:char; end;
     kombinal=record c1,c2,c3:char; end;

var be,ki:text;
    T,C,D,N,i,q,w: byte;
    x:kombinal;
    y:ellentet;
    komb:array[1..36] of kombinal;
    ell:array[1..28] of ellentet;
    ossz:array[1..100] of char;
    asd:string;
    d1:char;
   

Procedure beolvas;
begin
asd:='';
read(be,C);
if C>0 then
begin
    for i:=1 to C do
    begin
        read(be,d1);
        read(be,komb[i].c1);
        read(be,komb[i].c2);
        read(be,komb[i].c3);
    end;
end;
read(be,D);
if D>0 then
begin
    for i:=1 to D do
    begin
        read(be,d1);
        read(be,ell[i].c1);
        read(be,ell[i].c2);
    end;
end;
read(be,N);
read(be,d1);


end;



procedure kombinale(a:kombinal);
var j:byte;
begin
for j:=1 to C do
begin
    if ((a.c1=komb[j].c1) and (a.c2=komb[j].c2))
    or ((a.c2=komb[j].c1) and (a.c1=komb[j].c2))
    then
    begin
        asd:=copy(asd,1,(length(asd)-2));
        asd:=asd+komb[j].c3;
    end;
end;   
end;

procedure ellentete(a:ellentet);
var j,k:byte;
    l,m:boolean;
begin
for j:=1 to D do
begin
    l:=false;
    m:=false;
    for k:=1 to length(asd) do
    begin
        if asd[k]=ell[j].c1 then l:=true;
        if asd[k]=ell[j].c2 then m:=true;
    end;
    if m and l then asd:='';
end;
end;


begin
assign(be,'m2.in');
assign(ki,'m2.out');
reset(be);
rewrite(ki);
readln(be,T);
for q:=1 to T do
begin
beolvas;
if N>0 then
begin
    for i:=1 to N do
    begin
        read(be,ossz[i]);
        asd:=asd+ossz[i];
        x.c2:=asd[length(asd)];
        x.c1:=asd[(length(asd)-1)];
        x.c3:=' ';
        kombinale(x);
        y.c1:=asd[length(asd)];
        y.c2:=asd[(length(asd)-1)];
        ellentete(y);
    end;
end;
write(ki,'Case #',q,': [');
if length(asd)>0 then
for w:=1 to length(asd) do
begin
    if (w=1) and (w=length(asd))
    then write(ki,asd[w]) else
    if w=1 then write(ki,asd[w],',') else
    if w=length(asd) then write(ki,' ',asd[w]) else
    write(ki,' ',asd[w],',');
   
end;
writeln(ki,']');
end;
close(be);
close(ki);
end.


ċ
dk_varazslat.pas
(2k)
Péter Erben,
2011. szept. 27. 1:16
Comments