nasıl bir liste halinde eşleştirme elemanlarının endeksi koyarım?

oy
0

Sadece prolog öğrenmeye başladı ve yeni listeye, ben bir başlangıç ​​listeden girişine eşleşen elemanların endeksi çalışıyorum bu soruna rastladı. Örneğin, Y = bir listesini [[a] [b], [c], [d] [a, a] [b, b] [c]], ve çalışıyorum bulmak X oluşumu = [c] ve [c] yeni bir liste halinde, bir dizin koydu.

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

My K, sadece N = 2 Ama çıkış K = [3,7] olmak istiyorum olayların sayısını gösterir. Herhangi bir yardım takdir edilmektedir. Teşekkürler!

Oluştur 10/10/2019 saat 00:43
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
0

Her şeyden önce, sırayla size yüklem içine başka bir değişken gerekir Sonucu listeler olması.

Öncelikle sana çözüm göstereyim:

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

Şimdi bunu gibi çağırmalıdır:

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

ve aşağıdaki sonuç elde edecektir:

R = [3, 7]

Sana Çözümü anlamak umuyoruz. Bu akım indeksi saklayan Nve geri koyar Rgeçerli öğe aradığınız biri varsa.

Cevap 10/10/2019 saat 15:15
kaynak kullanıcı

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