2013-03-21 113 views
0

我需要做到以下幾點:我有事件
錯字母列表 - 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 

大公是我的計劃但不工作:

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

在此先感謝,對不起,我的英語不好。

回答

1

如果你只對你有可能你輸入的單詞一個錯誤的字母(增加的盤符):

  • 取一個字
  • 分成兩個子列表(頭和尾),使用append/3
  • 測試以查看您的輸入詞是否與頭部,附加信件和尾部相一致;使用select/3

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

    您也可以達到同樣的效果:再次使用append/3

看起來這:

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

測試

wrong_letter(WrongWord, Letter):- 
    word(Word), 
    select(Letter, WrongWord, Word).