gpt4 book ai didi

prolog - 在 Prolog 中计算时差

转载 作者:行者123 更新时间:2023-12-04 05:47:35 24 4
gpt4 key购买 nike

我在 Prolog 中编写一个相对简单的谓词时遇到了一些麻烦。这个谓词应该接收格式为 Hours:Minutes 的两个参数,计算两者之间的差异并检查该值是否大于或等于 40 分钟。

这是我到目前为止所拥有的:

time(Time1, Time2):- 
X:Y =:= Time1, A:B =:= Time2, calculate_time(X, Y, A, B).

calculate_time(X, Y, A, B):-
Y - X =:= 0,
B - A >= 40, !.
calculate_time(X, Y, A, B):-
Y - X > 0.

正如您可以想象的那样,这给出了一个错误,即:
?- time(10:00, 10:55).
ERROR at clause 1 of user:time/2 !!
INSTANTIATION ERROR- in arithmetic: expected bound value

所以,据我所知,他认为他得到了四个论据。他为什么会有这样的 react ?另外,在文件的开头,我有以下命令:
:-op(500,xfy,:).
:-op(600,xfy,/).

该谓词应该是更大程序的一部分,因此这两行需要保留在文件中。我没有使用任何模块,我正在使用 YAP。

任何帮助,将不胜感激!

最佳答案

你有两个问题。
第一个是您正在使用 =:=/2它测试两个数字表达式的计算结果是否相同,但您使用的是结构而不是数字表达式。

似乎您的逻辑也不完全正确(最后一个条款没有意义,您是从第一次的小时数中减去分钟数)

关于prolog - 在 Prolog 中计算时差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10486701/

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