-1

ゴール:

指定された文字で始まらないリスト内のすべての単語を除外します。指定された文字で始まる単語は、最初の文字なしで新しいリストに格納する必要があります。

問題:

リスト内のすべての単語が許可されている場合は、意図したとおりに機能します。リスト内の単語が許可されていない場合、チェックは(予想どおりに)失敗しますが、バックトラックして次の単語をやり直そうとする場合のように、リスト内の次の単語を続行しようとせずに(予期しない)述語を終了します。

filter_word([Char|Rest], Char, Rest).

filter([], _, []).
filter([Word|Words], Char, [H|T]) :-
    filter_word(Word, Char, H),
    filter(Words, Char, T).

これは宿題です。

4

1 に答える 1

0

バックトラックして次の単語をやり直そうとする場合と同様に、リスト内の次の単語に進もうとせずに述語を終了します (予想外)。

filterこれは、単語がフィルターに一致しない場合を処理する句が にないためです。この問題には 3 つのケースがあります。

  1. 空のリスト。
  2. リストの空でない最初の要素がフィルターに一致します。
  3. リストの空でない最初の要素がフィルターに一致しません。

したがって、3 つの節を作成する必要があります。

于 2012-09-05T20:23:25.740 に答える