График судоку пролог

У меня есть задание о 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).
Другие вопросы по тегам