0

我需要做以下事情:我有活动

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

这是我的程序,但不工作:

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

在此先感谢,对不起我的英语不好。

4

1 回答 1

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).
于 2013-03-21T18:12:27.543 回答