Ошибка формирования списка - Prolog

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

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

Здравствуйте! Необходимо сформировать список и чисел.
Получается: ?- p(3, X). X = [111, 111, 111|_G2852] А хотелось бы : X = [111, 111, 111] Подскажите в чем проблема, не могу разобраться!

Решение задачи: «Ошибка формирования списка»

textual
Листинг программы
%                       ASCII код
%   1       5       10      50      100     500     1000
%   I       V       X       L       C       D       M   
%   73      86      88      76      67      68      77
add([], E, [E]).
add([H|T], E, [E,H|T]).
 
p(X, []) :- X<=0, !.
 
p(X, Y) :- X<4, X1 is X-1, p(X1, Y1), add(Y1, 73, Y).
p(X, Y) :- X=4, add([86], 73, Y), !.
p(X, Y) :- X=5, add(Y, 86, []), !.
p(X, Y) :- X<9, X1 is X-5, p(X1, Y1), add(Y1, 86, Y).
p(X, Y) :- X=9, add([88], 73, Y), !.
 
p(X, Y) :- X<40, X1 is X-10, p(X1, Y1), add(Y1, 88, Y).
p(X, Y) :- X<50, X1 is X-40, p(X1, Y1), add(Y1, 76, Y2), add(Y2, 88, Y).
p(X, Y) :- X<90, X1 is X-50, p(X1, Y1), add(Y1, 76, Y).
 
p(X, Y) :- X<100, X1 is X-90, p(X1, Y1), add(Y1, 67, Y2), add(Y2, 88, Y).
p(X, Y) :- X<400, X1 is X-100, p(X1, Y1), add(Y1, 67, Y).
p(X, Y) :- X<500, X1 is X-400, p(X1, Y1), add(Y1, 68, Y2), add(Y2, 67, Y).
p(X, Y) :- X<900, X1 is X-500, p(X1, Y1), add(Y1, 68, Y).
 
p(X, Y) :- X<1000, X1 is X-900, p(X1, Y1), add(Y1, 77, Y2), add(Y2, 67, Y).
p(X, Y) :- X<4000, X1 is X-1000, p(X1, Y1), add(Y1, 77, Y).
 
f(X, Y) :- p(X, Z), name(Y, Z).

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

В этом коде используется язык программирования Prolog. Сначала определена функция add, которая добавляет элемент в список. Затем определена функция p, которая генерирует список в соответствии с заданными правилами. Она проверяет, является ли текущий элемент (X) меньше или равным определенному числу (4000) и, если это так, добавляет его в список (Y). В конце определена функция f, которая использует функцию p для создания списка и функцию name для добавления имен к элементам списка. Код не содержит ошибок, он успешно сформирует список в соответствии с заданными правилами.

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


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

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

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