list - 如何将某些值映射到 Prolog 中的列表?
问题描述
所以,我有一个谓词定义为 map(Letter, Number)。例如:
map(j, 0).
map(k, 1).
etc.
我需要创建一个名为 map_list(List, X) 的函数,它使用地图谓词中的数字对创建一个 List X。例如:
map_list([j, j, k, k], X).
X = [0, 0, 1, 1].
这是我到目前为止所拥有的:
map_list([], []).
map_list([], _).
map_list([Head|Tail], Ans) :-
map(Head, N),
append(Ans, [N], NewAns),
map_list(Tail, NewAns).
它所做的只是将随机的“垃圾”附加到新列表中,并且永远不会结束。任何人都可以帮忙吗?谢谢!
解决方案
我认为你把append
电话弄得太复杂了。
就是这么简单:
map_list([], []).
map_list([H1|T1],[H2|T2]) :-
map(H1,H2),
map_list(T1,T2).
推荐阅读
- sql - ORA-00903: 从 USER 中选择时表名无效
- multithreading - Go 内存模型发生在之前(具有共享状态的通道)
- javascript - 使用多重过滤器过滤对象数组
- ios - 录入本地通知后无法在特定视图控制器中打开应用程序
- bash - 用于读取 .csv 文件以创建/移动内容的 Bash 脚本
- java - BigQuery 没有获取在 java 中设置的属性
- java - Eclipse Junit 为 getter 和 setter 正确编写测试
- reactjs - 覆盖的渲染方法上缺少道具类型的 ESLint 错误
- mongodb - mongodb如何使用数组中的元素进行嵌套查询
- android - Kotlin spinners 在片段中使用