Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Язык программирования Prolog задача

Ребят, помогите расшифровать что делает эта часть программы построчно

permute([ ], [ ]).
permute(L, [X|P]) :─ delete(X, L, Lt),
permute(Lt, P).

delete(X, [X|T], T).
delete(X, [H|T], [H|Tf]) :─ delete(X, T, Tf).

По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект
5лет

за терминологию извини, но по идее так:

delete(X, [X|T], T).
удаляет из списка элемент X, если он стоит первым
первый аргумент - элемент, который надо удалить
второй аргумент - обрабатываемый список
третий аргумент - результат

delete(X, [H|T], [H|Tf]) :─ delete(X, T, Tf).
удаляет из списка элемент X, и уже не важно, где он там стоит
первый аргумент - элемент, который надо удалить
второй аргумент - обрабатываемый список
третий аргумент - результат

permute([ ], [ ]).
пустые списки совпадают

permute(L, [X|P]) :─ delete(X, L, Lt), permute(Lt, P).
проверяет, что содержимое двух списков совпадает (порядок перечисления элементов не важен), рекурсивно выкидывая из первого списка элементы, перечисленные во втором списке.

Аватар пользователя
Ученик
5лет

Друг, я конечно извиняюсь, но зачем вообще учить этот язык, если есть C++ C# Jave, ну и питон конечно же)