Замена двойных пробелов на одиночные - Prolog

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

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

Написать программу, считывающую произвольные предложения и выводящую их в форматированном виде, в котором все группы идущих подряд пробелов заменены на одиночные пробелы.

Решение задачи: «Замена двойных пробелов на одиночные»

textual
Листинг программы
  1. domains
  2. str=string
  3. strl=str*
  4. int=integer
  5.  
  6. predicates
  7.  
  8. instr(str,char,int,int)
  9. headstr(str,int,str)
  10. tailstr(str,int,str)
  11. split(str,strl)
  12. join(strl,str)
  13.  
  14. clauses
  15.  
  16. instr("",_,_,0).
  17. instr(S,C,N,N1) :- frontchar(S,C,_), N1=N+1, !.
  18. instr(S,C,N,K)  :- frontchar(S,_,RS), N1=N+1, instr(RS,C,N1,K).
  19.  
  20. headstr(_,0,"").
  21. headstr(S,L,R) :- frontchar(S,B,RS), L1=L-1, headstr(RS,L1,RR), frontchar(R,B,RR).
  22.  
  23. tailstr(S,0,S).
  24. tailstr(S,N,Q) :- frontchar(S,_,RS), N1=N-1, tailstr(RS,N1,Q).
  25.  
  26. split("",[]).
  27. split(S,[S])   :- instr(S,' ',0,K), K=0,!.
  28. split(S,[H|T]) :- instr(S,' ',0,K), K>1, K1=K-1, headstr(S,K1,H), tailstr(S,K,RS), split(RS,T).
  29. split(S,Q)     :- frontchar(S,' ',RS), split(RS,Q).
  30.  
  31. join([],"").
  32. join([H|T],R) :- join(T,RR), concat(H," ",H1), concat(H1,RR,R).
  33.  
  34. goal
  35. split("  To be   or not to be ",L),join(L,R),write(R),nl.

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


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

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

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

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

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

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