首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >剪辑:我如何允许用户输入句子作为答案?茉莉花猜想

剪辑:我如何允许用户输入句子作为答案?茉莉花猜想
EN

Stack Overflow用户
提问于 2022-11-18 00:34:35
回答 1查看 22关注 0票数 -1

我目前正在做一个剪辑程序,它只根据花的颜色和季节来猜测茉莉花的名字,但是我不知道如何把句子作为可能的答案来得到像“春秋”这样的答案。

下面是代码:

代码语言:javascript
复制
    (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))
)

另外,我很好奇是否有更好的方法来优化诸如春秋这样的选项,而不必把整个句子作为一个答案。

EN

回答 1

Stack Overflow用户

发布于 2022-11-18 20:37:24

您可以编写规则来展开用户的答案或时间插槽中的值,以包括其他两个季节之间的季节:

代码语言:javascript
复制
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> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74483717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档