gpt4 book ai didi

compiler-errors - Prolog:编译失败

转载 作者:行者123 更新时间:2023-12-02 10:42:35 24 4
gpt4 key购买 nike

我是 prolog 的新手,所以如果修复起来很简单,请原谅。
“成员”之前的第一部分代码工作没有任何编译错误。
之后我不知道指令是否正确编写。当我尝试添加指令“谁可以在一起”时,我有编译错误。

solve(Solve):-
Solve = [room(X, Y, Z, W)],
man(X), man(Y), man(Z), man(W), unique([X, Y, Z, W]).

unique([]):-!.
unique([Head|Tail]):-
member(Head, Tail), !, fail;
unique(Tail).

man(andrey).
man(boris).
man(kostya).
man(vasya).
man(dima).
man(yura).
man(fedya).
man(grisha).


member(room(andrey, _, _, _), Solve),
member(room(vasya, _, _, _), Solve),
member(room(boris, kostya, _, _), Solve),
member(room(dima, yura, _, _), Solve),
member(room(fedya, dima, grisha, _), Solve),
member(room(fedya, dima, kostya, _), Solve),
member(room(yura, boris, _, _), Solve),
member(room(yura, fedya, _, _), Solve),
member(room(yura, grisha, kostya, _), Solve),
not(member(room(kostya, vasya, _, _), Solve)),
not(member(room(grisha, boris, kostya, _), Solve)),
not(member(room(grisha, andrey, _, _), Solve)),
not(member(room(grisha, vasya, _, _), Solve)),
not(member(room(yura, andrey, _, _), Solve)),
not(member(room(yura, vasya, _, _), Solve)).

但是,当我尝试编译它时,出现错误:
  • prog.pl:22-37: fatal error :重新定义控制结构 (',')/2
  • 最佳答案

    第一个问题是您已经定义了以逗号结尾的事实,如上面已经提到的@Repeat。

    其次,这个程序是不正确的,你用一个用名称实例化的数组调用唯一谓词。例如,它可能看起来像 unique([andrey,andrey,andrey,andrey]),接下来发生的是调用 member 的 unique与 (Head = andrey)这将失败,因为它找不到 member(andrey)但它可以找到member(room(,,,,))所以在这里你错过了room .如果你想要所有 membernot(member(,,,))事实必须成功,然后您需要创建一个新规则并将所有这些 facts在那个规则中。

    关于compiler-errors - Prolog:编译失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47006411/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com