Рекомендуемая литература. Упражнения.
Упражнение 4
Ниже представлен список правил на языке CLIPS, который соответствует приведенному во врезке 11.1 определению термина "оружие нападения" (assault-weapon). Некоторые правила в этом наборе вам следует попытаться сформулировать самостоятельно.
;; Объявления (deftemplate gun (field name (type SYMBOL)) (field class (type SYMBOL)) (field action (type SYMBOL)) (field caliber (type FLOAT)) (field capacity (type INTEGER)) (field feature (type SYMBOL)) ) (deftemplate assault-weapon (field name (type SYMBOL))) ;; Факты ;; Данный набор исходных правил квалифицируют ;; только модели Heckler & Kock 91 и Benelli ;; как "оружие нападения". (deffacts guns (gun (name Browning22) (class rifle) (action semi) (caliber.22) (capacity 11)) (gun (name CobrayMll) (class pistol) (action semi) (caliber 9.0) (capacity 30)) (gun (name HK91) (class rifle) (action semi) (caliber.308) (capacity 20)) (gun (name GlocklT) (class pistol) (action semi) (caliber 9.0) (capacity 17)) (gun (name Mossberg) (class shotgun) (action slide) (caliber.410) (capacity 5) (feature pistol-grip)) (gun (name BenelliSuper90) (class shotgun) (action semi) (caliber 12.0) (capacity 5) (feature barrel-shroud))) ;; ПРАВИЛА ;; Общий случай ;; Любая полуавтоматическая ;; винтовка (semi-automatic rifle) ;; или охотничье ружье (shotgun) с емкостью ;; магазина более 5 патронов. (defrule Parti (gun (name?N) (class?Csrifle|shotgun) (action semi) (capacity?X&:(>?X 5))) › (assert (assault-weapon (name?N))) ) ;; Любая полуавтоматическая ;; винтовка (semi-automatic rifle) ;; или охотничье ружье (shotgun) с ;; перечисленными дополнительными признаками. (defrule Part2 (gun (name?N) (class?C&rifle|shotgun) (action semi) (feature?Fsflash-suppressor|barrel-shroud|night-scope)) › (assert (assault-weapon (name?N))) ) ;; Любое охотничье ружье (shotgun) с пистолетной ;; рукояткой. ;; Сюда вставьте разработанное вами ;; самостоятельно правило pistol-grip. ;; Особые случаи ;; Модель Cobray Mi1 относится к категории ;; "оружие нападения". ;; Сюда вставьте разработанное вами ;; самостоятельно правило cobray. ;; Исключения ;; Модели, указанные пользователем, не относятся ;; к категории "оружие нападения", (defrule rimfire ?except < – (gun (name?N) (class rifle) (caliber.22) ?mistake < – (assault-weapon) (name?N)) › (retract?mistake) (retract?except)) ;; К категории "оружие нападения" не относятся ;; охотничьи ружья со скользящим затвором ;;(slide-action shotgun). ;; Сюда вставьте разработанное вами ;; самостоятельно правило slide.
Правило cobray учитывает особый случай с моделью Cobray Mil. Включение в набор правила pistol-grip приведет к тому, что к категории "оружие нападения" будет отнесена и модель Mossberg, но затем уточняющее правило slide исключит эту модель.