Undeclared predicate, misspelling or not supported on chosen platform length - Prolog
Формулировка задачи:
Здравствуйте! Помогите, пожалуйста, исправить ошибку.
Задача: заменить K элементов с конца на заданную константу.
Листинг программы
- domains
- i = integer
- list = i*
- predicates
- nondeterm lenghtl (list, i)
- nondeterm replace(list, list, i, i)
- nondeterm repl(list, list, i, i, i)
- clauses
- lenghtl([],_):- !.
- lenghtl([H|T], X):- X1=X+1, lenghtl( T, X1). %подсчет длины списка
- %Находим длину списка X, считаем, с какой позиции нужно будет заменять члены списка Х1=Х-К
- %repl проходится по всему списку и заменяет все символы, начиная с Х1, на Const
- replace([H|T], [H|T1], Const, K):- lengthl ([H|T], X), Pos = 1, X1=X-K, repl([H|T], [H|T1], Const, X1, Pos),!.
- %Начинаем идти по списку. Если рассматриваемый элемент стоит раньше Х1 или на его месте,
- %то записываем его неизменным во второй список
- repl([H|T], [H|T1], Const, X, Pos):- Pos <= X, %Pos - позиция в списке.
- Pos1 = Pos + 1,
- repl(T, T1, Const, X, Pos1), !.
- %замена всех следующих элементов списка
- repl([H|T], [Const|T1], Const, X, Pos):- repl(T, T1, Const, X, Pos).
- %если начальный список пройден до конца, заканчиваем рекурсию
- repl([], _, _, _, _):- !.
- goal replace([1, 2, 3, 4, 5], L, 0, 3).
Решение задачи: «Undeclared predicate, misspelling or not supported on chosen platform length»
textual
Листинг программы
- repl([], [], _, _, _).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д