Prolog比较2个列表

时间:2014-05-31 13:32:53

标签: list prolog compare

我是prolog和基于规则的语言的新手,所以如果我让你生气,抱歉:)。现在我想从用户那里得到2个数组(最后一个用于返回结果)。值并不重要所以我试图将规则定义为

run([_|_],[_|_],[_|_]):-...

这将没有用,因为我不知道哪个数组是哪个。下面是我的完整代码,我需要从用户那里获得2个不同或相同的列表,比较它们的值并将元素的位置保存到结果列表。我应该将所有可能的值定义为规则吗?我的意思是

run([X|Y],[X|Y], L3), run([X|X],(Z|T), L3)... and so on.

源码

add(X, L, [X|L]).
filledlist([(X, Y)|T]).

find(L, X).
find([], N) :- fail.
find([X|List], 1) :- nl.
find([X|List], N) :-
    N1=N-1,
    find(List, N1).

checkresult(0).
checkresult(X) :- ! , fail.

addtobox(B, O, L1, L2, L3) :-
    checkresult(find(L1, B) - find(L2, O)),
    assignit(B, O, L3).

nextElement(ACC, ACCN, L1, L2, L3) :-
    ACC1 is ACC + 1,
    addtobox(ACCN, ACC1, L1, L2, L3),
    nextElement(ACC1, ACCN, L1, L2, L3).

start(ACC, L1, L2, L3) :-
    ACC1 is ACC + 1,
    nextElement(ACC, ACC1, L1, L2, L3),
    start(ACC1, L1, L2, L3).

assignit(B, O, RES) :- add((B, O), RES, [(B, O)|RES]).

run(L1, L2, L3) :- start(1, L1, L2, L3).

0 个答案:

没有答案