Замена двойных пробелов на одиночные - Prolog
Формулировка задачи:
Написать программу, считывающую произвольные предложения и выводящую их в форматированном виде, в котором все группы идущих подряд пробелов заменены на одиночные пробелы.
Решение задачи: «Замена двойных пробелов на одиночные»
textual
Листинг программы
domains str=string strl=str* int=integer predicates instr(str,char,int,int) headstr(str,int,str) tailstr(str,int,str) split(str,strl) join(strl,str) clauses instr("",_,_,0). instr(S,C,N,N1) :- frontchar(S,C,_), N1=N+1, !. instr(S,C,N,K) :- frontchar(S,_,RS), N1=N+1, instr(RS,C,N1,K). headstr(_,0,""). headstr(S,L,R) :- frontchar(S,B,RS), L1=L-1, headstr(RS,L1,RR), frontchar(R,B,RR). tailstr(S,0,S). tailstr(S,N,Q) :- frontchar(S,_,RS), N1=N-1, tailstr(RS,N1,Q). split("",[]). split(S,[S]) :- instr(S,' ',0,K), K=0,!. split(S,[H|T]) :- instr(S,' ',0,K), K>1, K1=K-1, headstr(S,K1,H), tailstr(S,K,RS), split(RS,T). split(S,Q) :- frontchar(S,' ',RS), split(RS,Q). join([],""). join([H|T],R) :- join(T,RR), concat(H," ",H1), concat(H1,RR,R). goal split(" To be or not to be ",L),join(L,R),write(R),nl.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д