这就是问题所在:16个孩子将坐在一个4 x 4的椅子上.孩子是8个女孩(编号为1..8)和8个男孩(编号为9..16).1,3,5,8认为男孩是令人讨厌的9,10,11,14认为女孩是粗暴这些对是敌人:[[1,2],[4,6],[4,7],[4,9 ],[9,11],[12,14],[14,16]]
找到两个孩子不是敌人的谓词定义为:
not_enemy(A, B) :-
NotA #\= A #\/ NotB #\= B,
tuples_in([[NotA, NotB]],
[[1,2], [4,6], [4,7], [4, 9],[9,11], [12, 14], [14,16]]).
Run Code Online (Sandbox Code Playgroud)
上面的代码在这里找到
但是当我查询? - not_enemy(1,2)时输出为真.
我必须使用这个长代码:
not_enemy(A, B) :-
A #=1 #==> B #\= 2,
A #=4 #==> B #\= 6,
A #=4 #==> B #\= 7,
A #=4 #==> B #\= 9,
A #=9 #==> B #\= 11,
A #=12 #==> B #\= 14,
A #=14 #==> B #\= 16.
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙纠正第一段代码吗?提前致谢.