Сортировка слов строки - Prolog
Формулировка задачи:
Помогите написать программу на Прологе, в которой вводится строка, ее слова сортируются по алфавиту и выводится уже обработанная строка.
Решение задачи: «Сортировка слов строки»
textual
Листинг программы
- domains
- stringl=string*
- predicates
- stra(char,string)
- words(string,string,stringl)
- split(stringl,string,stringl,stringl)
- app(stringl,stringl,stringl)
- sort(stringl,stringl)
- merge(stringl,string)
- task(string,string)
- clauses
- stra(X,Y) :- frontchar(Y,X,"").
- words("",S,[S]) :- S<>"".
- words("","",[]).
- words(Q,T,[T|R]) :- frontchar(Q,A,B), A=' ', T <> "", words(B,"",R).
- words(Q,T,R) :- frontchar(Q,A,B), A=' ', T = "", words(B,"",R).
- words(Q,T,R) :- frontchar(Q,A,B), A<>' ', stra(A,SA), concat(T,SA,TT) , words(B,TT,R).
- split([],_,[],[]).
- split([H|R],G,[H|R1],R2) :- H<G,split(R,G,R1,R2).
- split([H|R],G,R1,[H|R2]) :- H>=G,split(R,G,R1,R2).
- app([],X,X).
- app([H|R],X,[H|Y]) :- app(R,X,Y).
- sort([],[]).
- sort([H|R],Z) :- split(R,H,R1,R2), sort(R1,S1), sort(R2,S2), app(S1,[H],Q), app(Q,S2,Z).
- merge([],"").
- merge([H|R],Z):- merge(R,Z1), concat(" ",Z1,Z2), concat(H,Z2,Z).
- task(X,R) :- words(X,"",W),sort(W,WS), merge(WS,R).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д