【发布时间】:2017-06-13 01:01:37
【问题描述】:
谓词change_pos(E1, E2,Lin,Lout).
Lin 有任意数量的元素,我需要将所有出现的E1 更改为E2,反之亦然。并返回Lout。
我正在考虑做这样的事情:
change(X, Y, [], []).
change(X, Y, [X|L], [Y,L1]):- change(X,Y,L,L1).
change(X, Y, [Z|L], [Z,L1]:- X \== Z, change(X,Y,L,L1).
但是这种方式不是刷列表的两个数字
【问题讨论】:
-
我正在考虑做这样的事情:change(X, Y, [], [])。更改(X,Y,[X|L],[Y,L1]):- 更改(X,Y,L,L1)。 change(X, Y, [Z|L], [Z,L1]:- X \== Z, change(X,Y,L,L1)。但是这种方式不是刷列表的两个数字
-
@JessicaSimoes - 尝试将
[Y,L1]更改为[Y|L1]和[Z,L1]更改为[Z|L1]。 -
你真的很亲密!在第三个子句的
:-之前,您还缺少一个)。 -
@Enigmativity 哦,我明白了。您将 OP 的评论代码复制到问题中。我通常会尝试让他们这样做。 :) 但是,鉴于该代码,我认为没有关闭的基础。
-
@false - 我已经投票决定重新开放。
标签: prolog