Prolog 数独错误,returns false 无论如何

Prolog sudoku error, returns false no matter what

我对此有疑问:

:-use_module(library(clpfd)).

sudoku(R) :- 
            length(R,9), /*red je duzine 9*/
            maplist(same_length(R),R), /*svi redovi su iste duzine*/
            append(R,E), /*elemente svih redova gurnem u jednu listu*/
            E ins 1..9, /* svi elementi te liste su veci od 1 i manji od 9*/
            maplist(all_distinct,R), /*svi elementi po redovimasu medjusobno razliciti*/
            transpose(R,C), /*rotira matricu 90 stepeni u desno i time kolone postaju redovi*/
            maplist(all_distinct, C),
            R = [A,B,C,D,E,F,G,H,I], /*svaki red dobije ime*/
            kvadratic(A,B,C), /* predkat kvadratic ce se pobrinuti da*/
            kvadratic(D,E,F), /* kvadrati 3 x 3 unutar matrice takodje*/ 
            kvadratic(G,H,I). /* sadrze medjusobno razlicite elemente*/

kvadratic([],[],[]). /* ako smo dosli do praznih lista stane */
kvadratic([E1,E2,E3|T1],[E4,E5,E6|T2],[E7,E8,E9|T3]) :- 
            all_distinct([E1,E2,E3,E4,E5,E6,E7,E8,E9]),
            kvadratic(T1,T2,T3). /* pozovemo za ostatak listi */

如您所见,这是我的代码(带有一些注释,与 swi prolog 网站上的注释相同),当我 运行 它时,我只得到 "false"。有人可以帮帮我吗?谢谢!

所以,正如我所预料的那样,问题真的很愚蠢。在谓词数独中,我使用字母 C 和 E 来表示 2 个完全不同的事物(它们不是同一事物,我只是用相同的字母命名了 2 个独立的变量)。更改程序后完美运行!