gpt4 book ai didi

用于完成字符串的 Prolog 通配符

转载 作者:行者123 更新时间:2023-12-01 12:38:01 28 4
gpt4 key购买 nike

我目前陷入了序言问题。

到目前为止我有:

film(Title) :- movie(Title,_,_).(其中“movie(T,_,_,)”是对我的引用数据库)

namesearch(Title, Firstword) :- film(Title), contains_term(Firstword, Title).

很难解释我需要什么帮助,但基本上有一个通配符可以用来搜索以特定单词开头的所有电影,例如,如果我要搜索以“”这个词开头的所有电影的”。

是否有允许我这样输入的通配符:namesearch(X,'The*')

我试过像这样使用星号,但它不起作用,

谢谢你的帮助

最佳答案

这完全取决于标题的表示方式。

原子

如果表示为原子,则需要sub_atom(Atom, Before, Length, After, Sub_atom)

?- Title = 'The Third Man', sub_atom(Title, 0, _, _, 'The').
Title = 'The Third Man'.

代码列表

如果它是一个代码列表,在爱丁堡传统的 Prologs 中称为字符串,您可以使用 append/3 对其进行“硬编码”,或者您可以对一般模式使用 Definite Clause Grammars .

?- set_prolog_flag(double_quotes,codes).
true.
?- append("The",_, Pattern), Title = "The Third Man", Pattern = Title.
Pattern = Title, Title = [84,104,101,32,84,104,105,114,100|...].
?- Title = "The Third Man", phrase(("The",...), Title).
Title = [84,104,101,32,84,104,105,114,100|...]
; false.

注意84是T等的字符编码

phrase/2 是语法的“入口”。参见 更多。上面使用了如下定义:

... --> [] | [_], ... .

字符列表

与代码列表类似,字符列表提供了一种更具可读性的表示,它仍然具有与列表谓词和定子从句文法兼容的优点:

?- set_prolog_flag(double_quotes,chars).
true.
?- append("The",_, Pattern), Title = "The Third Man", Pattern = Title.
Pattern = Title, Title = ['T',h,e,' ','T',h,i,r,d|...].

?- Title = "The Third Man", phrase(("The",...), Title).
Title = ['T',h,e,' ','T',h,i,r,d|...]
; false.

另见 this answer .

关于用于完成字符串的 Prolog 通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27806409/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com