Напишите логическую программу преобразования списка в список - Prolog
Формулировка задачи:
Помогите разобраться, задача звучит так: напишите логическую программу преобразования списка в список, состоящий из тех же элементов, но записанных в обратном порядке.
Вот решение, которое я нашла, не могу понять, что означает эта строчка: "append([],L,L)." и что такое "L"?
Листинг программы
- domains
- list=integer*
- predicates
- reverse(list,list)
- append(list,list,list)
- clauses
- reverse(L1,L2):-append(L1,[],L2).
- append([],L,L).
- append([H|T],L1,L2):-append(T,[H|L1],L2).
Решение задачи: «Напишите логическую программу преобразования списка в список»
textual
Листинг программы
- domains
- list=integer*
- predicates
- reverse(list,list)
- append(list,list,list)
- clauses
- append([],X,X). %% пустой список сцепленный с произвольным X дает X
- append([H|T],X,[H|Y]) :- append(T,X,Y). %% список из головы H и хвоста T, сцепленный с X есть список с головой H и
- %% хвостом, равным T сцепленному c X
- reverse([],[]). %% реверс пустого есть пустой
- reverse([H|T],Z) :- reverse(T,Q), append(Q,[H],Z). %% реверс списка с головой H и хвостом T есть реверс хвоста,
- %% сцепленный со списком [H]
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д