Skip to content

Instantly share code, notes, and snippets.

@e673
Created February 14, 2017 21:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save e673/618194192c299aad51e50fcb32cb89e1 to your computer and use it in GitHub Desktop.
Save e673/618194192c299aad51e50fcb32cb89e1 to your computer and use it in GitHub Desktop.
{$APPTYPE CONSOLE}
uses SysUtils;
var F: text;
T: text;
S: TSearchRec;
Zal4,Zal2: integer;
Z: array [1..4] of integer;
function GenZal(N: integer): integer;
var I,J: integer;
label 1;
begin
1:J:=0;
for I:=1 to N do
begin
Z[I]:=Random(1000);
Inc(J,Z[I]);
end;
for I:=1 to N do Z[I]:=Z[I]*100 div J;
J:=100;
for I:=1 to N-1 do Dec(J,Z[I]);
Z[N]:=J;
if (Z[N]<0) or (Z[N]>100) then goto 1;
J:=1;
for I:=2 to N do if Z[I]>Z[J] then J:=I;
Result:=J;
end;
procedure GenZal4(Need: integer);
var B: boolean;
begin
B:=(Random(100)>=Zal4);
repeat until (GenZal(4)=Need) xor B;
end;
procedure GenZal2(Need: integer);
var B: boolean;
begin
B:=(Random(100)>=Zal2);
repeat until (GenZal(2)=Need) xor B;
end;
procedure NewQ;
var Q: string;
A: array [1..4] of string;
I,J,Ans,K: integer;
begin
Readln(F,Q);
Delete(Q,1,1);
for I:=1 to 4 do
begin
Readln(F,A[I]);
if A[I,1]='+' then Ans:=I;
Delete(A[I],1,1);
end;
Write(T,Q,'_A:',A[1],'_B:',A[2],'_C:',A[3],'_D:',A[4],'_',Char(64+Ans),'_');
repeat
I:=Random(4)+1;
until I<>Ans;
if Ans<I then Write(T,Char(64+Ans),'-',Char(64+I),'_') else
Write(T,Char(64+I),'-',Char(64+ans),'_');
GenZal4(Ans);
Write(T,Z[1],'=',Z[2],'=',Z[3],'=',Z[4],'_');
if Ans<I then GenZal2(1) else GenZal2(2);
K:=1;
for J:=1 to 4 do
begin
if (J=I) or (J=Ans) then
begin
Write(T,Z[K]);
Inc(K);
end else Write(T,0);
if J<4 then Write(T,'=');
end;
Writeln(T);
end;
procedure Process;
var S: string;
begin
Readln(F,Zal4,Zal2);
while not EOF(F) do
begin
Readln(F,S);
if S='---' then NewQ;
end;
end;
begin
Randomize;
if FindFirst('*.svp',faAnyFile,S)<>0 then
begin
Writeln('No files');
Halt;
end;
repeat
Assign(F,S.Name);
Reset(F);
Assign(T,Copy(S.Name,1,Pos('.',S.Name))+'qst');
Rewrite(T);
Process;
Close(F);
close(T);
until FindNext(S)<>0;
end.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment