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

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

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

Здравствуйте. Прошу помочь с написанием придиката, который будет записывать каждый третий элемент в новый список. Пишу в visual prolog 7.5. Собственными силами получила следующий код, но увы он не работает. Помогите исправить
Листинг программы
  1. % Copyright
  2. implement main
  3. open core, console, string
  4. class predicates
  5. copy_th: (integer*, integer, integer*) nondeterm anyflow.
  6. clauses
  7. copy_th([],_,[]).
  8. copy_th([H|T], Pos, Res):- Pos mod 3 = 0, copy_th(T, Pos+1, Res1), Res1 = [H|Res].
  9. copy_th([H|T], Pos, Res):- Pos mod 3 <>0, copy_th(T, Pos+1, Res).
  10. clauses
  11. run() :-
  12. init(),
  13. L = [1, 2, 3, 4, 5, 6, 7, 8, 9],
  14. %M = [],
  15. copy_th(L, 0, Res),
  16. write(L), nl,
  17. write(Res), nl,
  18. _=readLine(),*!;
  19. _=readLine().
  20. end implement main
  21. goal
  22. console::run(main::run).

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

textual
Листинг программы
  1. copy_th([H|T], Pos, [H|Res]):- Pos mod 3 = 0, copy_th(T, Pos+1, Res).

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


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

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

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

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

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

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