【问题标题】:prolog: how to tell with global_cardinality that a list has at least N element that equals M (M,N are integer)prolog:如何用 global_cardinality 判断一个列表至少有 N 个等于 M 的元素(M,N 是整数)
【发布时间】:2014-03-02 21:49:18
【问题描述】:

例如:我有一些变量:A,B,C,D 和一个条件:在 [A,B,C,D] 列表中必须有 至少 是数字 2 的两倍. 我只能使用global_cardinality/2 组合约束。

【问题讨论】:

    标签: prolog constraint-programming clpfd sicstus-prolog


    【解决方案1】:

    好吧,这是一个相当愚蠢的问题。解决方案例如: global_cardinality(VarList, [1-_,2-M]), M >= 2。 所以我们对 VarList 有多少个 1 没有任何限制,但是我们给出了 2 的个数,即 M,让 M 大于 2。

    【讨论】:

    • 很好,除了 ">=" 不是约束,而是 Prolog 测试。用“#>=”替换它,一切都应该没问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2016-01-25
    相关资源
    最近更新 更多