Вырезать из списка подсписок - 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.

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


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

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

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