Сортировка слов строки - Prolog

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

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

Помогите написать программу на Прологе, в которой вводится строка, ее слова сортируются по алфавиту и выводится уже обработанная строка.

Решение задачи: «Сортировка слов строки»

textual
Листинг программы
  1. domains
  2. stringl=string*
  3.  
  4. predicates
  5. stra(char,string)
  6. words(string,string,stringl)
  7. split(stringl,string,stringl,stringl)
  8. app(stringl,stringl,stringl)
  9. sort(stringl,stringl)
  10. merge(stringl,string)
  11. task(string,string)
  12.  
  13. clauses
  14.  
  15. stra(X,Y) :- frontchar(Y,X,"").
  16.  
  17. words("",S,[S])  :- S<>"".
  18. words("","",[]).
  19. words(Q,T,[T|R]) :- frontchar(Q,A,B), A=' ', T <> "", words(B,"",R).
  20. words(Q,T,R)     :- frontchar(Q,A,B), A=' ', T =  "", words(B,"",R).
  21. words(Q,T,R)     :- frontchar(Q,A,B), A<>' ', stra(A,SA), concat(T,SA,TT) , words(B,TT,R).
  22.  
  23. split([],_,[],[]).
  24. split([H|R],G,[H|R1],R2) :- H<G,split(R,G,R1,R2).
  25. split([H|R],G,R1,[H|R2]) :- H>=G,split(R,G,R1,R2).
  26.  
  27. app([],X,X).
  28. app([H|R],X,[H|Y]) :- app(R,X,Y).
  29.  
  30. sort([],[]).
  31. sort([H|R],Z) :- split(R,H,R1,R2), sort(R1,S1), sort(R2,S2), app(S1,[H],Q), app(Q,S2,Z).
  32.  
  33. merge([],"").
  34. merge([H|R],Z):- merge(R,Z1), concat(" ",Z1,Z2), concat(H,Z2,Z).
  35.  
  36. task(X,R) :- words(X,"",W),sort(W,WS), merge(WS,R).

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


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

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

8   голосов , оценка 3.375 из 5

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

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

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