我正在使用古老的涡轮序言。并且在以下代码中不断面临错误:-拼写错误或未声明谓词

发布于 2024-11-02 20:27:50 字数 464 浏览 2 评论 0 原文

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,_,_,_):- !.
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,_,_,_):- !.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

愿得七秒忆 2024-11-09 20:27:50

P is N-1 后面缺少一个逗号。

You're missing a comma after P is N-1.

離人涙 2024-11-09 20:27:50

此外,您的域名声明没有意义。该语法不是用于将变量与域关联起来(符号和整数是为您预定义的),而是用于从预定义的域创建专用域。您的程序似乎不需要任何域声明。

由于时间的推移,Turbo Prolog 中的域等教程在网上相当稀缺,因此您最好的选择(如果您缺乏原始文档)可能是查看 Visual Prolog 教程

Also, your domain declarations don't make sense. The syntax is not for associating variables with domains (symbol and integer are predefined for you), but rather for creating specialized domains from the predefined ones. It doesn't appear that your program needs any domain declarations.

Tutorials for domains, etc. in Turbo Prolog are rather scarce online, due to the passage of time, so your best bet (if you lack original documentation) may be to look at one of Visual Prolog tutorials.

小清晰的声音 2024-11-09 20:27:50

尝试将 is 替换为 = [例如:P = N-1]

Try replacing is with = [Like: P = N-1]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文