首页 > 解决方案 > 如何将某些值映射到 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).

它所做的只是将随机的“垃圾”附加到新列表中,并且永远不会结束。任何人都可以帮忙吗?谢谢!

标签: listdictionaryprolog

解决方案


我认为你把append电话弄得太复杂了。

就是这么简单:

map_list([], []).
map_list([H1|T1],[H2|T2]) :-
    map(H1,H2),
    map_list(T1,T2).

推荐阅读