Prolog で重複を削除する方法
Prolog は、人工知能や言語学の研究で一般的に使用される宣言型プログラミング言語です。より一般的な手続き型言語とは異なり、ほとんどの Prolog プログラムは、一連のステップとしてではなく、一連の規則と方程式として定義されています。次のコードは、Prolog のリストから重複を削除するプロセスを示しています。
ステップ 1
メモ帳などのテキスト エディタを開き、「remove_dups.pl」という名前でファイルを保存します。
ステップ 2
スラッシュの間にコードを入力します (スラッシュ自体は省略します):
/ % remove_dups(+List, -NewList):% 新しいリストはリストにバインドされていますが、重複する項目は削除されています。 remove_dups([], []).
remove_dups([First | Rest], NewRest) :- member(First, Rest), remove_dups(Rest, NewRest).
remove_dups([First | Rest], [First | NewRest]) :- not(member(First, Rest)), remove_dups(Rest, NewRest). /
「remove_dups」機能は、一連の 3 つのルールとして定義されています。最初のルール ("remove_dups([],[].)") は、リストが空の場合は何もしないことを指定します。関数は単純に戻る必要があります。 2 番目のルールは、リストの最初の項目がリストの他の場所にある場合は (重複しているため) 削除し、最初の項目で remove_dups 関数を再度呼び出して、リストの残りの部分を使用して処理を続行することを指定します。左のリストに。最後の規則は、リストの最初のメンバーがリストの他の場所に存在しない場合、それを保持して処理を続行する必要があることを指定します。
ステップ 3
「Ctrl」と「S」を同時に押して作業を保存します。
ヒント
C や Java などの言語は通常、反復ループを使用して問題を解決しますが、Prolog のような宣言型および関数型言語は通常、問題を再帰的に解決するか、合計データのより小さなセットに対して同じ関数を繰り返し呼び出すことによって解決します。問題によっては、再帰を使用するとはるかに簡単に解決できますが、反復ループのみを使用して問題を解決することに慣れているプログラマーにとっては習得が難しい場合があります。