
[英](Python NegaMax Algorithm for Game of Nim) What is wrong with my code?
[英]What is bad in my CLIPS code - or/and varying or else-if grammatic?
这是我将与 Java 代码连接的 CLIPS 代码。 当我试图在 WinCLIPS 中加载时,它被写为 FALSE。
我认为问题可能出在 or/and 或 if-else 语法上。
(deftemplate diagnoza
(slot wiek)
(slot klasa)
)
(deftemplate result
(slot value)
)
(defrule wiek-klasa-rule
(diagnoza (wiek ?w))
(diagnoza (klasa ?g))
=>
(if (and (< ?w 19)(> ?g 4)))
then
(bind ?x "Wiek szkolny - ok.")
(printout t ?x crlf)
(assert (result (value ?x)))
(if (< ?w 4))
then
(bind ?x "Wiek poniżej 4 lat. Nie można zdiagnozować.")
(printout t ?x crlf)
(assert (result (value ?x)))
(if (> ?w 19))
then
(bind ?x "Wiek powyżej 19 lat. Nie można zdiagnozować.")
(printout t ?x crlf)
(assert (result (value ?x)))
else
(bind ?w "Nieprawidłowa wartość wieku. Nie można zdiagnozować.")
(printout t ?x crlf)
(assert (result (value ?x)))
)
)
你的括号不平衡。 如果你缩进你的代码以反映嵌套的深度,你可以看到你在哪里犯了错误:
(defrule wiek-klasa-rule
(diagnoza (wiek ?w))
(diagnoza (klasa ?g))
=>
(if (and (< ?w 19)
(> ?g 4)
)
)
then
(bind ?x "Wiek szkolny - ok.")
(printout t ?x crlf)
(assert (result (value ?x)
)
)
(if (< ?w 4)
)
then
(bind ?x "Wiek poniżej 4 lat. Nie można zdiagnozować.")
(printout t ?x crlf)
(assert (result (value ?x)
)
)
(if (> ?w 19)
)
then
(bind ?x "Wiek powyżej 19 lat. Nie można zdiagnozować.")
(printout t ?x crlf)
(assert (result (value ?x)))
else
(bind ?w "Nieprawidłowa wartość wieku. Nie można zdiagnozować.")
(printout t ?x crlf)
(assert (result (value ?x)))
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.