使用少于CLIPS程序

时间:2012-11-21 17:38:40

标签: clips

如果用户输入某个范围内的值,我会尝试返回一条消息。这可能在CLIPS上有用吗?此外,系统应仅接受以10为增量的值。

If the user types in a number less or equal to 10 it should say "A"
If the user types in a number greater than 10 and less than 40 it should say "B" 
- so it should only accept values 10,20,30,40

这是我到目前为止的代码:

(defrule b-a1
(b-a "a")
=>
(bind ?reply (get-text-from-user "How many points did you achieve?"))
(assert (b-a1 ?reply )))

(defrule b-a2
(b-a1 <= 10)
=>
(assert (conclusion "A")))

(defrule b-a2
(10 < b-a1 < 40)
=>
(assert (conclusion "B")))

关于如何让这个工作的任何想法?

1 个答案:

答案 0 :(得分:1)

CLIPS> 
(defrule b-a1
   (b-a "a")
   =>
   (printout t "How many points did you achieve? ")
   (bind ?reply (read))
   (assert (b-a1 ?reply )))
CLIPS> 
(defrule b-a2
   (b-a1 ?v&:(<= ?v 10))
   =>
   (assert (conclusion "A")))
CLIPS> 
(defrule b-a2
   (b-a1 ?v&:(< 10 ?v)&:(< ?v 40))
   =>
   (assert (conclusion "B")))
CLIPS> (assert (b-a "a"))
<Fact-1>
CLIPS> (run)
How many points did you achieve? 24
CLIPS> (facts)
f-0     (initial-fact)
f-1     (b-a "a")
f-2     (b-a1 24)
f-3     (conclusion "B")
For a total of 4 facts.
CLIPS>