gpt4 book ai didi

replace - Prolog 将 "+"替换为 "-"

转载 作者:行者123 更新时间:2023-12-04 18:22:40 25 4
gpt4 key购买 nike

我想写一个谓词invert(X, Y) , 当 YX但每次出现+替换为 - .

例如

?- invert(2 + 3, 2 - 3). 
yes.

例如
?- invert(3 + (2 + 4), X). 
X = 3 - (2 - 4).

最佳答案

您可以使用大学 =..检查您的表达式并替换 +/2带有 -/2 的运算符运算符(operator)。

invert(Left+Right, ILeft-IRight):-
!,
invert(Left, ILeft),
invert(Right, IRight).
invert(Exp, IExp):-
Exp=..[Functor|Args],
findall(NArg,
( member(Arg, Args),
invert(Arg, NArg)
), NArgs),
IExp=..[Functor|NArgs].

第一个子句处理带有主仿函数 + 的术语。第二条适用于具有不同主仿函数的术语。

[编辑]
正如其中一条评论所暗示的,当 invert/2 的两个参数时,您可以更改第一个子句以避免无限循环。没有实例化,只需用这个子句替换它
invert(Exp, ILeft-IRight):-
Exp=..[+, Left, Right],
!,
invert(Left, ILeft),
invert(Right, IRight).

关于replace - Prolog 将 "+"替换为 "-",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10337395/

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