function TForm1.AI(word: string): string;
var
i: integer;
k,p:integer;
slovo: string;
variants: TStringList;
begin
word:=AnsiLowerCase(copy(word,1,50));
for i:=0 to mozg.Count-1 do
begin
p:=0;
if copy(mozg.Strings[i],1,3)='<Q>' then
begin
for k:=1 to length(mozg.Strings[i]) do if mozg.Strings[i][k]='<' then inc(p);
slovo:=mozg.Strings[i];
if p>1 then
begin
for p:=p downto 2 do
begin
delete(slovo,1,3);
if FindCompare.IndistinctMatching(4,word,copy(slovo,1,pos('<Q>',slovo)-1))>=80 then
begin
variants:=TStringList.Create;
for k:=i+1 to mozg.Count-1 do
if copy(mozg.Strings[k],1,3)='<A>' then variants.Add(copy(mozg.Strings[k],4,length(mozg.Strings[k]))) else break;
result:=variants.strings[random(variants.Count)];
variants.free;
exit;
end;
slovo:=copy(slovo,pos('<Q>',slovo)+1,length(slovo));
end;
delete(slovo,1,2);
if FindCompare.IndistinctMatching(4,word,slovo)>=80 then
begin
variants:=TStringList.Create;
for k:=i+1 to mozg.Count-1 do
if copy(mozg.Strings[k],1,3)='<A>' then variants.Add(copy(mozg.Strings[k],4,length(mozg.Strings[k]))) else break;
result:=variants.strings[random(variants.Count)];
variants.free;
exit;
end;
end
else
begin
slovo:=copy(slovo,4,length(slovo));
if FindCompare.IndistinctMatching(4,word,slovo)>=80 then
begin
variants:=TStringList.Create;
for k:=i+1 to mozg.Count-1 do
if copy(mozg.Strings[k],1,3)='<A>' then variants.Add(copy(mozg.Strings[k],4,length(mozg.Strings[k]))) else break;
result:=variants.strings[random(variants.Count)];
variants.free;
exit;
end;
end;
end;
end;
for i:=0 to mozg.Count-1 do
begin
p:=0;
if copy(mozg.Strings[i],1,3)='<Q>' then
begin
for k:=1 to length(mozg.Strings[i]) do if mozg.Strings[i][k]='<' then inc(p);
slovo:=mozg.Strings[i];
if p>1 then
begin
for p:=p downto 2 do
begin
delete(slovo,1,3);
if FindCompare.IndistinctMatching(4,word,copy(slovo,1,pos('<Q>',slovo)-1))>=40 then
begin
variants:=TStringList.Create;
for k:=i+1 to mozg.Count-1 do
if copy(mozg.Strings[k],1,3)='<A>' then variants.Add(copy(mozg.Strings[k],4,length(mozg.Strings[k]))) else break;
result:=variants.strings[random(variants.Count)];
variants.free;
exit;
end;
slovo:=copy(slovo,pos('<Q>',slovo)+1,length(slovo));
end;
delete(slovo,1,2);
if FindCompare.IndistinctMatching(4,word,slovo)>=40 then
begin
variants:=TStringList.Create;
for k:=i+1 to mozg.Count-1 do
if copy(mozg.Strings[k],1,3)='<A>' then variants.Add(copy(mozg.Strings[k],4,length(mozg.Strings[k]))) else break;
result:=variants.strings[random(variants.Count)];
variants.free;
exit;
end;
end
else
begin
slovo:=copy(slovo,4,length(slovo));
if FindCompare.IndistinctMatching(4,word,slovo)>=40 then
begin
variants:=TStringList.Create;
for k:=i+1 to mozg.Count-1 do
if copy(mozg.Strings[k],1,3)='<A>' then variants.Add(copy(mozg.Strings[k],4,length(mozg.Strings[k]))) else break;
result:=variants.strings[random(variants.Count)];
variants.free;
exit;
end;
end;
end;
end;
result:=rand.Strings[random(rand.count)];
end;