procedure Fgv51(var a:int64; var b:int8; val X:string; val Y:string);
Input adatok: Két sztring ( X
és Y ) ill. két
elöjeles egész ( a és b ).
Output :
Fenti egészek és egy sztring - Z
A változatok leírásában használtuk a következö jelöléseket:
i --> a % 64 ill. ii --> abs(i)
j --> b % 64 ill. jj --> abs(j)
Z = MIN(X,Y)+R(X) ;
Z = M(Y,ii+PN("ba",X)) ;
Z = T(MIN(X,Y))+D(Y,"e") ;
Z = "-"+M(DC(Y,X),ii)+"-" ;
Z = MIN(X,T(Y)) ;
Z = R(X)+T(Y) ;
Z = X+R(T(Y)) ;
Z = R(Y)+M(X,jj) ;
Z = MIN(X,Y)+R(X) ;
Z = M(X,ii+PN("az",Y)) ;
Z = T(MAX(X,Y))+E(X,i,2) ;
Z = "-"+DC(Y,E(X,3,i))+"-" ;
Z = MIN(X,E(T(Y),i,jj)) ;
Z = R(X)+T(E(Y,-5,i)) ;
Z = X+R(T(Y)) ;
Z = MIN(X,T(Y))+R(X) ;
Z = M(E(X,-4,PN("az",Y)),ii) ;
Z = T(R(Y))+D(Y+X,"ezt") ;
Z = M("^"+DC(X,Y),ii)+"-" ;
Z = MIN(R(X),T(Y)) ;
Z = E(X+Y,L(R(X)),ii) ;
Z = M(X,L(R(E(Y,1,ii)))) ;
Z=H(R(X),L(X)/2,jj,T(Y));
Z=H(X+Y,-L(R(X)),j,””);
Z=H(T(X),j/8,i,R(Y));
Z = R(X)+D(Y,M(E(X,i,1),2)) ;
b = j*i+L(R(Z)) ; FOR{a*=Z[.]}
b = i+L(X) ; FOR{a+=b*X[.]};
b = max(i,j)+PP("j",Z) ; FOR{a%=L(Z)+99+X[.]}
b = i*j ; FOR{a*=PN(E(Y,j,1),X) }
b = L(M(R(Z),i))+j ; FOR{a*=X[.] & Z[.]}
b = i+j+L(X+E(Y,j,2)) ; FOR{a*=X[.] | Z[.]}
b = j+i-L(MAX(Z,Y)) ; FOR{a*=X[.] ^ Z[.]}
b = max(i,j)-min(i,j) ; ; FOR{Z+=E(X,PP(X[.],Y),1)}; a=L(Z)
b = L(E(Z,i,j)) ; FOR{a+=X[.] & Z[.]}
b = j+L(E(Z,j,3)) ; FOR{a%=X[.] * Z[.]+L(Z)+999}
b = min(i,j)+PP("a",Z) ; FOR{a-=(X[.] ^ Z[.])*98765}
b = i+j ; FOR{a+= b*PN(Y[.],X) }
b = L(M(Z,i))+j ; FOR{a+=j*X[.]+Z[.]}
b = i+j+L(R(X)+Y) ; FOR{a-=ii*Z[.]}
b = j+i-L(D(Z,E(X,2,i))) ; FOR{a|=Z[.]*(X[.]**3)}
b = j-i+L(E(Z,-L(Z),j)) ; FOR{a%=888+X[.]*Z[.]}
b = j+L(X) ; FOR{Z+=Z[PP(X[.],Y)]}
b = min(i,j)+PP(E(X,2,3),Z); FOR{a+=Z[.]*ii}
b = i-j ; FOR{a*= Z[PP(Y[.],X)]}
b = L(E(Z,i,j)) ; FOR{a-=b%Z[.]}
b = i+j+L(MIN(X,Z)) ; FOR{a*=b%Z[.]}
b = j+i-L(MIN(Z,Y)) ; FOR{a+=(b+X[.])*Z[.]}
b=b*L(Z); FOR{a-=(X[.]+Y[.])*Z[.]};
b=b+L(X)*L(Y); FOR{a%=Z[.]**3}
b=b-L(X)**5; FOR{a*=(Z[.]-X[.])+32}
b = i+j+min(L(X),L(Y),L(Z)) ; FOR{a-=(Z[.]-Y[.])*X[.]}
Az egyes változatok leírásánál az alábbi függvényekre is hivatkoztunk:
(Karakterek indexelése: 0, 1, 2, … hossz-1, ill. negatív indexek a sztring végéröl való visszafelé számlálást jelölik. Pl. X=„körtefa” esetén: X[1]=”ö”, X[3]=”t”, ill. X[-1]=”a” és X[-3]=”e”. )
Sztring hossza: L("alma") -> 4
Két sztring összefûzése: "abc"+"123" -> "abc123"
Egy sztring redukáltja: R("abbaaacbb") -> "abacb"
Egy sztring tükrözöttje: T("abbcb") -> "bcbba"
Részsztring törlése: D("cababagbfaba","aba") -> "cbagbf"
Karakterek törlése: DC("cababagbfaba","aba") -> "cgf"
Sztring többszörözés: M(X,n) -> X+M(X,n-1) , és M(X,0) -> "" ill. M(X,-n)->””
Minta
illeszkedés pozíciója: PP("ez","ebben") ->
-1 ; PP("",X) -> -1 (-1 jelentése: nincs
illeszkedés)
ill. PP("az","Azaz, most aztan") -> 2
Minta illeszkedés száma: PN("az","Azaz, most aztan") -> 2 ; PN("",X) -> 0 (itt a 0 jelenti, hogy nincs illeszkedés)
ABC rendes
összehasonlítás: MIN("alma","korte") -> "alma"
ill. MAX("alma","korte") -> "korte"
Részsztring kiemelése :
E("korte",1,1) -> "o" ; E("",i,j)->"" ;
E("korte",-4,3)->"ort" ; E(X,i,negatív_szám)->””
E(X,L(X)+poz_szam,i)->E(X,-(L(X)+poz_szam+i),i)->"" ;
E("korte",-2,8)->"te" ; E("korte",-8,5)->"ko"
Részsztring
helyettesítése:
H("korte",1,1,”-Ezzel-”) -> "k-Ezzel-rte" ;
H(X,n, negatív_szám, Y)->X
H(„körte”,3,0,”-Ezzel-”) ->
"kör-Ezzel-te”;
a**n -> a-nak a n-edik hatványa (Egész kifejezésekben a karaktereket pozitív egészként értelmezzük)
FOR{...Z[.]....} : Az adott
utasításokat ciklusban kell végrehajtani, kezdve
Z[0]-val és befejezve Z[L(Z)-1]-nél.
FOR{...Z[.]...X[.].} : Mindkét sztring
összes karakterén végig kell menni, az elöbb
szereplö (itt Z) hajtja a külsö ciklust.
(Részkifejezéseket
végeredmény típusának megfelelöen kell
kezelni.)