Как удалить дубликаты в Prolog

Пролог - это декларативный язык программирования, широко используемый в исследованиях в области искусственного интеллекта и лингвистики. В отличие от более распространенных процедурных языков, большинство программ Prolog определяется как серия правил и уравнений, а не как последовательность шагов. Следующий код описывает процесс удаления дубликатов из списка на Прологе.

Шаг 2

Введите код между косыми чертами (не считая самих косых черт):

/% remove_dups (+ List, -NewList):% New List привязан к List, но с удалением повторяющихся элементов. 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 определяется как серия из трех правил. Первое правило («remove_dups ([], [].)») Указывает, что если список пуст, ничего делать не следует; функция должна просто вернуться. Второе правило указывает, что если первый элемент в списке появляется где-нибудь еще в списке, то он должен быть удален (поскольку это duplicate), и обработка должна продолжаться с использованием остальной части списка путем повторного вызова функции remove_dups с первым элементом в списке. остановился. Последнее правило указывает, что если первый член списка отсутствует где-либо еще в списке, его следует сохранить и обработку следует продолжить.

Techwalla может получить компенсацию через партнерские ссылки в этой истории.