prolog - 当序言返回 sat 作为输出时,这意味着什么?
问题描述
当我运行我的代码时,它返回 sat 作为输出?它是试图传达错误还是输出意味着什么?
%Scenario 2:
%Amy: “My report is original.”
%Brian: “Mine as well”
report(2, [Amy,Brian]) :-
sat(Amy=:=Amy),
sat(Brian=:=Brian),
write('1 they are telling the truth , 0 they are lying').
我得到的输出是: -
解决方案
它不是试图向您传达错误,而是尽可能具体。sat(Amy=:=Amy), sat(Brian=:=Brian)
每当sat(Amy=:=Amy)
和都是可满足的sat(Brian=:=Brian)
。
CLP(B) 不会自动将表达式中的变量指定为布尔值。您可以使用labeling(+Vs)
以下方式通知它:
?- use_module(library(clpb)).
?- sat(Amy=:=Amy), sat(Brian=:=Brian), labeling([X,Y]).
X = Y, Y = 0,
sat(Amy=:=Amy),
sat(Brian=:=Brian)
这只是您可以使用回溯获取其他解决方案的第一个解决方案。
推荐阅读
- next.js - Next JS + Next Auth Protected 页面在重定向后加载几秒钟
- sql-server - Spring JPA 在嵌入的复合键上使用 @MapsId、@AttributeOverride 时插入重复的选择列
- amazon-web-services - terraform plan 'string required' dynamodb_table_item
- wordpress - 当单击作为类别的菜单项时,使 wordpress 使用当前页面模板
- vue.js - 创建一个新项目,运行:vue create hello-world,然后运行:npm run serve on error
- authentication - 使用 WSO2 进行 Grafana OAuth 身份验证
- angular - 订阅触发两次
- spring-boot - springboot2.4.4 集成linkedin Oauth2 不工作
- flutter - Flutter Android Studio 控制台中不必要和闲聊的信息
- bash - bash - 对话框命令 - “全选”按钮