Я новичок в CLIPS, я был бы очень признателен за представление о моей проблеме. Таким образом, у меня есть шаблон, который отображает 3x3 со значениями числительных c, такими как судоку, каждое значение? V имеет свою строку? F1, столбец? C1 и характеристику c, называемую "состояние" типа строки, которая может быть активной или неактивно.
(deftemplate box
(slot row)
(slot column)
(slot value)
(slot state
(allowed-values active inactive)
(default inactive)))
(deffacts initial-values
(box (row 1) (column 1) (value 1))
(box (row 1) (column 2) (value 1))
(box (row 1) (column 3) (value 1))
(box (row 2) (column 1) (value 2))
(box (row 2) (column 2) (value 3))
(box (row 2) (column 3) (value 1))
(box (row 3) (column 1) (value 2))
(box (row 3) (column 2) (value 3))
(box (row 3) (column 3) (value 56)))
Я написал правило, которое проверяет, есть ли значение, которое не повторяется в той же строке ни в одном столбце. Если это условие ИСТИНА, я хочу изменить статус на активный, потому что по умолчанию все значения неактивны, я рассмотрел синтаксис и не смог обработать эти переменные.
(defrule uniqueness
(exists (box (row ?f1) (column ?c1) (value ?v)(state inactive))
(not (and (box (row ?f2) (column ?c2) (value ?v))
(test (or (!= ?f1 ?f2) (!= ?c1 ?c2))))))
=>
(printout t "There are values that are not repeated" crlf)
;;(modify (state active)) ;;this line causes me problems
)