如何在Prolog中获得多个目标

问题描述 投票:0回答:1

我有以下代码。

move(state(on(X, NewX), OldY, Z), state(NewX, on(X, OldY), Z)).
move(state(on(X, NewX), Y, OldZ), state(NewX, Y, on(X, OldZ))).

move(state(OldX, on(Y, NewY), Z), state(on(Y, OldX), NewY, Z)).
move(state(X, on(Y, NewY), OldZ), state(X, NewY, on(Y, OldZ))).

move(state(OldX, Y, on(Z, NewZ)), state(on(Z, OldX), Y, NewZ)).
move(state(X, OldY, on(Z, NewZ)), state(X, on(Z, OldY), NewZ)).

问题是我想知道我可以使用的所有可能性。

例如,如果我输入

move(state(on(a,void), void, void), A).

我得到

A = state(void, on(a,void), void).

但我还想用下一个选项。

state(void, void, on(a,void)).
prolog
1个回答
0
投票

当Prolog给你第一个答案时,按下 ; (分号)或 空间 得到下一个答案(SWI-Prolog告诉我,它也可以接受 n, r标签 为此)。) 按 . (期间)或 进入 如果你不想要更多的答案。

© www.soinside.com 2019 - 2024. All rights reserved.