Напишите предикат p( +L, +N, ?R), который удаляет N элементов с конца списка L - Prolog

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

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

Здравствуйте! Помогите решить задачу, буду благодарен. Напишите предикат p( +L, +N, ?R), который удаляет N элементов с конца списка L.

Решение задачи: «Напишите предикат p( +L, +N, ?R), который удаляет N элементов с конца списка L»

textual
Листинг программы
?- Zs = [1,2,3,4,5], N = 2, length(Ys, N), append(Xs, Ys, Zs).
Zs = [1, 2, 3, 4, 5],
N = 2,
Ys = [4, 5],
Xs = [1, 2, 3] ;
false.

Объяснение кода листинга программы

В данном коде на языке Prolog происходит следующее:

  1. Создается список Zs, содержащий пять элементов: 1, 2, 3, 4, 5.
  2. Задается значение переменной N равное двум.
  3. Выполняется операция length(Ys, N), где Ys - это список, который будет содержать два последних элемента из списка Zs.
  4. Выполняется операция append(Xs, Ys, Zs), где Xs - это список, который будет содержать первые три элемента из списка Zs, Ys - это список, содержащий два последних элемента из списка Zs, и Zs - это исходный список, который после выполнения операции будет содержать все пять элементов.
  5. В результате выполнения кода получается список Zs, содержащий все пять элементов: 1, 2, 3, 4, 5.
  6. Дополнительно выводится сообщение false, которое означает, что больше нет решений для данной задачи.

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


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

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

5   голосов , оценка 4.2 из 5
Похожие ответы