我是 Prolog 的新手,我正在尝试在 Prolog 中为爱因斯坦之谜(也称为斑马之谜)建模(但有 10 个房子和 30 个提示),我使用这个模型示例作为起点:
http://www.baptiste-wicht.com/2010/09/solve-einsteins-riddle-using-prolog/
但在我的谜语中,我必须能够说 X 是 Y 的对。而且我的意思不是直接对,而是在列表中的对。所以 Y 可以在 1 号屋,而 X 可以在 9 号屋。
我怎样才能在 Prolog 中做到这一点?我在考虑一个谓词,它说 Y 是通过将 X 和 X 之前的所有元素从该列表中取出而构造的列表的成员,但我不知道如何做到这一点或如何做到这一点,以便我可以适应它前面提到的例子。