0

我有一个性别数据库:

前任:

woman(jhon).
man(Pat)
man(leo), etc. 

我需要为网球比赛编写一个函数(混合双打:每边有 2 个不同的性别)。所以如果你要求让我们说:

matchMixte(equipe(X,emma),equipe(Y,Z)) , X, Y, Z应该返回可能的合作伙伴的组合。

对不起法国人。

  • equipe 是团队的意思。
  • homme 是男人的意思
  • 女人

我已经有很多事情了,但我知道我走错了路。如果你因为篇幅而不能帮助我,我会理解的

这是我到目前为止的工作。

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

1 回答 1

0

I don't know what the problem you have is as your first predicate worked fine.

I would shorten it to this, though, as you don't need all of those not predicates:

matchMixte(equipe(X,Y),equipe(X1,Y1)):-
    femme(X),homme(Y),
    femme(X1),homme(Y1),
    not(X=X1),not(Y=Y1).

I queried like this:

?- matchMixte(equipe(X,Y),equipe(X1,Y1)),
    write(equipe(X,Y)),
    write(equipe(X1,Y1)),
    nl,
    fail.
于 2015-02-02T01:41:13.770 回答