2017-04-24 17 views
1

答案我有這樣的代碼:PROLOG只選擇一個的多種可能性

op:- 
    keyword(a), 
    write('Answer A'), nl. 
op:- 
    keyword(a), 
    keyword(b), 
    write('Answer A and B'), nl. 
op:- 
    keyword(a), 
    keyword(b), 
    keyword(c) 
    write('Answer A, B and C'), nl. 

關鍵詞提供詳細到了必須使用的答案,問題是。我希望答案儘可能具體,只提供一個。在這種情況下,如果我有兩個關鍵字a,b和c,我會得到:

答案A.

答案A和B.

答案A,B和C

但是,我還想得到的是剛:

答案A,B和C

¿如何是實現這一目標的正確方法是什麼?

+0

找到一個解決辦法: 「」 使用並從更多的消息靈通人員訂購。 – AbianG

回答

-1

正確的方法是添加不適用的條件否定:IF-THEN-ELSE

op :- 
    keyword(a), 
    not keyword(b), 
    not keyword(c), 
    write('Answer A'), nl. 
op :- 
    keyword(a), 
    keyword(b), 
    not keyword(c), 
    write('Answer A and B'), nl. 
op :- 
    keyword(a), 
    keyword(b), 
    keyword(c) 
    write('Answer A, B and C'), nl. 

,或者您可以使用:

op :- 
    keyword(a), 
    (keyword(b) -> 
    (keyword(c) -> 
     write('Answer A, B and C'), nl 
    ; write('Answer A and B'), nl) 
    ; write('Answer A'), nl).