翻译Prolog词

时间:2010-01-28 02:54:02

标签: prolog

我正在研究这个精彩的Prolog项目,我陷入这种情况,我需要将某些单词翻译成其他单词(例如“我”变成“你”。“我变成你的”)

这就是我所做的,我很确定它有点不确定。我输入句子,当它转换它只改变一个单词然后继续古怪我。 (例如“我感到高兴”改为“你”,然后崩溃。)

translate([]).
translate([H|T], [NewH|NewT]):-
             means(H,NewH);
             spit(T,NewT).
means(i,you).
means(my,your).
means(mine,yours).

1 个答案:

答案 0 :(得分:2)

以下是修复:

translate([], []).
translate([H|T], [NewH|NewT]):-
             means(H, NewH),
             translate(T,NewT).
means(i, you) :- !.
means(my, your) :- !.
means(mine, yours) :- !.
means(X, X).

更改如下:

  1. 我将缺少的参数修复为translate的第一个定义(如果参数的数量不匹配,则认为它是一个完全独立的函数)。
  2. 翻译第一个项目时,我在列表的其余部分调用translate
  3. 我断言除非另有说明,否则每个字都意味着自己。 :- !部分表示如果您匹配此部分,请不要尝试其余部分(这是为了避免列表始终与自己匹配)。
  4. 使用示例:

    ?- translate([this, is, i], X).
    X = [this, is, you].