Сумма двух списков - Prolog

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

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

Листинг программы
  1. %sum_str(L1,L2,Res).
  2. sum_str([],_,_):-write('Error'),!.
  3. sum_str([X],[Y],[R]):-R is X+Y,!.
  4. sum_str([X|L],[Y|L1],[H|T]):-H is X+Y,sum_str(L,L1,T).
Программа работает,но я хочу чтобы когда была разная длина у двух списков выводилось сообщение ERROR. А оно еще дополнительно выводит:
Листинг программы
  1. Error
  2. Res = [2, 4|_G5320].
Как убрать этот Res? Пример вызова: ?- sum_str([1,2],[1,2,3,4],Res).

Решение задачи: «Сумма двух списков»

textual
Листинг программы
  1. domains
  2. intl=integer*
  3.  
  4. predicates
  5. sum_str(intl,intl,intl)
  6.  
  7. clauses
  8. sum_str([],_,_):-write("Error"),nl,fail.
  9. sum_str(_,[],_):-write("Error"),nl,fail.
  10. sum_str([X],[Y],[R]) :- R = X+Y,!.
  11. sum_str([X|L],[Y|L1],[H|T]) :- H = X+Y,sum_str(L,L1,T).

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

  1. domains - определение типа данных, используемых в программе. В данном случае, это целочисленный тип (integer*).
  2. predicates - определение пользовательскихpredicates. В данном случае, определен predicate sum_str, который принимает три аргумента типа intl.
  3. clauses - определение правил (условий) для работы с predicates. В данном случае, определено три правила для работы с predicate sum_str.
  4. Правило sum_str([],_,_):-write(Error),nl,fail. говорит о том, что если первый аргумент пуст, то программа выведет сообщение об ошибке и завершит работу.
  5. Правило sum_str(_,[],_):-write(Error),nl,fail. говорит о том, что если второй аргумент пуст, то программа выведет сообщение об ошибке и завершит работу.
  6. Правило sum_str([X|L],[Y|L1],[H|T]) :- H = X+Y,sum_str(L,L1,T). говорит о том, что если в первом аргументе есть элементы, то программа вычисляет сумму соответствующих элементов второго аргумента и передает остальные элементы в следующую рекурсивную итерацию.
  7. Правило sum_str([X|L],[Y|L1],[H|T]) :- H = X+Y,!. говорит о том, что если в первом аргументе есть элементы, то программа вычисляет сумму соответствующих элементов второго аргумента и завершает работу.

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


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

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

12   голосов , оценка 3.833 из 5

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

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

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