В предложении выделить группу самых коротких слов - Prolog
Формулировка задачи:
В предложении выделить группу самых коротких слов. Вывести на экран слова, начинающиеся и заканчивающиеся на одну и ту же букву.
Листинг программы
- %trace
- domains
- s=string i=integer
- predicates
- zam(i,s,s)
- clauses
- zam(_,S,R):-
- fronttoken(S,T,S1),
- str_len(T,D), DD=D-1,
- frontstr(DD,T,_,K),
- frontstr(1,T,Y,_),
- K<>Y,
- zam(1,S1,R1),
- concat(T,R1,RR),
- concat(" ",RR,R).
- zam(0,"",""):- write("Now!").
- zam(1,"S","N"):- write("\n Yes \n").
- zam(F,S,R):-
- fronttoken(S,T,S1),
- zam(F,S1,R1),
- concat(T,R1,RR),
- concat(" ",RR,R).
- goal
- clearwindow,
- S="area yoy Losing my insanity",
- zam(0,S,N), write("\n Begin: \n",S),
- write("\n End: \n",N)
Не могу понять что не так
Решение задачи: «В предложении выделить группу самых коротких слов»
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).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д