首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数返回false - Swi-Prolog

函数返回false - Swi-Prolog
EN

Stack Overflow用户
提问于 2016-11-10 18:12:37
回答 1查看 727关注 0票数 1

目前,我正在为我的编程类编写我的作品。工作是解决天际线的问题。从远处看,城市的天际线是由城市内所有建筑物形成的轮廓的外部轮廓。所以,基本上,你有一个包含3个参数的建筑列表(初始位置,最后位置,高度),你必须返回天际线的坐标。

我有两个基本的案子。第一个是在列表为空时使用的。第二,如果只有一幢楼宇,而最后一幢则是当我在名单上有两幢或多于两幢楼宇时才会使用。函数“除法”接收一个建筑物列表,并返回两个建筑物列表。

我的问题是:

代码语言:javascript
复制
divide([],[],[]).
divide([C|[]],[C|ed(X1,X2,H1)]):-
   divide([],ed(X1,X2,H1),[]).
divide([ed(X1,X2,H1),ed(Y1,Y2,H2)|L],L1,L2):-
   L1 = [ed(X1,X2,H1)|L1],
   L2 = [ed(Y1,Y2,H2)|L2],
   divide(L,L1,L2).

当我在控制台上运行'divide‘函数时,它返回false作为答案,而不是返回一个列表。我只是不知道哪里出了问题或者哪里出了问题。它应该返回两个列表,而不是'false‘。

举个例子:

代码语言:javascript
复制
?- divide([(1,2,3),(2,3,4),(1,4,5),(6,2,4)],X,Y).

false.

有什么想法吗?对不起,英语不好,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-10 21:22:35

始终查看Prolog系统产生的警告。如果你忽视了它们,不要为失败而感到惊讶。下面是的另一个错误:

代码语言:javascript
复制
divide([C|[]],[C|ed(X1,X2,H1)]):-
                 ^^^^^^^^^^^^

这不是一份格式良好的清单。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40534365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档