В предложении выделить группу самых коротких слов - Prolog

Узнай цену своей работы

Формулировка задачи:

В предложении выделить группу самых коротких слов. Вывести на экран слова, начинающиеся и заканчивающиеся на одну и ту же букву.
Листинг программы
  1. %trace
  2. domains
  3. s=string i=integer
  4. predicates
  5. zam(i,s,s)
  6. clauses
  7. zam(_,S,R):-
  8. fronttoken(S,T,S1),
  9. str_len(T,D), DD=D-1,
  10. frontstr(DD,T,_,K),
  11. frontstr(1,T,Y,_),
  12. K<>Y,
  13. zam(1,S1,R1),
  14. concat(T,R1,RR),
  15. concat(" ",RR,R).
  16. zam(0,"",""):- write("Now!").
  17. zam(1,"S","N"):- write("\n Yes \n").
  18. zam(F,S,R):-
  19. fronttoken(S,T,S1),
  20. zam(F,S1,R1),
  21. concat(T,R1,RR),
  22. concat(" ",RR,R).
  23. goal
  24. clearwindow,
  25. S="area yoy Losing my insanity",
  26. zam(0,S,N), write("\n Begin: \n",S),
  27. write("\n End: \n",N)
Не могу понять что не так

Решение задачи: «В предложении выделить группу самых коротких слов»

textual
Листинг программы
  1. %trace
  2. domains
  3.     s=string i=integer
  4. predicates
  5.     law(string,string)
  6.     gtwrd(string,string,string,string)
  7.     longer(string,string)  
  8.     length(string,integer)  
  9.     do(s)
  10.     test(s)
  11. clauses
  12.     do("").
  13.     do(S):-
  14.         fronttoken(S,T,R),
  15.         test(T),
  16.         do(R).
  17.        
  18.     test(T):-        
  19.         str_len(T,L), LL=L-1,  
  20.         frontstr(LL,T,_,Last),    
  21.         frontstr(1,T,First,_),
  22.         First = Last,
  23.         write(T), nl.
  24.     test(_).    
  25.    
  26.     gtwrd(S,W,E,T):-
  27.         frontchar(S,C,S1),
  28.         NOT(C=' '),
  29.         str_char(SS,C),
  30.         concat(W,SS,R),
  31.         gtwrd(S1,R,E,T),!.
  32.     gtwrd(S,W,W,R):-
  33.         frontchar(S,_,R).
  34.     gtwrd(S,W,W,S).
  35.    
  36.      longer(A,B):-
  37.         length(A,LenA),
  38.         length(B,LenB),
  39.         LenA>LenB.
  40.        
  41.         length("",0):-!.
  42.     length(S,N):-
  43.         frontchar(S,_,S1),
  44.         length(S1,N1),
  45.         N=N1+1.
  46.    
  47.        law("",""):-!.
  48.     law(S,W):-      
  49.         gtwrd(S,"",WW,SS),NOT(SS=""),
  50.         law(SS,WWW),
  51.         NOT(longer(WWW,WW)),
  52.         W=WWW.
  53.     law(S,W):-
  54.         gtwrd(S,"",W,_).
  55. goal
  56.     clearwindow,
  57.     S="area yoy Losing my insanity",
  58.     do(S).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы