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

入力単語に間違った文字 (追加された文字) が 1 つしかない場合は、次のことができます。

  • 一言
  • を使用して、2 つのサブリスト (Head と Tail) に分割します。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 に答える