Вставка элемента в список по порядковому номеру на Прологе


Добавил:DMT
Дата создания:6 января 2008, 13:53
Дата обновления:6 января 2008, 13:58
Просмотров:4632 последний сегодня, 1:15
Комментариев: 0

Вставка элемента в список по порядковому номеру.

Код на Lisp
  1.  
  2. predicates
  3. nondeterm ins(slist,slist,slist,integer,string,integer)
  4. revers(slist, slist, slist)
  5. /*
  6. 1- Исходный список
  7. 2- Вспомогательный список, при вызове пустой
  8. 3- Результирующий список
  9. 4- Номер элемента после которого вставить элемент
  10. 5- Элемент который вставляется
  11. 6- Начальное значение счётчика
  12. */
  13.  
  14. clauses
  15. revers([], L, L).
  16. revers([X|L1], L2, ResultNew):-revers(L1, [X|L2],ResultNew).
  17.  
  18. ins(L,L1,L2,Num,El,Num):-N=Num+1,ins(L,[El|L1],L2,Num,El,N).
  19. ins([],L1,L2,Num,_,N):-Num<N,revers(L1,[],L2).
  20. ins([],_,[],_,_,_):-
  21. write("В списке гораздо меньше элементов!,
  22. Количество элементов в списке не соответствует порядковому номеру").
  23. ins([X|L], L1, L2,Num, El, N):-N1=N+1,ins(L,[X|L1],L2,Num,El,N1).
  24.  
  25. goal
  26. ins(["0","1","3","4","5","6","7"],[],Res_list,2,"added 2",0).
  27.  
При использовании обязательна ссылка на http://DMTSoft.ru
up