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

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

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

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

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

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.

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

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

7   голосов , оценка 3.714 из 5
Похожие ответы