Предикат, записывающий каждый третий элемент списка в новый список - Prolog
Формулировка задачи:
Здравствуйте. Прошу помочь с написанием придиката, который будет записывать каждый третий элемент в новый список. Пишу в visual prolog 7.5. Собственными силами получила следующий код, но увы он не работает. Помогите исправить
Листинг программы
- % Copyright
- implement main
- open core, console, string
- class predicates
- copy_th: (integer*, integer, integer*) nondeterm anyflow.
- clauses
- copy_th([],_,[]).
- copy_th([H|T], Pos, Res):- Pos mod 3 = 0, copy_th(T, Pos+1, Res1), Res1 = [H|Res].
- copy_th([H|T], Pos, Res):- Pos mod 3 <>0, copy_th(T, Pos+1, Res).
- clauses
- run() :-
- init(),
- L = [1, 2, 3, 4, 5, 6, 7, 8, 9],
- %M = [],
- copy_th(L, 0, Res),
- write(L), nl,
- write(Res), nl,
- _=readLine(),*!;
- _=readLine().
- end implement main
- goal
- console::run(main::run).
Решение задачи: «Предикат, записывающий каждый третий элемент списка в новый список»
textual
Листинг программы
- copy_th([H|T], Pos, [H|Res]):- Pos mod 3 = 0, copy_th(T, Pos+1, Res).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д