График судоку пролог
У меня есть задание о CLP с CT. Я посмотрел на множество примеров судоку. Я узнал, как определить список строк, столбцов и полей. Однако, как я понял, моя проблема отличается от примеров классического блочного судоку.
У нас есть граф G=(V,E). Ни у одной из соседних вершин нет одинакового номера.
гсудоку (края,N), ярлык (V).
Выход:
?- gsudoku([e(X,Y),e(Y,Z),e(Z,X)],2),label([X,Y,Z]).
false
?- gsudoku([e(X,Y),e(Y,Z),e(Z,X)],3),label([X,Y,Z]).
X=1 Y=2 Z=3 and (other permutations)
Должен ли я считать это примерами 3x3 судоку, потому что у меня 3 очка?
Может кто-нибудь, пожалуйста, помогите мне, как я могу решить это? Заранее спасибо!
1 ответ
Решение
Для будущих читателей вот код:
:- use_module(library(clpfd)).
gsudoku([],_).
gsudoku([e(F,T)|XS],N):- F in 1.. N,
T in 1.. N ,
F #\= T ,
gsudoku(XS,N).