【问题标题】:how to solve the error in this prolog code如何解决此序言代码中的错误
【发布时间】:2019-01-25 08:00:34
【问题描述】:

这段代码有什么问题

frequency(f1).
frequency(f2).
frequency(f3).

allocation(z1,z2,z3,z4,z5,z6,z7,z8) :-
    frequency(z1), frequency(z2), frequency(z3), frequency(z4), frequency(z5), frequency(z6), frequency(z7), frequency(z8),
    z1\==z2, z1\==z3, z2\==z4, z2\==z3, z3\==z4, z3\==z6, z4\==z5, z4\==z6, z4\==z7, z6\==z7, z6\==z8.

?- allocation(f1,f2,f3,f1,f2,f3,f2,f3).

语法错误:。或表达式后预期的运算符

【问题讨论】:

  • 您的代码中没有语法错误... 此外,allocation/8 中的术语z1z2、...、z8 应大写Z
  • Prolog 中的变量必须以大写字母开头(如果需要匿名变量,则为 _)。
  • @lurker: only _ 是一个匿名变量。说,_1 不是。示例:p(_1,_1)
  • @false 感谢您的澄清。

标签: prolog


【解决方案1】:

下面的代码高亮应该清楚为什么目标allocation(f1,f2,<b>f3</b>,f1,f2,<b>f3</b>,f2,<b>f3</b>)不能成功:

分配(Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8) :- 差异(Z1,Z2),差异(Z1,Z3), 差异(Z2,Z3),差异(Z2,Z4), 差异(Z3,Z4),差异(Z3,Z6), 差异(Z4,Z5),差异(Z4,Z6),差异(Z4,Z7), 差异(Z6,Z7),差异(Z6,Z8), 地图列表(频率,[Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8])。

注意上面代码中使用dif/2而不是(\==)/2

保留 更方便

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 2019-10-05
    相关资源
    最近更新 更多