Вырезать из списка подсписок - Prolog
Формулировка задачи:
Здравствуйте. Имеется следующее задание:
Я пытался сделать что-то в таком духе:
То есть последовательно уменьшать N и M, что бы понимать когда вырезать, а когда нет. Но что-то у меня не работает код. Выдает false.
Дан список и числа N и M. Вырезать из списка подсписок от элемента N до элемента M: 2 4 [1,2,3,4,5,6,7] —> [2,3,4]
Листинг программы
- del_el(_, _, [], []).
- del_el(N, M, [Head | Tail], [Head | Rez]) :- N==1, M>0, M1=M-1,
- del_el(N, M1, Tail, Rez).
- del_el(N, M, [_ | Tail], Rez) :- N>1, N1=N-1, M1=M-1,
- del_el(N1, M1, Tail, Rez).
- del_el(N, M, [_ | Tail], Rez) :- M==0, N==1,
- del_el(N, M, Tail, Rez).
Решение задачи: «Вырезать из списка подсписок»
textual
Листинг программы
- delete([], _, _, []).
- delete([_|Tail], N, M, ResultTail):-
- delete(Tail, N, M, ResultTail), N==1, M==0.
- delete([Head|Tail], N, M, [Head|ResultTail]):- M1 is M-1,
- delete(Tail, N, M1, ResultTail), N==1, M>0.
- delete([_|Tail], N, M, ResultTail):- N1 is N-1, M1 is M-1,
- delete(Tail, N1, M1, ResultTail), N>1.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д