我有一个性别数据库:
前:
woman(jhon).
man(Pat)
man(leo), etc.
我需要为网球比赛写一个函数(混合双打:每边2个不同的性别)。所以如果你要求我们说:
matchMixte(equipe(X,emma),equipe(Y,Z)) , X, Y, Z
应该返回可能的合作伙伴组合。
对不起法国人。
我已经有很多东西,但我知道我走错了路。如果你能帮助我,因为我会理解
到目前为止,这是我的工作。
matchMixte(equipe(X,Y),equipe(X1,Y1)):-
femme(X),homme(Y),
femme(X1),homme(Y1),
not(X=Y),not(X=Y1),not(X1=Y1),not(X=X1),not(Y=X1),not(Y1=Y).
matchMixte(equipe(X,Y),equipe(X1,Y1)):-
femme(X),homme(Y),
femme(Y1),homme(X1),
not(X=Y),not(X=Y1),not(X1=Y1),not(X=X1),not(Y=X1),not(Y1=Y).
matchMixte(equipe(X,Y),equipe(X1,Y1)):-
femme(X1),homme(Y1);
femme(X),homme(Y),
not(X=Y),not(X=Y1),not(X1=Y1),not(X=X1),not(Y=X1),not(Y1=Y).
matchMixte(equipe(X,Y),equipe(X1,Y1)):-
femme(X1),homme(Y1);
femme(Y),homme(X),
not(X=Y),not(X=Y1),not(X1=Y1),not(X=X1),not(Y=X1),not(Y1=Y).
答案 0 :(得分:0)
我不知道你的问题是什么,因为你的第一个谓词工作正常。
我会缩短它,因为你不需要所有这些not
谓词:
matchMixte(equipe(X,Y),equipe(X1,Y1)):-
femme(X),homme(Y),
femme(X1),homme(Y1),
not(X=X1),not(Y=Y1).
我这样问:
?- matchMixte(equipe(X,Y),equipe(X1,Y1)),
write(equipe(X,Y)),
write(equipe(X1,Y1)),
nl,
fail.