【问题标题】:prolog replacing elements in list序言替换列表中的元素
【发布时间】:2019-11-24 02:00:29
【问题描述】:

我需要帮助来了解如何使用 [a(b,c),a(x,d)] 之类的列表 change(S,K,R) 用第二个列表 [c(a,x),c(b,y)] 中给出的值更改第一个列表 [a,c,b]

?- change([a,c,b],[k(a,x),k(b,y)],R).
R = [x,c,y].

% 我的程序,但它适用于第二个列表,它的列表元素类型错误 k(a,x) 但像 [a,x] 并且工作得有点差,因为如果返回 True 而不是 R= x,c,y我打印 R 值为 [y,c,x|_2826] 我用 ?-change([a,c,b],[a,x,b,y],R) 调用我的代码。

change([],[],[]):-!.
change([],[],R):-write(R),!.
change([H1|T1],[],[H1|R]):-change(T1,[],R),!.
change([H1|T1],[H2,H3|T2],R) :-
   (  ( H1==H2 , change(T1,T2,[H3|R]) )
      ; ( H1\==H2, change(T1,[H2,H3|T2],[H1|R]) )
   ).

【问题讨论】:

    标签: prolog


    【解决方案1】:

    看来您应该使用关联列表

    SWI-Prolog manual

    and the online doc

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多