В предложении выделить группу самых коротких слов - Prolog
Формулировка задачи:
В предложении выделить группу самых коротких слов. Вывести на экран слова, начинающиеся и заканчивающиеся на одну и ту же букву.
Не могу понять что не так
Решение задачи: «В предложении выделить группу самых коротких слов»
textual
Листинг программы
%trace
domains
s=string i=integer
predicates
law(string,string)
gtwrd(string,string,string,string)
longer(string,string)
length(string,integer)
do(s)
test(s)
clauses
do("").
do(S):-
fronttoken(S,T,R),
test(T),
do(R).
test(T):-
str_len(T,L), LL=L-1,
frontstr(LL,T,_,Last),
frontstr(1,T,First,_),
First = Last,
write(T), nl.
test(_).
gtwrd(S,W,E,T):-
frontchar(S,C,S1),
NOT(C=' '),
str_char(SS,C),
concat(W,SS,R),
gtwrd(S1,R,E,T),!.
gtwrd(S,W,W,R):-
frontchar(S,_,R).
gtwrd(S,W,W,S).
longer(A,B):-
length(A,LenA),
length(B,LenB),
LenA>LenB.
length("",0):-!.
length(S,N):-
frontchar(S,_,S1),
length(S1,N1),
N=N1+1.
law("",""):-!.
law(S,W):-
gtwrd(S,"",WW,SS),NOT(SS=""),
law(SS,WWW),
NOT(longer(WWW,WW)),
W=WWW.
law(S,W):-
gtwrd(S,"",W,_).
goal
clearwindow,
S="area yoy Losing my insanity",
do(S).