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
;