#deg 3 { opraveno: přejmenováno s, p; doplněn středník za y:=1 } var x: 0..2; { vstupní značky } y: 0..1 = 0; { výstupní značky } z: 0..2 = 0; { stav prohledávání: 1=dorazila první vlna, 2=už i druhá } b: 0..3 = 0; { kterou hranou jsme značku přijali, je-li z>0 } c: 0..1 = 0; { počítadlo pro zpomalování } i: 1..3 = 1; { pomocná proměnná } begin c := 1-c; if (z=1) and ((S[1].z=2) or (S[2].z=2) or (S[3].z=2)) then z := 2 { druhá vlna běží plnou rychlostí } else if c=1 then { ostatní části programu běží zpomaleně } case z of 0: begin if x=1 then z := 1; { začátek první vlny } for i := 1 to 3 do { pokračování první vlny } if S[i].z = 1 then begin z := 1; b := i; end; if z=0 then stop; { stále se nic neděje } end; 1: begin if x=2 then y := 1; { první vlna dorazila do cíle => jdeme zpět } for i := 1 to 3 do { zpětný průchod } if (S[i].y=1) and (S[i].b = P[i]) then y := 1; if (y=1) and (x=1) then z := 2; { zpětný průchod dorazil do počátku } end; 2: stop; end; end.