Выделить подсписок из списка, начиная с 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д