列表中的错误字母 - Prolog

时间:2013-03-21 17:47:28

标签: prolog

我需要做以下事情:我有事件

word([p,r,o,l,o,g]).
word([p,r,o,l,o,g]).

我需要找到错误的字母:

e.x wrong_letter([p,r,o,l,o,u,g],X).<br>
X=u

thay是我的程序但是没有工作:

wrong_letter([X|Y],L) :- 
word(H),
member(X,H),
wrong_letter(Y,L). 

提前感谢,抱歉我的英语不好。

1 个答案:

答案 0 :(得分:1)

如果您输入的单词中只有一个错误的字母(添加的字母),您可以:

  • 一句话
  • 使用append/3
  • 分为两个子列表(头部和尾部)
  • 测试你的输入词是否与头部,附加字母和尾部统一;再次使用append/3

那看起来:

wrong_letter(WrongWord, Letter):-
  word(Word),
  append(Head, Tail, Word),
  append(Head, [Letter|Tail], WrongWord).

测试:

?- wrong_letter([p,r,o,l,o,u,g], X).
X = u ;

使用select/3

也可以达到同样的效果
wrong_letter(WrongWord, Letter):-
  word(Word),
  select(Letter, WrongWord, Word).