2012-05-02 12 views
0

のは、私はこのようなルールを持っているとしましょう:クリップ複数と

(defrule get_next_N_poz 
    ?id <- (get_next_poz $?) 
    (world (limit $?) (ball ?b1 ?b2) (men $? ?x ?y - $?) (id ?)) 

    (and 
    (test (= ?x ?b1)) 
    (test (= ?y (- ?b2 1)))) 
     => 
     (printout t "north ready position:" ?x ?y) 
     (modify ?id (get_next_poz 1))) 

は、どのように私は新しいの追加「と」ん? ありがとうございます。

答えて

0

これは実装しようとしているロジックによって異なります。あなたが持っている既存のはとにかく冗長ですが、二番目のを望んでいた場合、あなただけの最後の終了後にそれを追加したい:

(and 
    (test (= ?x ?b1)) 
    (test (= ?y (- ?b2 1)))) 

(and 
    (test (= ?x ?b2)) 
    (test (= ?y (+ ?b1 1)))) 

あなたがこれらの条件のいずれか、または他にあなたが望んでいた場合「がこれを行うd次の

(test (or (and (= ?x ?b1) 
       (= ?y (- ?b2 1))) 
      (and (= ?x ?b2) 
       (= ?y (+ ?b1 1))))) 

(or (and 
     (test (= ?x ?b1)) 
     (test (= ?y (- ?b2 1)))) 

    (and 
     (test (= ?x ?b2)) 
     (test (= ?y (+ ?b1 1))))) 

むしろおよび/または条件要素を使用するよりも、あなたは、単一のテスト条件要素内および/またはブール関数を使用することができます

関連する問題