【问题标题】:How to create rules of divisibility in Clips?如何在 Clips 中创建可分规则?
【发布时间】:2021-03-19 11:00:40
【问题描述】:

我是 Clips 专家系统的新手,我想知道你们中的一些人是否可以帮助实施数字 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

提前致谢。

【问题讨论】:

    标签: artificial-intelligence clips expert-system


    【解决方案1】:

    一般来说,仅查看被除数的最后一位数字,您无法确定一个数字是否可以被另一个数字整除。而是查看整数除法的余数,如果它为零,则被除数可以被除数整除。

             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> 
    

    【讨论】:

      猜你喜欢
      • 2021-02-05
      • 2017-04-05
      • 1970-01-01
      • 2020-09-16
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多