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