質問

Exists in Clips, an function to remove duplicate strings? Example: I have this structure:

[quality] [comfort] [caliber] [console]
[quality] [comfort] [caliber] [console]
[quality] [comfort] [character] [console]
[quality] [comfort] [lineament] [console]
[quality] [comfort] [timbre] [console]

and I need to keep only one [quality] [comfort]. These are stored in variables as follows: "[" ?tpe1 "]" "[" ?tpic1 "]" "[" ?syntype "]" "[" ?syntopic "]"

These is code that to writes in a file:

(defrule Synonymous::rulesoftgoal " "
(declare (salience 55))
(synonymoustype
(type            ?type    )
(syntype         ?syntype ))
(synonymoustopic
(topic           ?topic   )
(syntopic        ?syntopic))
=>
(printout  baseFile "[" ?tpe1 "]" "["?tpic1"]""[" ?syntype"]" "[" ?syntopic "]" crlf) 
)

Can anybody help me?

正しい解決策はありません

他のヒント

If this is your original approach:

CLIPS> 
(deftemplate synonymoustype
   (slot id)
   (slot type)
   (slot syntype))
CLIPS>    
(deftemplate synonymoustopic
   (slot id)
   (slot topic)
   (slot syntopic))
CLIPS>    
(deffacts initial
   (synonymoustype (id 1) (type quality) (syntype caliber))
   (synonymoustype (id 2) (type quality) (syntype caliber))
   (synonymoustype (id 4) (type quality) (syntype character))
   (synonymoustype (id 4) (type quality) (syntype linament))
   (synonymoustype (id 5) (type quality) (syntype timbre))
   (synonymoustopic (id 6) (topic comfort) (syntopic console)))
CLIPS> 
(defrule rulesoftgoal
   (declare (salience 55))
   (synonymoustype
      (type ?type)
      (syntype ?syntype ))
   (synonymoustopic
      (topic ?topic)
      (syntopic ?syntopic))
   =>
   (printout t "[" ?type "]" " [" ?topic "]" " [" ?syntype "]" " [" ?syntopic "]" crlf))
CLIPS> (reset)
CLIPS> (run)
[quality] [comfort] [caliber] [console]
[quality] [comfort] [caliber] [console]
[quality] [comfort] [character] [console]
[quality] [comfort] [linament] [console]
[quality] [comfort] [timbre] [console]
CLIPS>

Here's one way to prevent duplicates from being printed:

CLIPS>    
(deftemplate synonymoustype
   (slot id)
   (slot type)
   (slot syntype))
CLIPS>    
(deftemplate synonymoustopic
   (slot id)
   (slot topic)
   (slot syntopic))
CLIPS>    
(deffacts initial
   (synonymoustype (id 1) (type quality) (syntype caliber))
   (synonymoustype (id 2) (type quality) (syntype caliber))
   (synonymoustype (id 4) (type quality) (syntype character))
   (synonymoustype (id 4) (type quality) (syntype linament))
   (synonymoustype (id 5) (type quality) (syntype timbre))
   (synonymoustopic (id 6) (topic comfort) (syntopic console)))
CLIPS> 
(defrule rulesoftgoal
   (declare (salience 55))
   (synonymoustype
      (type ?type)
      (syntype ?syntype ))
   (synonymoustopic
      (topic ?topic)
      (syntopic ?syntopic))
   =>
   (assert (print-string (str-cat "[" ?type "]" " [" ?topic "]" " [" ?syntype "]" " [" ?syntopic "]"))))
CLIPS> 
(defrule rulesoftgoal-print
   ?f <- (print-string ?string)
   =>
   (retract ?f)
   (printout t ?string crlf))
CLIPS> (reset)
CLIPS> (run)
[quality] [comfort] [timbre] [console]
[quality] [comfort] [linament] [console]
[quality] [comfort] [character] [console]
[quality] [comfort] [caliber] [console]
CLIPS> 

And here's another:

CLIPS>    
(deftemplate synonymoustype
   (slot id)
   (slot type)
   (slot syntype))
CLIPS>    
(deftemplate synonymoustopic
   (slot id)
   (slot topic)
   (slot syntopic))
CLIPS>    
(deffacts initial
   (synonymoustype (id 1) (type quality) (syntype caliber))
   (synonymoustype (id 2) (type quality) (syntype caliber))
   (synonymoustype (id 4) (type quality) (syntype character))
   (synonymoustype (id 4) (type quality) (syntype linament))
   (synonymoustype (id 5) (type quality) (syntype timbre))
   (synonymoustopic (id 6) (topic comfort) (syntopic console)))
CLIPS> 
(defrule rulesoftgoal
   (declare (salience 55))
   (synonymoustype
      (type ?type)
      (syntype ?syntype ))
   (synonymoustopic
      (topic ?topic)
      (syntopic ?syntopic))
   (not (already-printed ?type ?topic ?syntype ?syntopic))
   =>
   (assert (already-printed ?type ?topic ?syntype ?syntopic))
   (printout t "[" ?type "]" " [" ?topic "]" " [" ?syntype "]" " [" ?syntopic "]" crlf))
CLIPS> (reset)
CLIPS> (run)
[quality] [comfort] [caliber] [console]
[quality] [comfort] [character] [console]
[quality] [comfort] [linament] [console]
[quality] [comfort] [timbre] [console]
CLIPS> 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top