Как вывести значение переменной из вопроса? - PullRequest
0 голосов
/ 10 октября 2018

Я делаю однобитное добавление:

sumbit(CIN,A,B,CO,R):- ... ?- sumbit(0 ,1 ,1 ,CO ,R) ,write(CIN),nl ,write(A),nl ,write("+"),nl ,write(B),nl ,write("--"),nl ,write(CO),write(R),nl.

Я хочу напечатать значения переменных CIN, A, B, CO и R. Этодолжно получиться что-то вроде этого:

0
1
+
1
--
10

Вместо этого это будет выглядеть так:

_40
_73
+
_149
--
10
Yes.

Также есть способ не печатать "Да"?Я использую клубничный пролог, если это поможет.Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Один из способов добиться этого без изменения определения предиката - настроить запрос следующим образом:

?- [CIN, A, B] = [0, 1, 1]
    ,sumbit(CIN
        ,A
        ,B
        ,CO
        ,R)
    ,write(CIN),nl
    ,write(A),nl
    ,write("+"),nl
    ,write(B),nl
    ,write("--"),nl
    ,write(CO),write(R),nl.

Теперь создаются все переменные либо самим вызовом, либо перед вызовом.

Когда переменная не создается, значение для печати отсутствует, поэтому вместо нее печатается ее «имя».Но поскольку неиспользуемое имя само по себе не имеет значения, оно может быть свободно переименовано системой во что угодно.В SWI Prolog:

1 ?- write(A).
_G1338
true.

Переименование обычно выполняется как часть процесса решения проблемы Prolog, чтобы гарантировать, что любые два отдельных вызова одного и того же предиката не мешают друг другу.

Таким образом, если в SWI Prolog используются имена, такие как _G1338, используемая вами реализация Prolog, очевидно, использует имена только с цифрами после подчеркивания, например _40.

0 голосов
/ 10 октября 2018

Я нашел ответ, поместив write () в предикат sumbit (...):

sumbit(CIN,A,B,CO,R):-
    xor_(A,B,R1)
    ,and(A,B,R2)
    ,xor_(R1,CIN,R)
    ,and(R1,CIN,R4)
    ,or(R2,R4,CO)
    ,write(CIN),nl
    ,write(A),nl
    ,write("+"),nl
    ,write(B),nl
    ,write("--"),nl
    ,write(R),nl.

Тем не менее, остаются вопросы без ответа:

есть ли способне печатать «Да»?

Какой был _number, который вышел раньше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...