我目前正在做一个剪辑程序,它只根据花的颜色和季节来猜测茉莉花的名字,但是我不知道如何把句子作为可能的答案来得到像“春秋”这样的答案。
下面是代码:
(deftemplate jazmin
(slot nombre)
(slot color-flor
(allowed-values blanca amarilla))
(slot temporada
(allowed-values primavera verano primavera-a-otoño verano-a-otoño invierno-a-primavera))
)
(defrule in-color-flor
=>
(printout t "Inserte el color de la flor: ")
(assert (color-flor (read)))
)
(defrule in-temporada
=>
(printout t "Inserte en que temporada florece: ")
(assert (temporada (read)))
)
(defrule buscar-jazmin
(color-flor ?color)
(temporada ?temporada)
(jazmin (nombre ?nombre) (color-flor ?color-flor) (temporada ?temporada))
=>
(printout t "El nombre del jazmin descrito es: " ?nombre crlf)
)
(defrule jazmin-no-encontrado
(color ?color-flor)
(temporada ?temporada)
(not (jazmin (nombre ?nombre) (color-flor ?color-flor) (temporada ?temporada)))
=>
(printout t "El jazmin descrito no se encuentra" crlf)
)
(deffacts jazmines
(jazmin (nombre Jazmin-Blanco) (color-flor blanca) (temporada primavera-a-otono))
(jazmin (nombre Jazmin-Chino) (color-flor blanca) (temporada primavera))
(jazmin (nombre Jazmin-Silvestre) (color-flor amarilla) (temporada verano))
(jazmin (nombre Jazmin-Azor) (color-flor amarilla) (temporada primavera))
(jazmin (nombre Jazmin-Espanol) (color-flor blanca) (temporada verano-a-otono))
(jazmin (nombre Jazmin-Amarillo) (color-flor amarilla) (temporada invierno-a-primavera))
)另外,我很好奇是否有更好的方法来优化诸如春秋这样的选项,而不必把整个句子作为一个答案。
发布于 2022-11-18 20:37:24
您可以编写规则来展开用户的答案或时间插槽中的值,以包括其他两个季节之间的季节:
CLIPS>
(deffacts seasons
(season-order primavera verano otono invierno primavera))
CLIPS>
(defrule expand-season-1
?f <- (seasons $?first ?s1 to ?s2)
(season-order $? ?s1 ?s2 $?)
=>
(retract ?f)
(assert (seasons ?first ?s1 ?s2)))
CLIPS>
(defrule expand-season-2
?f <- (seasons $?first ?s1 to ?s3)
(season-order $? ?s1 ?s2&~?s3 $?)
=>
(retract ?f)
(assert (seasons ?first ?s1 ?s2 to ?s3)))
CLIPS>
(defrule get-seasons
=>
(print "Seasons? ")
(assert (seasons (explode$ (readline)))))
CLIPS> (reset)
CLIPS> (run)
Seasons? invierno to verano
CLIPS> (facts)
f-1 (season-order primavera verano otono invierno primavera)
f-4 (seasons invierno primavera verano)
For a total of 2 facts.
CLIPS> (reset)
CLIPS> (run)
Seasons? otono primavera
CLIPS> (facts)
f-1 (season-order primavera verano otono invierno primavera)
f-2 (seasons otono primavera)
For a total of 2 facts.
CLIPS> https://stackoverflow.com/questions/74483717
复制相似问题