Ek 'yanlış' sorgu sonunda

oy
0

Temelde yeni bir yüklem benim tanımlardan neden birini merak ediyorum g'? -' diğer tanım düz geri atlar ise, bir 'yanlış' nereye biten benim sorguda sonuçları.

Böyle bir veri tabanını göz önüne alındığında:

f(a,b).
f(b,c).
f(c,d).

Ben geçişli kapatılması çeşit temsil eden yeni bir yüklemi üretmek isteyen faynı zamanda eleman nasıl oluşturulduğuna bir listesini içermelidir o eklenmesiyle. Yani ben bir istiyorum gböyle ?- g(X,Y,Z).bu üretecek:

g(a,c,[f(a,b),f(b,c)]).
g(b,d,[f(b,c),f(c,d)]).
g(a,d,[f(a,b),f(b,c),f(c,d)])

Ben bir yardımcı birleştirme yüklemi tanıtmak:

con([],L,L).
con([X|L1],L2,[X|C]):-con(L1,L2,C).

Sonra bir çözüme benim girişimi olacaktır:

g(X,Z,[f(X,Y),f(Y,Z)]):-f(X,Y),f(Y,Z).
g(X,Z,C):-f(Y,Z),g(X,Y,L),con(L,[f(Y,Z)],C).

Doğru çıkış üretilirken, ucunda bir ek false.basılır:

?-g(X,Y,Z).
X = a,
Y = c,
Z = [f(a, b), f(b, c)] ;
X = b,
Y = d,
Z = [f(b, c), f(c, d)] ;
X = a,
Y = d,
Z = [f(a, b), f(b, c), f(c, d)] ;
false.

Böyle basit bir tanım ise:

g(X,Y):-f(X,Y).

üretir

g(a,b).
g(b,c).
g(c,d).

'False' olmadan.

Bu benim program bir hata var anlamına mı geliyor? Eğer evet ise, bu nedir?

Oluştur 07/11/2018 saat 23:41
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

Ek 'yanlış' sorgu sonunda

oy
0

Temelde yeni bir yüklem benim tanımlardan neden birini merak ediyorum g'? -' diğer tanım düz geri atlar ise, bir 'yanlış' nereye biten benim sorguda sonuçları.

Böyle bir veri tabanını göz önüne alındığında:

f(a,b).
f(b,c).
f(c,d).

Ben geçişli kapatılması çeşit temsil eden yeni bir yüklemi üretmek isteyen faynı zamanda eleman nasıl oluşturulduğuna bir listesini içermelidir o eklenmesiyle. Yani ben bir istiyorum gböyle ?- g(X,Y,Z).bu üretecek:

g(a,c,[f(a,b),f(b,c)]).
g(b,d,[f(b,c),f(c,d)]).
g(a,d,[f(a,b),f(b,c),f(c,d)])

Ben bir yardımcı birleştirme yüklemi tanıtmak:

con([],L,L).
con([X|L1],L2,[X|C]):-con(L1,L2,C).

Sonra bir çözüme benim girişimi olacaktır:

g(X,Z,[f(X,Y),f(Y,Z)]):-f(X,Y),f(Y,Z).
g(X,Z,C):-f(Y,Z),g(X,Y,L),con(L,[f(Y,Z)],C).

Doğru çıkış üretilirken, ucunda bir ek false.basılır:

?-g(X,Y,Z).
X = a,
Y = c,
Z = [f(a, b), f(b, c)] ;
X = b,
Y = d,
Z = [f(b, c), f(c, d)] ;
X = a,
Y = d,
Z = [f(a, b), f(b, c), f(c, d)] ;
false.

Böyle basit bir tanım ise:

g(X,Y):-f(X,Y).

üretir

g(a,b).
g(b,c).
g(c,d).

'False' olmadan.

Bu benim program bir hata var anlamına mı geliyor? Eğer evet ise, bu nedir?

Cevap 07/11/2018 saat 23:41
kaynak kullanıcı

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