首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将所有可能的结果合并到prolog中的一个列表中

将所有可能的结果合并到prolog中的一个列表中
EN

Stack Overflow用户
提问于 2016-03-17 23:33:22
回答 1查看 474关注 0票数 1

我正在试图找到来自谓词Quiz时隙/3测试槽(Group,Day,S槽)的可用时隙。

问答(group4,星期二,1)。 问答时间(group4,星期四,1)。 问答时间(group6,星期六,5)。

这是我的假设,但似乎行不通。

available_timings(G,L):-集( X,问答槽(G,X,_),L)

我要(group4,L)的结果,L=星期二,1,星期四,1。

EN

回答 1

Stack Overflow用户

发布于 2016-03-18 12:23:30

语法

代码语言:javascript
运行
复制
% Set of every FooResult
?- setof(FooResult,foo(X,Y,FooResult),Result).
   [FooResult1, FooResult2, ..]

% Set of tuples of every input X and FooResult
?- setof((X,FooResult),foo(X,Y,FooResult),Result).
   [(X1,FooResult1), (X2,FooResult2), ..]

% Set of lists of every input X and FooResult, ommitting input Y
?- setof([X,FooResult],foo(X,_,FooResult),Result).
   [[X1,FooResult1], [X2,FooResult2], ..]

我想你明白重点了。正如潜行者在上面的回答中所指出的,您正在尝试将插槽包含在结果中,但是,您告诉prolog查找所有不同的询问槽--表单的所有事实:

代码语言:javascript
运行
复制
quizslot(group G, day X, whatever slot)

由于此通配符将与任何插槽匹配,因此无法检索持有该插槽的实际变量,Prolog没有麻烦为您检索变量。

例如,正确的用法将是以下内容之一

代码语言:javascript
运行
复制
setof([Day,Slot], quizslot(Group,Day,Slot), Result)    % List of lists
setof((Day,Slot), quizslot(Group,Day,Slot), Result)    % List of tuples
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36073552

复制
相关文章

相似问题

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