hogyan tegyem az index a megfelelő elemek egy listát?

szavazat
0

Én csak most kezdtem tanulni prolog, és jött át ez a probléma, ahol igyekszem bemenet az index megfelelő elemeket a kezdeti lista, hogy egy új listát. Például, van egy lista Y = [[a], [b], [c], [d], [a, a], [b, b], [c]], és én próbál találni az esemény a X = [c], és tegye az index, ahol [c] van, egy új listát.

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

Saját N csak azt mutatja, az előfordulások számát, amelyek N = 2. De szeretnék a kimenet legyen N = [3,7]. Minden segítséget értékelik. Kösz!

A kérdést 10/10/2019 00:43
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
0

Először is, annak érdekében, hogy megtalálja a Eredmény szüksége lesz egy másik változót be állítmány.

Először is hadd mutassam meg a megoldást:

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).

Most meg kell hívni úgy, mint:

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

és akkor kap a következő eredménnyel:

R = [3, 7]

Remélem, megérti a megoldás. Ez tárolja az aktuális index N, és hozza vissza R, ha az aktuális elem az, amit keres.

Válaszolt 10/10/2019 15:15
a forrás felhasználó

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