Вычислить минимальную и максимальную длины слов строки - Prolog

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

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

Ввести строку. Вычислить минимальную и максимальную длины слов строки.

Решение задачи: «Вычислить минимальную и максимальную длины слов строки»

textual
Листинг программы
  1. domains
  2. str=string
  3. strl=str*
  4. int=integer
  5. intl=int*
  6.  
  7. predicates
  8.  
  9. instr(str,char,int,int)
  10. headstr(str,int,str)
  11. tailstr(str,int,str)
  12. split(str,strl)
  13. lens(str,int)
  14. listlen(strl,intl)
  15. maxelt(intl,int,int)
  16. minelt(intl,int,int)
  17. task(str,int,int)
  18.  
  19. clauses
  20.  
  21. instr("",_,_,0).
  22. instr(S,C,N,N1) :- frontchar(S,C,_), N1=N+1, !.
  23. instr(S,C,N,K)  :- frontchar(S,_,RS), N1=N+1, instr(RS,C,N1,K).
  24.  
  25. headstr(_,0,"").
  26. headstr(S,L,R) :- frontchar(S,B,RS), L1=L-1, headstr(RS,L1,RR), frontchar(R,B,RR).
  27.  
  28. tailstr(S,0,S).
  29. tailstr(S,N,Q) :- frontchar(S,_,RS), N1=N-1, tailstr(RS,N1,Q).
  30.  
  31. split("",[]).
  32. split(S,[S])   :- instr(S,' ',0,K), K=0,!.
  33. split(S,[H|T]) :- instr(S,' ',0,K), K>1, K1=K-1, headstr(S,K1,H), tailstr(S,K,RS), split(RS,T).
  34. split(S,Q)     :- frontchar(S,' ',RS), split(RS,Q).
  35.  
  36. lens("",0).
  37. lens(S,L) :- frontchar(S,_,RS), lens(RS,L1), L=L1+1.
  38.  
  39. listlen([],[]).
  40. listlen([S|T],[LS|LT]) :- lens(S,LS), listlen(T,LT).
  41.  
  42. maxelt([],M,M).
  43. maxelt([H|T],X,Q) :- H<=X, maxelt(T,X,Q).
  44. maxelt([H|T],X,Q) :- H >X, maxelt(T,H,Q).
  45.  
  46. minelt([],M,M).
  47. minelt([H|T],X,Q) :- H>=X, minelt(T,X,Q).
  48. minelt([H|T],X,Q) :- H <X, minelt(T,H,Q).
  49.  
  50. task(S,MIN,MAX) :- split(S,LS), listlen(LS,[L|LLS]), minelt(LLS,L,MIN), maxelt(LLS,L,MAX).

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


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

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

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

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

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

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