Prolog:如何计算BST搜索中的支票数量

时间:2013-12-14 18:46:03

标签: list count prolog

我想编写一个程序来搜索给定范围内的某些值,然后返回这些值的列表以及构建此列表所需的检查数。现在,我确实创建了列表,但我无法弄清楚如何计算支票......有人可以帮助我吗?

这是我的代码:

find(A,B, Value, N) :-
    toTree(P),
    bagof(Value,bst(P, A, B, Value,N), Value).

bst(t(V, Left, Right), K1, K2, Value,N) :-
    V >= K1,
    bst(Left, K1, K2, Value,NN),
    N is NN+1.
bst(t(V, Left, Right), K1, K2, Value, N) :-
    V =< K2,
    bst(Right, K1, K2, Value, NN),
    N is NN+1.
bst(t(V, _, _), K1, K2, Y, 1) :-
     between(K1, K2, V).

到目前为止,它返回了类似

的内容
X = [26],
N = 3 ;
X = [26, 27],
N = 4 ;
X = [24],
N = 5 ;

虽然我想要这样的东西:

X=[26,26,27,24]
N=5

编辑:问题解决了,我想出了如何以这种方式访问​​bst以便轻松构建列表:)

0 个答案:

没有答案