Помогите определить язык программирования
Необходим этот код. Понять, на каком языке он написан, так и не смог. Либо он написан с ошибками, либо это вообще не какой-то популярный код. Пробовал Паскаль и Питон, глянул на Руби и Джаву, но там другой синтакс. Про С-подобные вообще молчу, точно не оно.
const Predicate=3000;//Integer.MaxValue;
Xfirst = 0;
var a:=1;
m:=1;
c:=1;
x1:=1;
Xprev:=0;
ReferenceArray:array of Cardinal;
CandidateArray:array of Cardinal;
procedure putSeq2Array(const ReferenceXfirst,ReferenceA:Cardinal;ReferenceC:Cardinal;ReferenceM:Cardinal;arr:array of Cardinal);
var i:Integer;
var myXNew:Integer;
begin
myXNew:=ReferenceXfirst;
for i:=0 to Length(arr)-1 do
begin
arr[i]:=myXNew;
myXNew:=(ReferenceA*myXNew+ReferenceC) mod ReferenceM;
end;
end;
function TryUse(const CandidateXfirst,CandidateA,CandidateC,CandidateM:Cardinal):Boolean;
var i,j:Integer;
begin
if ReferenceArray=nil then begin result:=false; exit; end;
SetLength(CandidateArray,Length(ReferenceArray));
putSeq2Array(CandidateXfirst,CandidateA,CandidateC,CandidateM,CandidateArray);
//CandidateArray и ReferenceArray могут начинаться с неодинаковых элементов
//попробуем найти первый одинаковый элемент, result:=false иначе
result:= false;
for i:=0 to Length(ReferenceArray)-1 do
if CandidateArray[i]=ReferenceArray[0] then
begin
for j:=i to Length(ReferenceArray)-1-i do
if CandidateArray[j]ReferenceArray[j-i] then begin result:=false; exit;end
else result:= true;
end;
//else begin result:=false; exit;end;
end;
procedure TryFind();
var Ci,Mi,Ai,Xprev_i:Integer;
begin
for Ci:=c to Predicate do
for Mi:=m to Predicate do
for Ai:=a to Predicate do
if (Ai*8+Ci) mod Mi = 10 then
begin
if (Ai*18+Ci) mod Mi = 28 then//if (4*Ai+Ci) mod Mi =3 then
begin
if (Ai*28+Ci) mod Mi = 14 then
begin
if (Ai*14+Ci) mod Mi =8 then//if (Ai*Xprev_i+Ci) mod Mi = 1 then writeln('of cause a='+Ai+' ,c='+Ci+' ,m= '+Mi+' ,XPrev='+XPrev_i);
if TryUse(14,Ai,Ci,Mi) then
writeln('a='+Ai+' ,c='+Ci+' ,m= '+Mi);
end;
end;
end;
end;
BEGIN
SetLength(ReferenceArray,51);
putSeq2Array(0,5,2,32,ReferenceArray);
TryFind();
END.