Karesz egy „utcagyerek”, aki egy négyzetrácsos úthálózat utcasarkain lépdelve mozog. Egyes utcasarkokon kavicsok találhatók, amiket Karesz tetszőleges számban felvehet, majd újra letehet. Karesz, mint algoritmus végrehajtó, az alábbi nyelvet érti:
Karesz tevékenységei | Amit Kareszről kérdezhetünk |
---|---|
Fordulj jobbra | Északra néz? |
Fordulj balra | Délre néz? |
Lépj | Keletre néz? |
Vegyél fel egy kavicsot | Nyugatra néz? |
Tegyél le egy kavicsot | Van itt kavics? |
Kezdetben Karesz a (10,10) koordinátájú ponton áll és felfelé néz (azaz ha lépne egyet, akkor a (10,11) koordinátájú pontra lépne. Kezdetben a (10,10) koordinátájú ponton X darab kavics van, a (11,10) koordinátájún pedig Y darab kavics van, a többi ponton nincs kavics.
Karesz: Ciklus amíg van itt kavics Vegyél fel egy kavicsot Lépj Tegyél le egy kavicsot Fordulj jobbra Lépj Fordulj jobbra Lépj Fordulj jobbra Fordulj jobbra Ha van itt kavics akkor Vegyél fel egy kavicsot Lépj Tegyél le egy kavicsot Fordulj balra Lépj Fordulj balra Lépj Fordulj balra Fordulj balra Elágazás vége Ciklus vége Eljárás vége.
Az alábbi algoritmus az N elemű, pozitív számokat tartalmazó X vektor alapján számolja ki M számot és az Y vektor értékeit.
Valami(N,X,M,Y): M:=0; K:=-2 Ciklus i=1-től N-ig Ha X(i) mod 2=0 akkor Ha X(i)>K akkor M:=1; K:=X(i); Y(M):=i különben Ha X(i)=K akkor M:=M+1; Y(M):=i Elágazás vége Ciklus vége Eljárás vége.