All pastes #247707 Raw Edit

yac - P-I-4 Grafomat

public text v1 · immutable
#247707 ·published 2006-11-13 20:04 UTC
rendered paste body
{ P-I-4 Grafomat
Jakub Ruzicka
ctete grafomat.txt }

var x:0..2; { vstup }
    y:0..1 = 0; { vystup }
    z:0..3 = 0; { prosel pomocny signal ? pokud ano, odkud prisel ? (0 - neprisel, 1..3 - cislo mistni hrany odkud prisel)}
    i:1..3; { iteracni promenna }

begin
case x of
0:begin { vrchol bez vstupniho oznaceni }
  if (y = 0) then { nejsme oznaceni jako vrchol na nejkratsi ceste }
   begin
    if (z = 0) then { nepresel pres nas jeste ani pomocny singal }
     begin
      i:=1;
      while (i <= 3) AND (S[i].z = 0) do i:=i+1;
      if i <= 3 then z:=i; { najdeme-li oznaceneho souseda, zapiseme si jeho mistni hranu a nehledame dalsi }
     end
    else { vyhlizime y = 1 u vrcholu, ktere si od nas vzaly pomocny sigal }
     begin
      i:=1;
      while (i <= 3) AND NOT ( (S[i].y >= 1) AND (S[i].z = P[i]) ) do i:=i+1; { ma soused y = 1 a vzal si pomocny signal od nas ? }
      if i <= 3 then y:=1;
     end;
   end;
 stop; { vsechny x = 0 vrcholy vzdy souhlasi se zastavenim }
 end;
1:begin { vrchol oznaceny 1 }
  if z = 0 then z := 1; { vrchol vzdy vysila pomocny signal }
  i:=1;
  while (i <= 3) AND ( (S[i].y = 1 ) OR (S[i].x = 2) ) do i:=i+1;
  if i <= 3 then stop; { nejkratsi cesta je vyznacena, nebo jsou 1 a 2 hned vedle sebe - koncime }
 end;
2:begin { vrchol oznaceny 2 }
  if y<1 then y:=1; { vrchol je vzdy 1 }
  if z<1 then { jeste k nam nedosel pomocny signal ? }
   begin
    i:=3;
    while (i <= 3) AND (S[i].z = 0) do i:=i+1; { hledame souseda oznaceneho pomocnym signalem }
    if i <= 3 then z:=i; { najdeme-li oznaceneho souseda, delame, ze jsme oznaceni od nej }
   end else
  stop; { dosel, takze zastavujeme a cekame, az doje y = 1 na zacatek. }
 end;
end;

end.