2011-04-22 13 views
3
domains 
    A,B,C = symbol 
    N,P = integer 

predicates 
    tower(integer,symbol,symbol,symbol,integer) 

    go 

clauses 
    go :- clearwindow, 
      write("enter value of N (For Transfering from A To B)"), 
      readint(N), 
      tower(N,'a','b','c',N). 

    tower(N,A,B,C,P):- 
     N > 1, 
     P is N-1 
     tower(P,A,C,B,P), 
     write([move , A,B]),nl, 
     tower(P,C,B,A,P). 

     tower(0,_,_,_):- !. 

回答

4

您在P is N-1後缺少逗號。

1

此外,您的域名聲明沒有意義。語法不是用於將變量與域相關聯(符號和整數是爲您預定義的),而是用於從預定義的域中創建專門的域。看起來您的程序不需要任何域聲明。

由於時間的推移,Turbo Prolog中的域名等教程相當缺乏在線,因此您最好的選擇(如果您缺少原始文檔)可能會查看Visual Prolog tutorials之一。