Como faço para colocar o índice dos elementos correspondentes em uma lista?

votos
0

Eu só comecei prólogo aprendizagem, e me deparei com este problema onde eu estou tentando introduzir o índice de elementos correspondentes de uma lista inicial, a uma nova lista. Por exemplo, eu tenho uma lista de Y = [[a], [b], [c], [d], [a, a], [b, b], [c]], e eu estou tentando encontrar a ocorrência de X = [C], e colocar o índice em que [C] é, em uma nova lista.

find( X, [ X | Y ], N) :-
    find(X, Y, N1), N is N1 +1.
find( X, [ H | Y ], N ) :-
    find( X, Y, N).

Meu N só mostra o número de ocorrências, que N = 2. Mas eu gostaria que a saída seja N = [3,7]. Qualquer ajuda é apreciada. Obrigado!

Publicado 10/10/2019 em 00:43
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Primeiro de tudo, a fim de ter uma lista como resultado você terá uma outra variável em seu predicado.

Primeiro deixe-me mostrar-lhe a solução:

find(_,[],_,[]).
find(X,[X|L],N,[N|R]):-
    N1 is N+1,
    find(X,L,N1,R).
find(X,[_|L],N,R):-
    N1 is N+1,
    find(X,L,N1,R).

Agora você deve chamá-lo assim:

?- find([c],[[a],[b],[c],[d],[a,a],[b,b],[c]],1,R).

e você obterá o seguinte resultado:

R = [3, 7]

Espero que você entenda a solução. Ele armazena o índice atual em Ne coloca-lo de volta Rse o item atual é o que você está procurando.

Respondeu 10/10/2019 em 15:15
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more