私はエクササイズをしていて、簡単な結婚相談所のマッチングシステムを作成する必要があります。現在、各人の趣味は1つで、趣味はアクティブと非アクティブのカテゴリに分類されます。2つの趣味が一致し、2人の性別が異性である場合、結婚相談所はこれらを人に一致すると見なします。
だから今、私は複数の趣味を可能にするシステムが必要ですが、私はこれに頭を悩ませることができないようです。
これが私が持っているものです:
(deftemplate MAIN::person
(slot name)
(slot age)
(multislot hobby)
(slot town)
(slot sex))
(person (name "Jane")
(age 25)
(hobby fashion gardening)
(town montrose)
(sex female))
(deffacts hobby_types "Hobby categories"
(hobby_type gardening active)
(hobby_type swinging active)
(hobby_type reading inactive)
(hobby_type fashion inactive)
)
(defrule compatible_hobbies
(opposite_sex ?name1 ?name2)
(person (name ?name1) (hobby ?hobby1))
(person (name ?name2) (hobby ?hobby2))
(hobby_type ?hobby1 ?type)
(hobby_type ?hobby2 ?type)
=>
(assert (hobbies_match ?name1 ?name2))
)
では、最初に、マルチスロットフィールドを正しく宣言しますか?そして、互換性のある_hobbiesルールを調整して、人が持つ可能性のある趣味のいずれかと一致させるにはどうすればよいですか?