Вставка элемента на заданную позицию в список, TurboProlog

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

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

Здравствуйте, помогите пожалуйста,нужно вставить элемент на заданную позицию в список, вот мой код:
Листинг программы
  1. domains
  2. list=integer*
  3. predicates
  4. main(list,integer,integer,list)
  5. cons(list,list,list)
  6. ins(integer,list,integer,integer,list)
  7. clauses
  8. cons([],L,L).
  9. cons([H|T],L,[H|Z]):-cons(T,L,Z).
  10. ins(N1,[H|T],N,A,[H|LST]):-N1<>N,ins(N1,T,N,A,LST).
  11. ins(N1,[H|T],N,A,[A|LST]):-N1=N1+1,!,ins(N1,T,N,A,LST).
  12. ins(_,[],_,_,[]).
  13. main(X,N,A,LST):-ins(0,X,N,A,LST).

Решение задачи: «Вставка элемента на заданную позицию в список, TurboProlog»

textual
Листинг программы
  1. domains
  2. int=integer
  3. intl=int*
  4.  
  5. predicates
  6. ins_in_pos(intl,int,int,intl)
  7.  
  8. clauses
  9. ins_in_pos(L,V,0,[V|L]).
  10. ins_in_pos([H|T],V,N,[H|R]) :- N1=N-1, ins_in_pos(T,V,N1,R).

Объяснение кода листинга программы

Код выполняет вставку элемента в список на заданную позицию. Список представлен как intl (int list), элемент для вставки — V, позиция для вставки — N. В коде определены два предиката:

  1. ins_in_pos(intl,int,int,intl) — выполняет вставку элемента в список на заданную позицию
  2. clauses — определяет правила для работы с предикатом ins_in_pos В первом правиле (инструкции) для списка, содержащего один элемент (L = [H|T]), элемент V вставляется на позицию N в список L, и результатом является новый список [V|L]. Во втором правиле (инструкции) для списка, содержащего более одного элемента (L = [H|T]), элемент V вставляется на позицию N в список T, и результатом является новый список [H|R]. Здесь N1 = N — 1, поскольку позиция для вставки в списке T будет на единицу меньше, чем в исходном списке L.

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


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

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

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

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

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

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