如何在 Prolog 中将列表转换为另一个列表

时间:2021-02-20 01:30:59

标签: list prolog

我正在尝试在 Prolog 中制作类似于列表字典的东西。我想将一个数字列表从德语转换为英语。

输入: trnslt([eins,drei,neun],X). 输出: X = [one,three,nine] 我想到了一个创建 if 语句的想法,但后来我认为这行不通。 如果有人向我提供完全理解该概念的想法和代码,我将不胜感激。

编辑: 我已经阅读了 this question 上的答案并得到了子句,但实际上实际上并没有理解任何东西,所以有人可以告诉我它是如何工作的吗?

1 个答案:

答案 0 :(得分:1)

1- 定义 facts

2- translate 谓词检查列表 German number 中的每个 [H|T],然后搜索事实编号,然后将 English number 存储在[X|List]

代码:

%Facts
number(eins, one).
number(zwei, two).
number(drei, three).
number(vier, four).
number(fünf, five).
number(sechs, six).
number(sieben, seven).
number(acht, eight).
number(neun, nine).
number(zehn, ten).

translate([],[]).
translate([H|T],[X|List]):-
    number(H,X),
    translate(T,List).

示例:

?- translate([eins,drei,neun],X).
X = [one, three, nine]

?- translate([drei],X).
X = [three]

?- translate([drei,zehn,acht,sechs],X).
X = [three, ten, eight, six]
相关问题