Предикат, заменяющий два подряд идущих одинаковых элемента одним - Prolog

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

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

помогите решить задачу "Создайте предикат, заменяющий в исходном списке два подряд идущих одинаковых элемента одним."

Решение задачи: «Предикат, заменяющий два подряд идущих одинаковых элемента одним»

textual
Листинг программы
  1. domains    
  2.     element=integer
  3.     list=element*
  4. predicates
  5.     input(list)
  6.     output(list)
  7.     shift(list,list)              /*сдвиг вправо*/
  8.     getlast(list,element,element) /*получение последнего элемента*/
  9.     deletelast(list,list)         /*удаление последнего элемента*/
  10.     parLen(list)                  /*четность длины списка*/
  11.     chArPL(list,integer)          /*проверка на арифметическую прогрессию списка*/  
  12.     getLenList(list,integer)      /*определение длины списка*/
  13.     chpel(list,list)                /*замена двух идущих подряд символов - одним */
  14.  
  15.     %start
  16. clauses            
  17.  
  18.     input([X|T]):-
  19.         write("ввести элемент - y/n: "),
  20.         readchar(YN),nl,
  21.         YN<>'n',    
  22.         write("Введи элемент: "),
  23.         readInt(X),nl,
  24.         input(T).  
  25.     input([]):-
  26.         write("ввод закончен"),nl.
  27.  
  28.     output([]).
  29.     output([H|T]):-
  30.         write(H),write(" "),
  31.         output(T).  
  32.  
  33.     shift([],[]).
  34.     shift([H|T],[E|L]):-
  35.         getlast([H|T],_,E),
  36.         deletelast([H|T],L).
  37.     getlast([],E,E).
  38.     getlast([H|T],_,E):-
  39.         getlast(T,H,E).  
  40.     deletelast([_|[]],[]).
  41.     deletelast([H|T1],[H|T2]):-
  42.         deletelast(T1,T2).  
  43.    
  44.     parLen([]).
  45.     parLen([_,_|Tail]):-parLen(Tail).
  46.    
  47.     chArPL([_|[]],_).
  48.     chArPL([H,T|TT],N):-
  49.         N=T-H,
  50.         chArPL([T|TT],N).
  51.              
  52.     getLenList([],N):-N=0.
  53.     getLenList([_|L],N):-
  54.         getLenList(L,N1),
  55.         N=N1+1.
  56.        
  57.     chpel([],_).
  58.     chpel([Hi|[Hii|Tii]],[Ho|To]):-
  59.         Hi=Hii, Ho=Hi, chpel([Hi|Tii],[Ho|To]).
  60.     chpel([Hi|Ti],[Hi|To]):-
  61.         chpel(Ti,To).
  62.    
  63.        
  64. goal
  65.        L=[1,1,2,3,4,4,5,6,6],    
  66.        output(L),nl,
  67.        chpel(L,L1),
  68.        output(L1),nl.

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


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

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

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

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

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

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