Следующая подсветка кода должна прояснить, почему цель allocation(f1,f2,<b>f3</b>,f1,f2,<b>f3</b>,f2,<b>f3</b>)
не может быть успешной:
allocation(Z1,Z2,<b>Z3</b>,Z4,Z5,<b>Z6</b>,Z7,<b>Z8</b>) :-
dif(Z1,Z2), dif(Z1,Z3),
dif(Z2,Z3), dif(Z2,Z4),
dif(Z3,Z4), <b>dif(Z3,Z6)</b>,
dif(Z4,Z5), dif(Z4,Z6), dif(Z4,Z7),
dif(Z6,Z7), <b>dif(Z6,Z8)</b>,
maplist(frequency, [Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8]).
Обратите внимание на использование dif/2
вместо (\==)/2
в приведенном выше коде?
пролог-диф сохраняет логическая чистота , для упрощения отладка !