failure-slice

    2热度

    1回答

    没有终止我有黑色和白色顶点的图的一些程序: black(root). black(v1). black(v3). black(v4). edge(root,root). edge(v1,root). edge(v2,v1). edge(v3,v1). edge(v4,v3). edge(v5,v2). edge(v5,v4). edge(v6,v5). vertex(X

    1热度

    1回答

    嘿,我有一个关于Prolog的相当简单的问题。 %on(Block,Object). % clear(Object). block(b1). block(b2). block(b3). place(p1). place(p2). place(p3). place(p4). state1([clear(p2),clear(p4),clear(b2),clear(b3),on(b1

    3热度

    3回答

    我从99 Prolog Problems工作问题26: P26 (**) Generate the combinations of K distinct objects chosen from the N elements of a list Example: ?- combination(3,[a,b,c,d,e,f],L). L = [a,b,c] ; L = [a,b,d] ;

    1热度

    1回答

    加载使用SWI-Prolog的下面的程序和进入这类查询作为 cells([o,x,o,x,o], A). 或 cells(A, [o,x,o,x,o]). 的第一个结果似乎永远是正确的,而后提交分号后,寻找更多的结果(并且我不知道在这两种情况下是否应该有额外的结果),我得到了PROLOG SYSTEM ERROR分别提到了垃圾收集和全局堆栈错误。 regla(o,o,o,o). regl

    1热度

    1回答

    我对prolog相当陌生,目前我正在阅读一本让我练习代码的书。它负责删除重复的内容。 注:我已阅读其他stackoverflows,并且我知道如何删除重复项,但我不明白为什么我的代码不起作用。 (我已经选择了一种不同的方法到其他计算器) 我创建了一个is_member谓词,我相信它可以正常工作。 is_member(X, [Head,Tail]):- X == Head; is

    2热度

    2回答

    我试图通过将序列列表重新转换为BST来“颠倒”序列遍历。 BST的谓词形式为node(Value,Left,Right)或leaf,所以空树只是leaf,一个节点的树是node(_,leaf,leaf)。 给定谓词enumerate_bst(Elems,Bst),目标是将Bst与排序列表Elems的所有可能性匹配。例如(注setof/3): ?- setof(Bst,enumerate_bst([

    2热度

    1回答

    给出了一组通过谓词parent/2来表示父子关系的事实,当定义关系“祖先”(祖先)与谓词pred1时有什么区别/ 2和PRED2/2如下所示? pred1(X,Z) :- parent(X,Z). pred1(X,Z) :- parent(X,Y), pred1(Y,Z). pred2(X,Z) :- parent(X,Z). pred2(X,Z) :- parent(Y,Z), pred

    2热度

    2回答

    我试图匹配一些语句(例如001 [0,0,1],(1+(1/0))['(',1,+,' ( '1/0 ')', ')'],等等。 我自己做了下面的小DCG。 g3 --> s3. s3 --> e3. e3 --> eAdd. e3 --> eMin. e3 --> eMul. e3 --> eDiv. e3 --> n3. eAdd --> ['('],e3,['+'],e3,

    2热度

    2回答

    在回答another question on StackOverflow(推广一下)时,出现了这个问题,它生成了由一组有限的元素组成的所有序列,没有重复出现。 正如鲍里斯在评论中正确指出的那样,这个问题有很多现有的解决方案。然而,我对不使用累加器的解决方案感兴趣(即,已经挑选出的元素的列表与新比较的元素进行比较),而是使用dif/2语句代替。 为了说明,在我的后续程序中,我有4个元素,经过4次递归

    1热度

    1回答

    我的目的是在Prolog中实现一个简单的例子(仅适用于我自己)的传递性。 这是我的事实: trust_direct(p1, p2). trust_direct(p1, p3). trust_direct(p2, p4). trust_direct(p2, p5). trust_direct(p5, p6). trust_direct(p6, p7). trust_direct(p7,