Сортировка слов строки - 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).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д