2010-03-19 11 views
1

Je reçois plusieurs résultats avec les mêmes sorties. Je veux obtenir jack,jane seulement une fois, mais je l'obtiens deux fois.Comment éviter les répétitions dans prolog

Comment puis-je éviter cela? J'ai essayé setof mais je ne pouvais pas le faire. S'il vous plaît quelqu'un peut-il m'aider à ce sujet?

+0

Probablement vos algorithmes créent juste le résultat deux fois. Sans voir le code source, il est difficile de dire pourquoi. – sth

Répondre

1

Cette question est dupliquée dans "How to stop repetitions in rules in prolog".

Une réponse est de faire quelque chose comme ceci:

solve :- 
    marriedcouple(Dad, Mum), 
    not(found(marriedcouple(Dad, Mum))), 
    assert(found(marriedcouple(Dad, Mum))), 
    write([Dad, Mum]), 
    nl, 
    fail. 

Lire la full answer pour plus de détails.

+0

J'ai essayé cette solution mais elle ne fonctionne pas. Je ne sais vraiment pas pourquoi. il dit ces indéfinis – Nubkadiya

+1

@Pradeep - qu'avez-vous essayé et ce que "ceux" sont indéfinis? – Enigmativity

Questions connexes