2015-02-02 2 views
0

У меня есть аа базы данных пола:программы Prolog, что я просто не получаю

например:

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

Мне нужно написать функцию для теннисного матча (микст: так 2 различных пол на каждом боковая сторона). поэтому, если вы попросите, скажите:

matchMixte(equipe(X,emma),equipe(Y,Z)) , X, Y, Z должен возвращать комбинацию возможных партнеров.

Извините за французский.

  • equipe означает team.
  • Ьотте означает человеку
  • роковая женщина

У меня уже есть много вещей, но я знаю, что я на ложном пути. Если вы не можете мне помочь из-за длины, я пойму

Вот моя работа до сих пор.

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

Вам не нужно четыре ' matchMixte (equipe (X, Y), equipe (X1, Y1)) 'предикаты - один даст вам все комбинации. – Enigmativity

+0

так верно, я усложнил жизнь. CS приводит меня в бешенство –

ответ

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. 
+0

ваше решение почти идеально, но когда я назначаю значение X1, я получаю false как результат, другие переменные работают отлично –

+0

@ApexPredator - вам нужно опубликовать все ваши предикаты фактов в вашем вопросе. – Enigmativity

Смежные вопросы