Выделить подсписок из списка, начиная с K-ого элемента количеством L - Prolog

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

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

Вводятся список и два числа. Первое - номер элемента, с которого начинается выделение и второе - количество элементов. Если элементов меньше, чем L, то тогда выделить все оставшиеся элементы. a) Например, дан список [1,2,3,4,5,6,7,8,9,0] N= 3 L= 5 Тогда ответ : 3,4,5,6,7 б) [1,2,3,4,5,6,7,8,9,0] N= 8 L= 4 Ответ: 8,9,0

Решение задачи: «Выделить подсписок из списка, начиная с K-ого элемента количеством L»

textual
Листинг программы
sublist([], _, _, []).
sublist(_, _, 0, []).
sublist([H|T], 1, K, [H|TS]) :-
    K > 0,
    K1 is K-1,
    sublist(T, 1, K1, TS).
sublist([_|T], N, K, L) :-
    N > 1,
    N1 is N-1,
    sublist(T, N1, K, L).

Объяснение кода листинга программы

Код выделяет подсписок из списка, начиная с K-ого элемента количеством L. Если список пустой или K-ый элемент не достигнут, то возвращается пустой подсписок. Если K-ый элемент достигнут и впереди еще есть элементы, то вызывается рекурсивная функция с уменьшенным на единицу N и уменьшенным на единицу K. Если N больше единицы и впереди еще есть элементы, то вызывается рекурсивная функция с уменьшенным на единицу N и исходным K.

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


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

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

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