list - 列表替换中的 Prolog 元素

标签 list replace prolog

嗨,我想知道你能不能帮我解决这个问题

从 Prolog 编程:编写 Prolog 脚本,用另一个给定元素替换列表中的任何给定元素。例如:

replace( 3, a,[1,2,3,4,3,5], [1,2,a,4,a,5])=true

提前谢谢了

最佳答案

在 Prolog 中,大多数列表处理是通过处理头部然后递归处理列表的其余部分来完成的。当然,您不能忘记基本情况,它是一个空列表。

用空列表中的任何内容替换任何内容再次导致空列表。如果链表的头部与要替换的元素相同,则替换它,否则,保持原样。在这两种情况下,递归处理列表的其余部分。从英文翻译成Prolog:

replace(_, _, [], []).
replace(O, R, [O|T], [R|T2]) :- replace(O, R, T, T2).
replace(O, R, [H|T], [H|T2]) :- H \= O, replace(O, R, T, T2).

关于list - 列表替换中的 Prolog 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5850937/

相关文章:

python - 反转 DataFrame 中的单个列

list - Prolog 成员实现

replace - Lisp:多级搜索和替换

javascript - 两个索引之间的多个顺序字符串替换

css - 除了在 Firefox 中,左浮动的 li 元素不会拉伸(stretch)全宽

string - Clojure:如何将 clojure 代码转换为可计算的字符串?它大部分有效,但列表被转换为原始括号,这失败了

javascript - 低效/丑陋的替换功能

list - 如何对序言中的年龄列表进行排序?

prolog - 卡住/2个目标阻止已变得无法访问的变量

prolog - SWI 序言中的等效谓词是什么?