簡體   English   中英

如何在 Clips 中創建可分規則?

[英]How to create rules of divisibility in Clips?

我是 Clips Expert System 的新手,我想知道你們中的一些人是否可以幫助實施數字 7、11 和 13 的整除規則。

這是我用於 2 的整除,但我不能對 7、11 和 13 做同樣的事情

;Facts for divisibility of 2
(deffacts lastnumbers 
(firstnum 0)
(secondnum 2)
(thirdnum 4)
(fourthnum 6)
(fifth 8))

我試圖像這樣出去:

Number 886782 is divisible by 13

提前致謝。

通常,僅查看被除數的最后一位數字,您無法確定一個數字是否可以被另一個數字整除。 而是查看 integer 除法的其余部分,如果它為零,則除數可以被除數整除。

         CLIPS (6.31 6/12/19)
CLIPS>    
(defrule get-dividend
   (not (dividend ?))
   =>
   (printout t "Dividend? ")
   (assert (dividend (read))))
CLIPS> 
(defrule get-divisor
   (dividend ?dividend&:(integerp ?dividend))
   (not (divisor ?))
   =>
   (printout t "Divisor? ")
   (assert (divisor (read))))
CLIPS> 
(defrule bad-response
   (or ?f <- (dividend ?d)
       ?f <- (divisor ?d))
   (test (not (integerp ?d)))
   =>
   (retract ?f))
CLIPS>    
(defrule is-divisible
   (dividend ?dividend&:(integerp ?dividend))
   (divisor ?divisor&:(integerp ?divisor))
   =>
   (printout t "Dividend " ?dividend " is"
               (if (= (mod ?dividend ?divisor) 0)
                  then " "
                  else " not ")
               "divisible by " ?divisor crlf)) 
CLIPS> (reset)
CLIPS> (run)
Dividend? 17
Divisor? 3
Dividend 17 is not divisible by 3
CLIPS> (reset)
CLIPS> (run)
Dividend? 886782
Divisor? 13
Dividend 886782 is divisible by 13
CLIPS> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM