Найти элементы в списке, значение которых совпадает с номерами их позиций - Prolog

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

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

Найти элементы в списке, значение которых совпадает с номерами их позиций в списке. Я практически не знаю, пролога, но нужно на завтра решить задачи, который вокруг этого крутятся. Вот задача которая находит количество таких элементов:
Помогите вместо счетчика, добавлять в переменную значения в виде результирующего массива.

Решение задачи: «Найти элементы в списке, значение которых совпадает с номерами их позиций»

textual
Листинг программы
sootv1(Xs, Ys) :-
    sootv1(Xs, 1, Ys).
    
sootv1([], _, []).
sootv1([Pos | Teil], Pos, [Pos | Rest]) :-
    Pos1 is Pos + 1,
    sootv1(Teil, Pos1, Rest).
sootv1([Head | Teil], Pos, Rest) :-
    Head \= Pos,
    Pos1 is Pos + 1,
    sootv1(Teil, Pos1, Rest).
    
sootv2(Xs, Ys) :-
    sootv2(Xs, 1, Ys).
 
sootv2([], _, []).
sootv2([Pos | Teil], Pos, [Pos | Rest]) :-
    Pos1 is Pos + 1,
    !,
    sootv2(Teil, Pos1, Rest).
sootv2([_ | Teil], Pos, Rest) :-
    Pos1 is Pos + 1,
    sootv2(Teil, Pos1, Rest).

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

Код представляет собой два логических предиката sootv1 и sootv2, которые принимают в качестве входных аргументов список Xs и список Ys. Предикат sootv1 используется для поиска элементов в списке Xs, значение которых совпадает с номерами их позиций в списке Ys. Предикат sootv2 используется для поиска элементов в списке Xs, значение которых не совпадает с номерами их позиций в списке Ys. Вот пример использования кода: ?- sootv1([1, 2, 3, 4], [2, 4, 1, 3]). В этом примере мы ищем элементы в списке [1, 2, 3, 4], значение которых совпадает с номерами их позиций в списке [2, 4, 1, 3]. Ответ будет [2, 4]. ?- sootv2([1, 2, 3, 4], [2, 4, 1, 3]). В этом примере мы ищем элементы в списке [1, 2, 3, 4], значение которых не совпадает с номерами их позиций в списке [2, 4, 1, 3]. Ответ будет [1, 3].

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


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

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

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