Program VORDLUS; (*Eesti Vabariiklik Informaatikaolümpiaad 1993 *) Uses Dos, Crt; Type String21=String[21]; Var ETALON,VASTUS:String21; PROOV:Array[0..10] of String21; LUB_VIGU,MAKSTASE:Integer; OK,LEITUD:Boolean; Label Tsykkel; (*-----------------------------------------------------*) Procedure AEG; Var t,min,sec,s100:word; Begin Gettime(t,min,sec,s100); writeln(min:2,'.',sec:2,',',s100:2); End; (*------------------------------------------------*) Procedure SISENDIKONTR(SISEND,NIMI:String21;Var OK:Boolean); Var I:Integer; Begin If Length(SISEND)>20 Then Begin Writeln(NIMI,' on pikem kui 20'); OK:=False; End; For I:=1 to Length(SISEND) Do If Not(SISEND[I] in ['a'..'z','A'..'Z',' ']) Then Begin Writeln(NIMI,' sisaldab lubamatut sümbolit ', SISEND[I]); OK:=False; Exit End; End; (*Proc SISENDIKONTR*) (*--------------------------------------------*) Procedure UURI(ETALON:String21;TASE:Integer;ALGOPER:Char;KOHT:Integer; Var LEITUD:Boolean); Var I,L, SAMME,LMUUTUS,UUSI:Integer; SYMBOL:char; Label Eemald,Vahet,Lisam,Asend; Procedure TULEMUS; Var I:Integer; Begin AEG; LEITUD:=True; Writeln('Tehtud vähemalt', TASE:2, ' viga, muutes vastust järgmiselt:'); For I:=0 to TASE Do Writeln(PROOV[I]); Repeat until Keypressed; End; (*-------------------------------------------*) Begin If LEITUD Then Exit; L:=Length(ETALON); SAMME:=MAKSTASE-TASE+1; LMUUTUS:=Length(VASTUS)-Length(ETALON); If SAMMESAMME Then Exit; End; Case ALGOPER of 'E': Goto Eemald; 'V': Goto Vahet; 'L': Goto Lisam; 'A': Goto Asend; Else Writeln('Tundmatu operatsioon'); End; {-----------------eemaldamine-----------------------} Eemald:If SAMME-1>=LMUUTUS+1 Then For I:=KOHT to L Do Begin PROOV[TASE]:=ETALON; Delete(PROOV[TASE],I,1); If PROOV[TASE]=VASTUS Then TULEMUS Else If TASE0 Then Begin For I:=KOHT to L Do If ETALON[I]<>VASTUS[I] Then Begin PROOV[TASE]:=ETALON; Insert(VASTUS[I],PROOV[TASE],I); If PROOV[TASE]=VASTUS Then TULEMUS Else If TASE< MAKSTASE Then UURI(PROOV[TASE],TASE+1,'L',I+1,LEITUD); If LEITUD Then Exit; End; PROOV[TASE]:=ETALON+VASTUS[L+1]; If PROOV[TASE]=VASTUS Then TULEMUS Else If TASE< MAKSTASE Then UURI(PROOV[TASE],TASE+1,'L',I+1,LEITUD); If LEITUD Then Exit; End; {------------------asendamine------------------} Asend: If LMUUTUS<>0 Then Exit; For I:=1 to L Do If ETALON[I]<>VASTUS[I] Then Begin PROOV[TASE]:=ETALON; PROOV[TASE][I]:=VASTUS[I]; If PROOV[TASE]=VASTUS Then TULEMUS Else If TASE