4
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

2 に答える 2

4

の後にカンマがありませんP is N-1

于 2011-04-22T09:27:26.643 に答える
1

また、ドメイン宣言は意味がありません。構文は、変数をドメインに関連付けるためのものではなく(シンボルと整数が事前定義されています)、事前定義されたドメインから特殊なドメインを作成するためのものです。プログラムにドメイン宣言が必要なようには見えません。

Turbo Prologのドメインなどのチュートリアルは、時間の経過によりオンラインではかなり不足しているため、(元のドキュメントがない場合)最善の策はVisualPrologチュートリアルの1つを参照することです。

于 2011-04-22T15:59:44.963 に答える