gpt4 book ai didi

prolog - 在序言中排除 tuples_in 列表

转载 作者:行者123 更新时间:2023-12-04 16:52:03 25 4
gpt4 key购买 nike

简而言之,这就是问题所在:
16 名 child 将坐在 4 x 4 排列的椅子上。 children 是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]]

发现两个 child 不是敌人的谓词定义为:

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]]).

找到上面的代码 here

但是当我查询 ?- 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.

任何人都可以帮忙纠正第一段代码吗?提前致谢。

最佳答案

我会完善你的代码,只是为了使它通用

not_enemy(A, B) :-
maplist(not_enemy(A,B), [[1,2], [4,6], [4,7], [4,9], [9,11], [12,14], [14,16]]).
not_enemy(A,B,[X,Y]) :-
X #= A #==> Y #\= B.

我找不到合适的方法来使用 tuples_in 来解决这个问题。

关于prolog - 在序言中排除 tuples_in 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31212357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com