Вырезать из списка подсписок - Prolog

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

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

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

Решение задачи: «Вырезать из списка подсписок»

textual
Листинг программы
  1. delete([], _, _, []).
  2. delete([_|Tail], N, M, ResultTail):-
  3.    delete(Tail, N, M, ResultTail), N==1, M==0.
  4. delete([Head|Tail], N, M, [Head|ResultTail]):- M1 is M-1,
  5.    delete(Tail, N, M1, ResultTail), N==1, M>0.
  6. delete([_|Tail], N, M, ResultTail):- N1 is N-1, M1 is M-1,
  7.    delete(Tail, N1, M1, ResultTail), N>1.

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


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

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

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

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

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

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