2010-03-19 3 views
1

Я получаю несколько результатов с одинаковыми выходами.Как избежать повторения в прологе

Я хочу получить jack,jane только один раз, но я получаю его два раза.

Как я могу избежать этого? Я попробовал setof, но я не мог это сделать. Пожалуйста, может кто-нибудь помочь мне в этом?

+0

Возможно, ваши алгоритмы просто создают результат два раза. Не видя исходного кода, трудно сказать, почему. – sth

ответ

1

Этот вопрос дублируется в "How to stop repetitions in rules in prolog".

Ответ должен сделать что-то вроде этого:

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

Прочитайте full answer более подробно.

+0

Я пробовал это решение, но его не работало. я действительно не знаю почему. он говорит, что эти неопределенные – Nubkadiya

+1

@Pradeep - что вы пытались и что «те» не определены? – Enigmativity

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