#prolog
Вопрос:
Как говорится в названии, когда вы сделаете первое и используете его, вам следует продолжить со следующим, пока вы не напечатаете их все, но поскольку это означает, что это правда, первое не учитывает остальные.
Нужно взять «le», «lc», «ru» и «rv».
Факты:
invar( xx, 0,0, 255,255 ). invar( pphi, -180,0, 180,255 ). f_p( le, xx, [ 0,255, 30,255, 96,0, 255,0 ] ). f_p( lc, xx, [ 0,0, 76,0, 102,255, 127,0, 255,0 ] ). f_p( ru, pphi, [ -180,0, -97,0, -63,255, -28,0, 180,0 ] ). f_p( rv, pphi, [ -180,0, -47,0, -23,255, 0,0, 180,0 ] ).
Код, использующий базу фактов:
impresionPruebaGeneral(FD):- writeln(FD,'pruebaGeneral(X):-'), invar(Invar,_,_,_,_), f_p(F,_,_), write(FD,'prueba'),write(FD,F),writeln(FD,'(X),'),!.
Впечатление, которое это производит:
pruebaGeneral(X):- pruebale(X),
Желаемый отпечаток:
pruebaGeneral(X):- pruebale(X), pruebalc(X), pruebaru(X), pruebarv(X),
Не имеет значения, что в нем нет точки «.» в конце концов, это позаботится о другом предикате после
Комментарии:
1. Избавьтесь от пореза, что он делает? Используйте цикл forall/2 для перебора всех решений и печати в качестве побочного эффекта.
2. Какую реализацию пролога вы используете?
3. @User9213 Но какое условие я должен поставить? поскольку база фактов может измениться, я не могу сказать в качестве условия, что «rv» является последним
4. @TA_intern Я использую версию пролога: SWI-версия пролога (потоковая, 64 бита, версия 8.2.4). Я думаю, основной пролог, я использую его в течение месяца. Мне просто нужно исправить это, с чем я консультируюсь по ТП. Но я не могу понять, как это сделать.
5. Что такое ТП? Как вы консультируетесь по этому поводу?