我正在尝试在 Prolog 中制作类似于列表字典的东西。我想将一个数字列表从德语转换为英语。
输入:
trnslt([eins,drei,neun],X).
输出:
X = [one,three,nine]
我想到了一个创建 if 语句的想法,但后来我认为这行不通。
如果有人向我提供完全理解该概念的想法和代码,我将不胜感激。
编辑: 我已经阅读了 this question 上的答案并得到了子句,但实际上实际上并没有理解任何东西,所以有人可以告诉我它是如何工作的吗?
答案 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]