Подсписок с заданной позиции и заданной длины

Программирование Помощь с решением задач на Prolog Задачи на списки Подсписок с заданной позиции и заданной длины

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 3 мес., 3 нед. назад.

  • Автор
    Сообщения
  • #5409
    @admin

    Чтобы выделить из исходного списка подсписок длины Len, начиная с позиции Pos можно использовать функции append и length, а также удобно использовать функцию divide_list.

    sublist(List, From, To, Sublist, Tail):-
        LeftLength is From - 1,
        Length is To-From,
        divide_list(List, [Left, Sublist, Right]),
        length(Left, LeftLength),
        length(Sublist, Length),
        append(Left, Right, Tail).

    В данном случае, с помощью divide_list исходный список делится на три части всеми возможными способами. Функция length «пропустит» только те варианты разбиения где подсписки имеют заданную длину. Затем, чтобы вернуть не только «вырезанную часть» списка, но и остальные элементы — левая и правая часть соединяются с помощью append.

Для ответа в этой теме необходимо авторизоваться.