gpt4 book ai didi

parsing - prolog解析操作问题

转载 作者:行者123 更新时间:2023-12-05 01:25:47 26 4
gpt4 key购买 nike

这是问题所在。我想在 count(a*b*c, * , N) 上做一个序言程序这将计算 *a*b*c并返回 N=2 .

我怎样才能做到这一点?

我做了一些研究,要么将其作为 s 字符串传递,要么使用列表分隔 a*b*c .

然而,到目前为止,没有任何事情是成功的。

最佳答案

表达式 a*b*c是一个简化的复合词:

?- write_canonical(a*b*c).
*(*(a,b),c)

你可以看到 *只是二元关系的仿函数,表达式树的访问可以使用 univ内置:
count(Expression, Request, N) :-
( Expression =.. [Op, Left, Right]
-> count(Left, Request, NLeft),
count(Right, Request, NRight),
( Request == Op
-> N is NLeft + NRight + 1
; N is NLeft + NRight
)
; N = 0
).

这接受带有任何二元运算符的树表达式,但也可以,例如
?- count(e(a,e(b,c)),e,N).
N = 2.

关于parsing - prolog解析操作问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12428303/

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