2016-11-22 44 views
1

我有一套規則;Prolog - 分句雙向問題

family(Mother,Father,Children). 

其中兒童是一個列表(例如[ag, bg])。

parent(X,Y) :- 
    family(X,_,_) -> mother(X,Y); father(X,Y). 

有了上面的條款,如果我把父母放進去,它正確地給了我孩子。但是,如果我把孩子放在我不能得到父母。

我也試圖爲Child做一個子句;

child(X,Y) :- 
    mother(A,X), 
    father(B,X), 
    Y=A,B. 

母親和父親工作正常,但我需要兩個變量去Y

有什麼建議嗎?

+0

試試這個父子句:'父(X,Y): - 家庭(X,_,Y),(母親(X,Y);父親( X,Y))。' –

+0

@bob_saginowski我試過但是即使它發現父母都是正確的,它會返回false並且不會將它們打印出來,因爲Y = jb1,Y = rb1。 – JoeBoggs

+0

子句可以被小數化:'child(X,Y): - mother(Y,X);父親(Y,X).' –

回答

2

您可以簡化孩子謂:

child(X,Y) :- mother(Y,X); father(Y,X).