Напишите логическую программу преобразования списка в список - Prolog

Узнай цену своей работы

Формулировка задачи:

Помогите разобраться, задача звучит так: напишите логическую программу преобразования списка в список, состоящий из тех же элементов, но записанных в обратном порядке. Вот решение, которое я нашла, не могу понять, что означает эта строчка: "append([],L,L)." и что такое "L"?
Листинг программы
  1. domains
  2. list=integer*
  3. predicates
  4. reverse(list,list)
  5. append(list,list,list)
  6. clauses
  7. reverse(L1,L2):-append(L1,[],L2).
  8. append([],L,L).
  9. append([H|T],L1,L2):-append(T,[H|L1],L2).

Решение задачи: «Напишите логическую программу преобразования списка в список»

textual
Листинг программы
  1. domains
  2. list=integer*
  3.  
  4. predicates
  5. reverse(list,list)
  6. append(list,list,list)
  7.  
  8. clauses
  9.  
  10. append([],X,X).  %% пустой список сцепленный с произвольным X дает X
  11. append([H|T],X,[H|Y]) :- append(T,X,Y). %% список из головы H и хвоста T, сцепленный с X есть список с головой H и
  12.                                         %% хвостом, равным T сцепленному c X
  13.  
  14. reverse([],[]). %% реверс пустого есть пустой
  15. reverse([H|T],Z) :- reverse(T,Q), append(Q,[H],Z). %% реверс списка с головой H и хвостом T есть реверс хвоста,
  16.                                                    %% сцепленный со списком [H]

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.625 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы