Синтаксическая ошибка Prolog в формате

Я получаю синтаксическую ошибку в строке формата, и я понятия не имею, почему!

magic3(Variables):-
   Variables[A,B,C,D,E,F,G,H,I],
   fd_domain(Variables,1,9),
   fd_all_different(Variables),
   A+B+C #= A+D+G,
   A+B+C #= A+E+I,
   A+B+C #= C+F+I,
   A+B+C #= B+E+H,
   fd_labeling(Variables),
   format("A=~w, B=~w, C=~w~n, D=~w, E=~w, F=~d~w, G=~w, H=~w, I= ~w", Variables).

Код печатает

A B C
D E F
G H I

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


person onebadbaggins    schedule 03.12.2014    source источник


Ответы (1)


В некоторых системах вам нужно поставить в начале вашего файла/модуля:

:- use_module(library(clpfd)).

И в качестве небольшого улучшения вы можете ввести сумму S:

S #= A+B+C,
S #= D+E+F, % this too!
S #= G+H+I,
....

И даже лучше, теперь вы можете вычислить сумму с помощью (1+2+ ...+9) / 3 = 15. Итак, добавьте S #= 15. В Интернете есть прекрасная анимация, иллюстрирующая сам процесс маркировки.


Дальше:

Variables[A,B,...]

должен прочесть

Variables = [A,B,...]
person false    schedule 03.12.2014
comment
это не решило мою проблему. Точно так же я сделал другие файлы, не включая :- use_module(library(clpfd)). и я не получил ошибку. - person onebadbaggins; 03.12.2014
comment
@onebadbaggins: А, кажется, вы используете GNU-Prolog. В любом случае, см. редактирование выше. - person false; 03.12.2014
comment
БУМ! хороший улов, ха-ха, отсутствующий знак равенства был проблемой! - person onebadbaggins; 03.12.2014