


Язык программирования 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).
за терминологию извини, но по идее так:
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).
проверяет, что содержимое двух списков совпадает (порядок перечисления элементов не важен), рекурсивно выкидывая из первого списка элементы, перечисленные во втором списке.
Друг, я конечно извиняюсь, но зачем вообще учить этот язык, если есть C++ C# Jave, ну и питон конечно же)